Desarrollar una consulta de API y objetos de página de API para Power BI

Completado

En la unidad anterior, hemos visto cómo desarrollar objetos de página y consulta y cómo exponerlos como servicios web. Power BI puede conectarse a los servicios web de Business Central e importar los datos.

Siempre que sea posible, se recomienda utilizar páginas/consultas de API en lugar de servicios web OData. Las API son más rápidas que los servicios web OData para cargar datos en informes de Power BI. Además, son más flexibles porque le permiten obtener datos de campos de tablas que no están definidos en un objeto de página.

Los desarrolladores pueden definir objetos de página y objetos de consulta que sean del tipo API. De esta manera, pueden exponer los datos de las tablas de la base de datos a través de un servicio REST compatible con webhook y habilitado para OData v4. Este tipo de datos no se puede mostrar en la interfaz de usuario, pero está diseñado para crear servicios de integración fiables.

Business Central Online está disponible con un conjunto de API integradas, que puede usar para obtener datos para las entidades empresariales más habituales, como clientes, artículos, pedidos de venta y mucho más. No se requiere trabajo ni configuración adicional para usar estas API como origen de datos para los informes de Power BI. Para obtener más información acerca de estas API, consulte API de Business Central V2.0.

Business Central Online también admite API personalizadas. Los desarrolladores de aplicaciones de las soluciones de Business Central pueden crear sus propias páginas y consultas de API, y empaquetarlas en aplicaciones. Posteriormente, puede instalar las aplicaciones en su inquilino. Una vez instalado, utilice las páginas de API para sus informes de Power BI, como lo haría con las API integradas (v2.0). Para obtener más información sobre cómo crear una API mediante la exposición de páginas o consultas, consulte Desarrollo de una API personalizada.

Los informes de Power BI para Business Central Online se obtienen de una réplica de base de datos secundaria de solo lectura por motivos de rendimiento. Como consecuencia, los desarrolladores de AL deben evitar diseñar páginas de API que realicen modificaciones en la base de datos mientras las páginas abren o cargan registros. En particular, considere el código en los desencadenadores AL: OnInit, OnOpenPage, OnFindRecord, OnNextRecord, OnAfterGetRecord y OnAfterGetCurrRecord. Estas modificaciones de la base de datos, en algunos casos, pueden provocar problemas de rendimiento y evitar que el informe actualice los datos. Para obtener más información, consulte Artículos de rendimiento para desarrolladores en el contenido de desarrollo de Business Central.

En casos excepcionales, el comportamiento provoca un error cuando un usuario intenta obtener datos de la API para un informe en Power BI Desktop. Sin embargo, si las modificaciones de la base de datos son necesarias en la API personalizada, los usuarios de Power BI Desktop pueden forzar el comportamiento. Para obtener más información, consulte Creación de informes de Power BI para mostrar datos de Business Central.

Ahora recreemos la página y la consulta que desarrollamos en la unidad anterior como una página de API y una consulta de API.

Para crear una página de API basada en la tabla Cliente, siga estos pasos

  1. En Visual Studio Code, agregue un nuevo archivo .al a su proyecto y asígnele el nombre CustomersAPI.Page.al.

  2. Pegue el siguiente código en el archivo CustomersAPI.Page.al:

    page 50102 CustomersAPI
    {
        APIGroup = 'powerBI';
        APIPublisher = 'microsoftLearn';
        APIVersion = 'v1.0';
        ApplicationArea = All;
        Caption = 'customers';
        EntityName = 'customer';
        EntitySetName = 'customers';
        PageType = API;
        SourceTable = Customer;
        Editable = false;
        DataAccessIntent = ReadOnly;
    
        layout
        {
            area(content)
            {
                repeater(General)
                {
                    field(no; Rec."No.")
                    {
                        Caption = 'No.';
                    }
                    field(name; Rec.Name)
                    {
                        Caption = 'Name';
                    }
                    field(city; Rec.City)
                    {
                        Caption = 'City';
                    }
                    field(countryRegionCode; Rec."Country/Region Code")
                    {
                        Caption = 'Country/Region Code';
                    }
                }
            }
        }
    }
    

Como puede ver, la página API expone los mismos campos que el servicio web de página que creó en la unidad anterior. La diferencia reside en las propiedades del objeto Página.

Las propiedades APIVersion, APIPublisher, APIGroup, EntityName y EntitySetName afectan a su punto de conexión personalizado:

https://api.businesscentral.dynamics.com/v1.0/<user domain name>/api/<API publisher>/<API group>/<API version>/companies(<company id>)/

Para obtener más información, consulte Puntos de conexión de API de Business Central y Llamada a la API.

Para crear una consulta de API basada en la tabla Movimiento cliente, siga estos pasos:

  1. En Visual Studio Code, agregue un nuevo archivo .al a su proyecto y asígnele el nombre CustomerLedgersAPI.Query.al.

  2. Pegue el siguiente código en el archivo CustomerLedgersAPI.Query.al:

    query 50102 CustomerLedgersAPI
    {
        APIGroup = 'powerBI';
        APIPublisher = 'microsoftLearn';
        APIVersion = 'v1.0';
        EntityName = 'customerLedger';
        EntitySetName = 'customerLedgers';
        QueryType = API;
        DataAccessIntent = ReadOnly;
    
        elements
        {
            dataitem(custLedgerEntry; "Cust. Ledger Entry")
            {
                column(customerNo; "Customer No.") { }
                column(postingDate; "Posting Date") { }
                column(amountLCY; "Amount (LCY)") { }
            }
        }
    
        trigger OnBeforeOpen()
        begin
    
        end;
    }
    

Ahora ha creado un nuevo objeto de página de API y un nuevo objeto de consulta de API. Puede ajustar aún más los objetos de página y consulta de API agregando más campos o filtros. Para este ejemplo, los dejamos como están ahora.

Para páginas y consultas de API, no es necesario crear un archivo webservices.xml para que las API estén disponibles en Business Central. Solo necesita publicar la extensión en el inquilino de Business Central.

Para ello, siga los pasos que se indican a continuación:

  1. En Visual Studio Code, vaya a Paleta de comandos y seleccione la opción: AL: Publish sin depurar.

  2. Espere hasta que la extensión esté publicada. Cuando publique, su navegador se abre automáticamente y se conecta a su espacio aislado en Business Central.

  3. En Business Central, abra la página Administración de extensiones para comprobar que su extensión se haya publicado e instalado correctamente.

Ahora puede usar Power BI Desktop y ver estas nuevas API, usando el conector de Business Central para Power BI.

Como puede ver, las API personalizadas están disponibles en API avanzadas en el conector de Business Central en Power BI Desktop.