API-Abfrage und API-Seitenobjekte für Power BI entwickeln

Abgeschlossen

In der vorherigen Lerneinheit haben Sie gesehen, wie Sie Seiten‑ und Abfrageobjekte entwickeln und wie Sie Seiten‑ und Abfrageobjekte als Webdienste verfügbar machen. Power BI kann eine Verbindung zu den Business Central-Webdiensten herstellen und die Daten importieren.

Es wird empfohlen, wenn möglich API-Seiten/Abfragen anstelle von OData-Webdiensten zu verwenden. APIs laden Daten in Power BI-Berichten schneller als OData-Webdienste. Zudem sind sie flexibler, da Sie Daten aus Tabellenfeldern abrufen können, die nicht in einem Seitenobjekt definiert sind.

Entwickler können Seitenobjekte definieren und Objekte vom Typ API abfragen. So können sie Daten aus Datenbanktabellen über einen REST-Dienst verfügbar machen, der von einer Webhook unterstützt und OData v4-aktiviert ist. Dieser Datentyp kann nicht in der Benutzeroberfläche angezeigt werden, ist jedoch für den Aufbau zuverlässiger Integrationsdienste vorgesehen.

Business Central Online ist mit einer Reihe integrierter APIs verfügbar, die Sie verwenden können, um Daten für die gängigsten Geschäftsentitäten wie Debitoren, Artikel, Verkaufsaufträge und mehr abzurufen. Es ist keine weitere Arbeit oder Einrichtung erforderlich, um diese APIs als Datenquelle für Power BI-Berichte zu verwenden. Weitere Informationen zu diesen APIs finden Sie unter Business Central API V2.0.

Business Central Online unterstützt zudem benutzerdefinierte APIs. Anwendungsentwickler von Business Central-Lösungen können eigene API-Seiten und Abfragen erstellen und sie in Apps verpacken. Dann installieren Sie die Apps auf Ihrem Mandanten. Sie verwenden die API-Seiten für Ihre Power BI Berichte, so wie Sie es mit den integrierten APIs (v2.0) tun würden, nachdem diese Installation durchgeführt wurde. Weitere Informationen zum Erstellen einer API indem Seiten oder Abfragen verfügbar gemacht werden, finden Sie unter Eine benutzerdefinierte API entwickeln.

Power BI-Berichte werden für Business Central Online aus Leistungsgründen von einer sekundären, schreibgeschützten Datenbankreplik erstellt. Folglich sollten AL-Entwickler es vermeiden, API-Seiten zu entwickeln, die Datenbankänderungen vornehmen, während die Seiten Datensätze öffnen oder laden. Beachten Sie besonders den Code für die AL-Trigger: OnInit, OnOpenPage, OnFindRecord, OnNextRecord, OnAfterGetRecord und OnAfterGetCurrRecord. In einigen Fällen können diese Datenbankänderungen zu Leistungsproblemen führen und verhindern, dass der Bericht Daten aktualisiert. Weitere Informationen dazu finden Sie unter Leistungsartikel für Entwickler in den Business Central-Entwicklungsinhalten.

Wenn ein Benutzer versucht, Daten von der API für einen Bericht in Power BI Desktop abzurufen, verursacht das Verhalten in seltenen Fällen einen Fehler. Power BI Desktop-Benutzer können jedoch das Verhalten erzwingen, wenn Datenbankänderungen in der benutzerdefinierten API benötigt werden. Weitere Informationen finden Sie unter Power BI-Berichte zur Anzeige von Business Central-Daten erstellen.

Erstellen wir nun die Seite und Abfrage, die wir in der vorherigen Lerneinheit entwickelt haben, als API-Seite und API-Abfrage neu.

Führen Sie die folgenden Schritte aus, um eine API-Seite basierend auf der Debitorentabelle zu erstellen

  1. Fügen Sie in Visual Studio Code Ihrem Projekt eine neue .al-Datei hinzu, und nennen Sie diese CustomersAPI.Page.al.

  2. Fügen Sie in die Datei CustomersAPI.Page.al den folgenden Code ein:

    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';
                    }
                }
            }
        }
    }
    

Wie Sie sehen können, stellt die API-Seite dieselben Felder zur Verfügung wie der Seiten-Webdienst, den Sie in der vorherigen Lerneinheit erstellt haben. Der Unterschied liegt in den Eigenschaften des Seitenobjekts.

Die Eigenschaften: APIVersion, APIPublisher, APIGroup, EntityName und EntitySetName haben Auswirkungen auf Ihren benutzerdefinierten Endpunkt:

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

Weitere Informationen finden Sie unter Business Central-API-Endpunkte und Die API aufrufen.

Führen Sie die folgenden Schritte aus, um eine API-Abfrage basierend auf der Debitorenpostentabelle zu erstellen:

  1. Fügen Sie in Visual Studio Code Ihrem Projekt eine neue .al-Datei hinzu, und nennen Sie diese CustomerLedgersAPI.Query.al.

  2. Fügen Sie in die Datei CustomerLedgersAPI.Query.al den folgenden Code ein:

    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;
    }
    

Sie haben jetzt ein neues API-Seitenobjekt und ein neues API-Abfrageobjekt erstellt. Sie können die API-Seiten‑ und API-Abfrageobjekte weiter optimieren, indem Sie weitere Felder oder Filter hinzufügen. In diesem Beispiel lassen wir sie so, wie sie gerade sind.

Für API-Seiten und API-Abfragen müssen Sie keine webservices.xml-Datei erstellen, damit die APIs in Business Central zur Verfügung stehen. Sie müssen nur für den Business Central-Mandanten die Erweiterung veröffentlichen.

Führen Sie die folgenden Schritte aus, um das zu tun:

  1. Wechseln Sie in Visual Studio Code zur Befehlspalette, und wählen Sie die Option AL: Publish ohne debuggen aus.

  2. Warten Sie, bis die Erweiterung veröffentlicht ist. Bei Veröffentlichung wird Ihr Browser automatisch geöffnet und stellt in Business Central eine Verbindung zu Ihrer Sandbox her.

  3. Öffnen Sie in Business Central die Seite Erweiterungsmanagement, um zu überprüfen, ob Ihre Erweiterung erfolgreich veröffentlicht und installiert wurde.

Verwenden Sie den Business Central-Konnektor für Power BI, indem Sie Power BI Desktop verwenden und diese neuen APIs anzeigen.

Wie Sie sehen können, stehen benutzerdefinierte APIs unter „Erweiterte APIs“ im Business Central-Konnektor in Power BI Desktop zur Verfügung.