Sviluppo di oggetti pagina API e query API per Power BI

Completato

L'unità precedente ha illustrato come sviluppare oggetti pagina e query e come esporre gli oggetti pagina e query come servizi Web. Power BI può quindi connettersi ai servizi Web di Business Central e importare i dati.

Si consiglia di usare, quando possibile, pagine o query API anziché i servizi Web OData. Le API consentono di caricare dati nei report Power BI più velocemente rispetto ai servizi Web OData. Inoltre, sono più flessibili perché permettono di ottenere dati da campi della tabella non definiti in un oggetto pagina.

Gli sviluppatori possono definire oggetti pagina e oggetti query di tipo API. In questo modo, possono esporre i dati delle tabelle del database tramite un servizio REST supportato da webhook e abilitato per OData v4. Questo tipo di dati non può essere visualizzato nell'interfaccia utente, ma è destinato alla creazione di servizi di integrazione affidabili.

Business Central online è disponibile con un set di API integrate che è possibile usare per ottenere dati per le entità aziendali più comuni, quali clienti, articoli, ordini cliente e altro ancora. Non sono necessarie operazioni o impostazioni aggiuntive per usare queste API come un'origine dati per i report Power BI. Per ulteriori informazioni su queste API, vedere API Business Central V2.0.

Business Central online supporta anche API personalizzate. Gli sviluppatori di applicazioni delle soluzioni Business Central possono creare le proprie pagine e query API e inserirle in pacchetti nelle app. Dopodiché si installano le app nel proprio tenant. Dopo averle installate, è possibile usare le pagine API per i propri report Power BI in modo analogo alle API integrate (v2.0). Per altre informazioni su come creare un'API esponendo pagine o query, consultare Sviluppo di un'API personalizzata.

I report Power BI per Business Central online sono originati da una replica del database secondaria di sola lettura per motivi di prestazioni. Di conseguenza, gli sviluppatori AL dovrebbero evitare di progettare pagine API che apportino modifiche al database durante l'apertura o il caricamento di record nelle pagine. In particolare, valutare il codice nei trigger AL: OnInit, OnOpenPage, OnFindRecord, OnNextRecord, OnAfterGetRecord e OnAfterGetCurrRecord. In alcuni casi, queste modifiche del database possono causare problemi di prestazioni e impedire l'aggiornamento dei dati del report. Per ulteriori informazioni, vedere Articoli sulle prestazioni per gli sviluppatori nel contenuto di sviluppo di Business Central.

In rari casi, il comportamento causa un errore quando un utente tenta di ottenere dati dall'API per un report Power BI Desktop. Tuttavia, se sono necessarie modifiche del database nell'API personalizzata, gli utenti di Power BI Desktop possono forzarne il comportamento. Per ulteriori informazioni, vedere Creazione di report di Power BI per visualizzare i dati di Business Central.

Ricreare ora la pagina e la query sviluppata nell'unità precedente come pagina API e query API.

Per creare una pagina API basata sulla tabella Customer, effettuare i seguenti passaggi:

  1. In Visual Studio Code aggiungere un nuovo file .al al progetto e denominarlo CustomersAPI.Page.al.

  2. Incollare il codice seguente nel file 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';
                    }
                }
            }
        }
    }
    

Come si può notare, la pagina API espone gli stessi campi del servizio Web Page di tipo pagina creato nell'unità precedente. La differenza è rappresentata dalle proprietà dell'oggetto pagina.

Le proprietà: APIVersion, APIPublisher, APIGroup, EntityName ed EntitySetName influiscono sull'endpoint personalizzato:

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

Per ulteriori informazioni, vedere Endpoint API DI Business Central e Chiamata dell'API.

Per creare una query API basata sulla tabella Movimento contabile clienti, effettuare i seguenti passaggi:

  1. In Visual Studio Code aggiungere un nuovo file .al al progetto e denominarlo CustomerLedgersAPI.Query.al.

  2. Incollare il codice seguente nel file 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;
    }
    

Si sono creati un nuovo oggetto pagina API e un nuovo oggetto query API. È possibile perfezionare ulteriormente gli oggetti pagina API e query API aggiungendo più campi o filtri. Per questo esempio, si lasceranno così come sono adesso.

Per le pagine API e le query API non è necessario creare un file webservices.xml perché le API siano disponibili in Business Central. È sufficiente pubblicare l'estensione nel tenant di Business Central.

A questo scopo, effettuare i seguenti passaggi:

  1. In Visual Studio Code accedere al Pallet di comando e selezionare l'opzione: AL: Publish without debugging.

  2. Attendere che l'estensione sia pubblicata. Al completamento della pubblicazione, il browser si apre automaticamente e si connette alla sandbox in Business Central.

  3. In Business Central aprire la pagina Gestione estensioni per verificare che l'estensione sia stata pubblicata e installata correttamente.

Ora è possibile usare Power BI Desktop e visualizzare le nuove API usando il connettore Business Central per Power BI.

Come si può notare, le API personalizzate sono disponibili in API avanzate nel connettore Business Central in Power BI Desktop.