Abfrage‑ und Seitenobjekte für Power BI entwickeln
Wenn Sie einen Power BI-Bericht erstellen müssen, ist es eine gute Methode, die Datensätze zu entwickeln, die Ihr Bericht benötigt. Zum Erstellen dieser Datasets können Sie die Entwicklungsumgebung verwenden. In der Regel umfasst dieser Prozess das Erstellen einer kleinen Erweiterung, die die erforderlichen Abfragen oder Seiten für Ihren Bericht enthält. In Webdiensten umfasst er eine Webdienstsammlung, um beim Installieren und Veröffentlichen der Erweiterung sicherzustellen, dass die Abfragen und Seiten automatisch in der Webdiensttabelle veröffentlicht werden.
Wenn Sie API-Abfragen oder ‑Seiten entwickeln, sind diese automatisch verfügbar, nachdem die Erweiterung bereitgestellt wurde. API-Abfragen und ‑Seiten erfordern keine Webdienst-Erfassungsdatei und werden nicht in der Tabelle „Webdienste“ veröffentlicht.
Bevor Sie mit der Entwicklung Ihrer Erweiterung beginnen, z. B. für Power BI, wird empfohlen, zunächst Ihre Anforderungen genauer zu analysieren. Beispielsweise werden Sie möglicherweise aufgefordert, einen bestimmten Power BI-Bericht zu erstellen, der bestimmte Daten erfordert und basierend auf dieser Anforderung dann Ihre Datensätze erstellt. Und wenn Sie das nächste Mal aufgefordert werden, einen neuen Power BI-Bericht zu erstellen, beginnen Sie von vorne und erstellen weitere Datensätze.
Anstelle dieses Ansatzes ist es besser, über die Tabellen nachzudenken, die Sie häufig in allen oder den meisten Power BI-Berichten benötigen und diese als separate Datensätze zu erstellen. Auf diese Weise können Sie sie jederzeit wiederverwenden. Also erstellen Sie zuerst die Bausteine Ihrer typischen Power BI-Berichte, und dann können Sie beim Erstellen der Berichte diese Bausteine wiederverwenden. Am Ende haben Sie weniger Datasets und müssen nicht immer bei jedem neuen Power BI-Bericht von vorne anfangen.
Im nächsten Modul dieses Lernpfads erklären wir, wie Sie das Datenmodell eines typischen Berichts erfassen sollten. Basierend auf diesem Datenmodell, das normalerweise als Stern‑ oder Schneeflockenschema bezeichnet wird, können Sie Abfragen (oder Seiten) erstellen und als Webdienste veröffentlichen.
Im folgenden Verfahren werde ich erläutern, wie Sie eine neue Erweiterung erstellen können, die neue Seiten und Abfragen enthält, um sie als Webdienste für Power BI verfügbar zu machen.
Zuerst müssen Sie Visual Studio Code herunterladen und installieren.
Dann nach dem Start von Visual Studio Code fügen Sie die AL-Erweiterung für Business Central hinzu.
Ein detailliertes Beispiel dafür finden Sie hier. Verwenden Sie diese Links, um auf die Informationen zu den einzelnen Themen zuzugreifen.
Nachdem Sie Visual Studio Code installiert und die AL Language-Erweiterung aktiviert haben, müssen Sie ein neues Projekt erstellen, wie hier beschrieben.
Eine neue Business Central-Erweiterung in Visual Studio Code erstellen
Nachdem Sie die neue Erweiterung in Visual Studio Code erstellt haben, können Sie die Dateien „launch.json“ und „app.json“ wie hier beschrieben bearbeiten.
Mit JSON-Konfigurationsdateien arbeiten
Sie können jetzt neue Seiten und Abfragen in dieser Erweiterung hinzufügen.
Als Beispiel erstellen wir jetzt eine Abfrage basierend auf der Debitorenpostentabelle und eine Seite basierend auf der Debitorentabelle.
Führen Sie die folgenden Schritte aus, um eine Seite basierend auf der Debitorentabelle zu erstellen.
Fügen Sie in Visual Studio Code eine neue .al-Datei zu Ihrem Projekt hinzu, und nennen Sie sie
Customers.Page.al.Verwenden Sie den Ausschnitt tpage, um das Skelett der neuen Seite zu erstellen.
Ändern Sie die Eigenschaft SourceTable in Debitor.
Entfernen Sie nun alle Elemente außer dem Repeater. Ihr Code sollte nun wie folgt aussehen.
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; } } } } }Im Repeater-Bereich können Sie jetzt die gewünschten Felder aus der Debitorentabelle hinzufügen. Als Beispiel können Sie die folgenden Felder hinzufügen.
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' } }Wenn Sie Namen für die Felder angeben, die aus der Debitorentabelle stammen, sollten Sie sicherstellen, dass alle Namen leicht verständlich sind und die in den Spalten verfügbaren Informationen angeben.
Optional können Sie die Seite jetzt auch filtern, sodass nur die gewünschten Datensätze zurückgegeben werden. Sie können dies mit der Eigenschaft SourceTableView der Seite und/oder durch Hinzufügen von Code in den Seitentriggern tun. Als Beispiel verwenden wir die Eigenschaft SourceTableView, um blockierte Debitoren von der Seite zu entfernen. Implementieren Sie dazu die folgende Eigenschaft.
SourceTableView = where(Blocked = filter(" "));Weitere Informationen zur Eigenschaft SourceTableView ist hier verfügbar: SourceTableView-Eigenschaft.
Verwenden Sie dann die Eigenschaft Editable, um die Seite schreibgeschützt zu machen:
Editable = false;.Legen Sie abschließend die folgenden Eigenschaften fest, um sicherzustellen, dass die Seite nur Daten aus der Debitorentabelle lesen kann.
Bearbeitbar = falsch;
InsertAllowed = false;
DeleteAllowed = false;
ModifyAllowed = false;
Der komplette Code der Seite soll dem folgenden Beispiel ähneln.
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'; } } } } }Speichern Sie das .al-Objekt mit STRG+S.
Führen Sie die folgenden Schritte aus, um eine Abfrage basierend auf der Debitorenpostentabelle zu erstellen:
Fügen Sie in Visual Studio Code eine neue
.al-Datei zu Ihrem Projekt hinzu, und nennen Sie sieCustomerLedgers.Query.al.Verwenden Sie den Ausschnitt tquery, um das Skelett der neuen Abfrage zu erstellen:
Ändern Sie das Datenelement so, dass es die Tabelle Debitorenbucheintrag verwendet, und stellen Sie die Eigenschaft DataAccessIntent der Abfrage auf ReadOnly.
QueryType = Normal;DataAccessIntent = ReadOnly;Fügen Sie der Abfrage Spalten hinzu. Führen Sie dies für alle Felder aus, die diese Abfrage als Spalten zurückgeben soll:
column(CustomerNo; "Customer No.") { } column(PostingDate; "Posting Date") { } column(Amount; "Amount (LCY)") { }Entfernen Sie alles andere, was den Ausschnitt tquery zu Ihrem Objekt hinzugefügt.
Ihre Abfrage sollte nun wie folgt aussehen:
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)") { } } } }Sie können jetzt Filter auf die Abfrage anwenden, um alle Zeilen aus der Tabelle zu entfernen, die im Dataset nicht erforderlich sind. Sie können dies tun, indem Sie die Eigenschaft DataItemTableFilter des Datenelements verwenden oder durch Hinzufügen von Filterspalten oder durch Verwenden des Abfragetriggers OnBeforeOpen.
Weitere Informationen zum Filtern von Abfrageobjekten finden Sie hier: Abfragefilter
Sie haben jetzt ein neues Seitenobjekt und ein neues Abfrageobjekt erstellt. Sie können die Seiten‑ und Abfrageobjekte weiter optimieren, indem Sie weitere Felder oder Filter hinzufügen. In diesem Beispiel lassen wir sie so, wie sie gerade sind.
Der nächste Schritt besteht darin, sicherzustellen, dass unsere Seiten‑ und Abfrageobjekte automatisch als Webdienste veröffentlicht werden, sodass Power BI die Daten verbinden und importieren kann. Dazu müssen Sie der Erweiterung eine Webdienstsammlung hinzufügen. Die Webdienstsammlung benötigt dann einen Webdiensteintrag für jedes Objekt, das Sie als Webdienst veröffentlichen möchten.
Führen Sie die folgenden Schritte aus, um die Webdienstsammlung zu erstellen:
Fügen Sie in Visual Studio Code eine neue .al-Datei zu Ihrem Projekt hinzu, und nennen Sie sie
webservices.xml.Verwenden Sie den Ausschnitt twebservices, um das Skelett der Webdienstsammlung zu erstellen.
Die Datei „webservices.xml“ sieht nun wie folgt aus:
<?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>Jetzt ändern wir diese Webdienstsammlung so, dass sie unsere neue Seite und unser neues Abfrageobjekt enthält. Verwenden Sie den folgenden Code als Beispiel:
<?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>Für jede Seite oder Abfrage, die Sie als Webdienst in Business Central veröffentlichen müssen, ist ein Eintrag in diese XML-Datei vorzunehmen.
Jetzt können Sie diese Erweiterung veröffentlichen und in Ihrer Business Central-Sandbox installieren. Führen Sie die folgenden Schritte aus, um das zu tun.
Wechseln Sie in Visual Studio Code zur Befehlspalette, und wählen Sie die Option AL: Ohne debuggen veröffentlichen aus.
Warten Sie, bis die Erweiterung veröffentlicht ist. In diesem Fall wird Ihr Browser automatisch geöffnet und stellt in Business Central eine Verbindung zu Ihrer Sandbox her.
Öffnen Sie in Business Central die Seite Erweiterungsmanagement, um zu überprüfen, ob Ihre Erweiterung erfolgreich veröffentlicht und installiert wurde.
Öffnen Sie nun die Webdienstseite, und filtern Sie sie nach _PowerBI.
Ihre neue Seite und Abfrage werden jetzt als Webdienste veröffentlicht.
Wie in einer anderen Lerneinheit dieses Moduls Verwenden von Business Central als Datenquelle in Power BI erläutert, können Sie jetzt Power BI Desktop verwenden und diese neuen Webdienste und APIs mit dem Business Central-Konnektor für Power BI anzeigen.