Desarrollar objetos de consulta y página para Power BI
Cuando tiene que desarrollar un informe de Power BI, es recomendable desarrollar los conjuntos de datos que requiera su informe. Puede utilizar el entorno de desarrollo para crear esos conjuntos de datos. Este proceso suele implicar la creación de una pequeña extensión que contiene las consultas o páginas requeridas para su informe. En los servicios web, una colección de servicios web para garantizar que cuando instala y publica la extensión se publican automáticamente las consultas y las páginas en la tabla de servicios web.
Cuando desarrolle páginas o consultas de API, estas estarán disponibles automáticamente tras implementar la extensión. Las consultas y páginas de API no requieren un archivo de recopilación de servicios web y no se publican en la tabla Servicios web.
En Power BI, antes de comenzar a desarrollar su extensión, se recomienda analizar primero sus requisitos en más detalle. Por ejemplo, puede que se le pida que cree un determinado informe de Power BI que requiera datos específicos y, en función de ese requisito, cree sus conjuntos de datos. La próxima vez que se le pida que cree otro informe de Power BI, empezará de nuevo y creará más conjuntos de datos.
En lugar de ese enfoque, sería mejor pensar en las tablas que necesite con frecuencia en todos o en la mayoría de informes de Power BI y que las cree como conjuntos de datos separados. De esa forma, podrá reutilizarlas siempre que lo necesite. Bien: en primer lugar, debe crear los bloques de creación de sus informes de Power BI y, posteriormente, al crear los informes, puede reutilizar estos componentes básicos. Al final, tendrá menos conjuntos de datos y no tendrá que empezar siempre de cero para cada nuevo informe de Power BI.
En el siguiente módulo de esta ruta de aprendizaje, explicaremos cómo debe plantearse el modelo de datos de un informe típico. Sobre la base de ese modelo de datos, normalmente denominado esquema de estrella o copo de nieve, puede crear consultas (o páginas) y publicarlas como servicios web.
En el siguiente procedimiento, explico cómo puede crear una nueva extensión que incluya nuevas páginas y consultas, para que estén disponibles como servicios web para Power BI.
En primer lugar, debe descargar e instalar Visual Studio Code.
Posteriormente, tras iniciar Visual Studio Code, agregue la Extensión de AL para Business Central.
Existe un ejemplo detallado de cómo hacerlo. Utilice estos vínculos para acceder a la información sobre cada asunto.
Después de instalar Visual Studio Code y habilitar la extensión del lenguaje AL, tiene que crear un nuevo proyecto, como se describe aquí.
Creación de una nueva extensión de Business Central en Visual Studio Code
Después de crear la nueva extensión en Visual Studio Code, puede editar los archivos launch.json y app.json, como se describe aquí.
Trabajar con archivos de configuración JSON
Ya está listo para agregar nuevas páginas y consultas en esta extensión.
Como ejemplo, ahora creamos una consulta basada en la tabla Movimiento cliente y una página basada en la tabla Cliente.
Para crear una página basada en la tabla Cliente, siga estos pasos.
En Visual Studio Code, agregue al proyecto un nuevo archivo .al y asígnele el nombre
Customers.Page.al.Utilizar el fragmento tpage para crear el esqueleto de la nueva página.
Cambie la propiedad SourceTable a Customer.
Ahora elimine todos los elementos que no sean el repetidor. Su código ahora debería tener este aspecto.
page 50101 Customers { PageType = List; ApplicationArea = All; UsageCategory = Lists; SourceTable = Customer; SourceTableView = where(Blocked = filter(" ")); Editable = false; InsertAllowed = false; DeleteAllowed = false; ModifyAllowed = false; layout { area(Content) { repeater(GroupName) { field(Name; NameSource) { ApplicationArea = All; } } } } }En la sección del repetidor, ya puede agregar los campos que necesite de la tabla Cliente. Como ejemplo, puede agregar los siguientes campos.
repeater(GroupName) { field(CustomerNo; Rec. "No.") { ApplicationArea = All; ToolTip = 'CustomerNo' } field(CustomerName; Rec.Name) { ApplicationArea = All; ToolTip = 'CustomerName' } field(CustomerCity; Rec.City) { ApplicationArea = All; ToolTip = 'CustomerCity' } field(CustomerCountry; Rec. "Country/Region Code") { ApplicationArea = All; ToolTip = 'CustomerCountry' } }Al poner nombres a los campos que provienen de la tabla Cliente, es recomendable asegurarse de que todos los nombres sean fáciles de entender e indiquen la información disponible en las columnas.
Opcionalmente, ahora también puede filtrar la página para que solo devuelva los registros de interés. Puede hacerlo con la propiedad SourceTableView propiedad de la página o agregando código en los desencadenadores de la página. Como ejemplo, usamos la propiedad SourceTableView para eliminar a los clientes bloqueados de la página. Para ello, implemente la siguiente propiedad.
SourceTableView = where(Blocked = filter(" "));Tiene disponible más información sobre la propiedad SourceTableView aquí: Propiedad SourceTableView.
A continuación, use la propiedad Editable para hacer que la página sea de solo lectura:
Editable = false;.Por último, establezca las siguientes propiedades para asegurarse de que la página solo pueda leer datos de la tabla Cliente.
Editable = falso;
InsertAllowed = false;
DeleteAllowed = false;
ModifyAllowed = false;
El código completo de la página debería tener un aspecto similar al del siguiente ejemplo.
page 50101 Customers { PageType = List; ApplicationArea = All; UsageCategory = Lists; SourceTable = Customer; SourceTableView = where(Blocked=filter(" ")); Editable = false; InsertAllowed = false; DeleteAllowed = false; ModifyAllowed = false; layout { area(Content) { repeater(GroupName) { field(CustomerNo; Rec. "No.") { ApplicationArea = All; ToolTip = 'CustomerNo'; } field(CustomerName; Rec.Name) { ApplicationArea = All; ToolTip = 'CustomerName'; } field(CustomerCity; Rec.City) { ApplicationArea = All; ToolTip = 'CustomerCity'; } field(CustomerCountry; Rec."Country/Region Code") { ApplicationArea = All; ToolTip = 'CustomerCountry'; } } } } }Guarde el objeto .al con Ctrl+S.
Para crear una consulta basada en la tabla Movimiento cliente, siga estos pasos:
En Visual Studio Code, agregue al proyecto un nuevo archivo
.aly asígnele el nombreCustomerLedgers.Query.al.Utilizar el fragmento tquery para crear el esqueleto de la nueva consulta:
Cambie el elemento de datos para que use la tabla Movimiento cliente y establezca la propiedad DataAccessIntent de la consulta en ReadOnly.
QueryType = Normal;DataAccessIntent = ReadOnly;Agregue columnas a la consulta. Hágalo para todos los campos que quiera que la consulta devuelva como columnas:
column(CustomerNo; "Customer No.") { } column(PostingDate; "Posting Date") { } column(Amount; "Amount (LCY)") { }Elimine todo lo que no sea el fragmento tquery agregado a su objeto.
Su consulta ahora debería tener este aspecto:
query 50101 CustomerLedgers { QueryType = Normal; DataAccessIntent = ReadOnly; elements { dataitem(CustomerLedgers; "Cust. Ledger Entry") { column(CustomerNo; "Customer No.") { } column(PostingDate; "Posting Date") { } column(Amount; "Amount (LCY)") { } } } }Ahora puede aplicar filtros a la consulta para eliminar cualquier fila de la tabla que no sea necesaria en el conjunto de datos. Para ello, use la propiedad DataItemTableFilter del elemento de datos, o agregue columnas de filtro o use el desencadenador de consulta OnBeforeOpen.
Tiene más información sobre el filtrado de objetos de consulta disponible aquí: Filtros de consulta
Ahora ha creado un nuevo objeto de página y un nuevo objeto de consulta. Puede ajustar aún más la página y consultar objetos agregando más campos o filtros. Para este ejemplo, los dejamos como están ahora.
El siguiente paso es asegurarse de que la página y los objetos de consulta se publiquen automáticamente como servicios web, de manera que Power BI pueda conectar e importar los datos. Para ello, necesita agregar una colección de servicios web a la extensión. La colección de servicios web necesita entonces una entrada de servicio web para cada objeto que desee publicar como servicio web.
Para crear la colección de servicios web, siga estos pasos:
En Visual Studio Code, agregue al proyecto un nuevo archivo .al y asígnele el nombre
webservices.xml.Utilizar el fragmento twebservices para crear el esqueleto de la colección de servicios web.
El archivo webservices.xml tiene ahora el siguiente aspecto:
<?xml version="1.0" encoding="UTF-8"?> <ExportedData> <TenantWebServiceCollection> <TenantWebService> <ObjectType>Page</ObjectType> <ServiceName>serviceName</ServiceName> <ObjectID>objectId</ObjectID> <Published>false</Published> </TenantWebService> </TenantWebServiceCollection> </ExportedData>A continuación, cambiamos esta colección de servicios web para que incluya nuestra nueva página y el objeto de consulta. Use este código como ejemplo:
<?xml version="1.0" encoding="UTF-8"?> <ExportedData> <TenantWebServiceCollection> <TenantWebService> <ObjectType>Page</ObjectType> <ServiceName>CustomerPage_PowerBI</ServiceName> <ObjectID>50101</ObjectID> <Published>true</Published> </TenantWebService> <TenantWebService> <ObjectType>Query</ObjectType> <ServiceName>CustomerLedgersQuery_PowerBI</ServiceName> <ObjectID>50101</ObjectID> <Published>true</Published> </TenantWebService> </TenantWebServiceCollection> </ExportedData>Para cada página o consulta que necesite publicar como un servicio web en Business Central, debe crear una nueva entrada en este archivo xml.
Ahora está listo para publicar e instalar esta extensión en su espacio aislado de Business Central. Para ello, siga los pasos que se indican a continuación:
En Visual Studio Code, vaya a Paleta de comandos y seleccione la opción: AL: Publish sin depurar.
Espere hasta que la extensión esté publicada. Cuando lo esté, su navegador se abre automáticamente y se conecta a su espacio aislado en Business Central.
En Business Central, abra la página Administración de extensiones para comprobar que su extensión se haya publicado e instalado correctamente.
Ahora abra la página de servicios web y filtre por _PowerBI.
Su nueva página y consulta se publican como servicios web.
Como se explicó en la unidad anterior de este módulo, Usar Business Central como origen de datos en Power BI, ahora puede usar Power BI Desktop y ver estos nuevos servicios web y API con el Conector de Business Central para Power BI.