Arbeiten Sie mit Power BI Matrix, indem Sie Daten aus dem DAX-Auszug entnehmen
Ich habe folgende Anforderungen:
- Der Benutzer sieht eine Power BI-Matrix auf einer Webseite (im Gegensatz zu Power BI Desktop).
- Die Webseite sollte drei Elemente haben: ein Textfeld, eine Schaltfläche und die Power BI-Matrix (möglicherweise in einem Power BI-Bericht enthalten).
- Der Benutzer gibt die DAX-Anweisung in das Textfeld ein und klickt auf die Schaltfläche, um die Matrix anzuweisen, die DAX-Anweisung zu übernehmen, auszuführen und die Daten zu füllen.
- Der Benutzer sollte in der Lage sein, in der Matrix nach unten zu gehen.
- Der Benutzer kann eine neue DAX-Anweisung erneut eingeben und die Matrix aktualisieren.
Nun, die gesamte Dokumentation, die ich zum Beispiel hier finden konnte , spricht über die Matrix in Power BI Desktop (dh keine Webseite) und die Daten, die durch manuelle Auswahl von Tabellen/Spalten/Kennzahlen (auf der rechten Seite des Bildschirms) erfasst wurden.
In Power BI Studio weiß ich, dass ich eine DAX-Anweisung eingeben kann, indem ich eine Tabelle in der oberen Leiste erstelle, wenn ich zum Beispiel den DAX habe:
EVALUATE TOPN (3, branches)
Ich könnte eine Tabelle erstellen, um die Matrix mit zu füllen:
BranchesTable = TOPN (3, branches)
Aber wie kann man eine zur Laufzeit definierte DAX-Anweisung dynamisch mit einer Matrix auf einer Webseite verknüpfen?
Antworten
Dies ist derzeit nicht möglich, genau das zu tun, was Sie wollen. Sie können eine Datenquelle dynamisch ändern und die in einem bestimmten Bericht verwendete Abfrage aktualisieren, aber es ist keine API verfügbar (PowerBI REST oder PowerBI JavaScript), um zu aktualisieren, welche Spalten sich in einem Visual in einem Bericht befinden. Sie können dem, was Sie möchten, ziemlich nahe kommen, aber der Bericht kann nicht im View
Modus angezeigt werden und muss im Edit
Modus angezeigt werden, damit der Benutzer die Möglichkeit hat, die aus seinen aktualisierten DAX-Abfrageergebnissen generierten Felder manuell auf das Matrix-Visual zu ziehen, wenn Sie reichen eine Änderung ein.
Angenommen, Sie haben bereits die Einrichtung und Konfiguration der erforderlichen App-Registrierung abgeschlossen und sind bereit zum Einbetten, hier sind einige Schritte, um dem, was Sie suchen, nahe zu kommen. Wenn Sie nicht zum Einbetten bereit sind, finden Sie unter den 8 Schritten, die ich bereitgestellt habe, eine Dokumentation, um die erforderliche Einrichtung zum Einbetten abzuschließen.
- Verwenden von PowerBI Desktop Erstellen Sie einen Vorlagenbericht mit einem Matrix-Visual und einer Verbindung zu der Datenquelle, die Sie verwenden möchten. Stellen Sie sicher, dass Sie diesen Bericht mit einer bestimmten Abfrage und NICHT mit allen Tabellen in der Datenquelle einrichten, unabhängig davon, ob es sich um SQL oder SSAS handelt. (Sie geben die Abfrage unter „Erweiterte Optionen“ an, wenn Sie die Datenquelle im Bericht erstmalig einrichten.)
- Richten Sie ein Power BI-Datengateway zu der Datenquelle ein, die Ihr Bericht verwendet
- Erstellen Sie einen Arbeitsbereich auf PowerBI.com, um den Bericht hochzuladen
- Verwenden von PowerBI Desktop Veröffentlichen Sie den in Schritt 1 erstellten Bericht in dem Arbeitsbereich, den Sie in Schritt 3 erstellt haben
- Wenn ein Benutzer in Ihrer Webanwendung die Berichtsanzeigeseite anzeigt, müssen Sie jeden Benutzer identifizieren können. Nehmen wir an, Sie haben
UserId
ein Feld, das eine eindeutige ID für jeden Benutzer ist. Rufen Sie GetReports in der Gruppe aufhttps://docs.microsoft.com/en-us/rest/api/power-bi/reports/getreportsingroup. Sie benötigen einen bekannten Berichtsnamen plus die Benutzer-ID. Nehmen wir seinen DynamicReport an. Rufen Sie also GetReports auf und prüfen Sie, obDynamicReport_UserId
es für den Benutzer existiert, der versucht, die Berichtsanzeigeseite in Ihrer Webanwendung anzuzeigen. - In dem sich API-Aufrufe aus Schritt 5 ergeben, verwenden Sie, wenn der Bericht für einen Benutzer nicht vorhanden isthttps://docs.microsoft.com/en-us/rest/api/power-bi/reports/clonereportum den Vorlagenbericht zu klonen, den Sie in Schritt 4 veröffentlicht haben.
- Einbetten und Anzeigen eines benutzerspezifischen Vorlagenberichts (DynamicReport_UserId) für den Benutzer.
- Verfügen Sie über eine Logik auf der Berichtsanzeigeseite, damit der Benutzer
POST
eine DAX-Abfrage senden kann. Wenn sie ein Submit machen, müssen sie Logik verwendenhttps://docs.microsoft.com/en-us/rest/api/power-bi/datasets/updatedatasourcesim Backend, um die Datenquelle in ihrem Bericht zu aktualisieren und den Bericht dann erneut mit ihrem DAX-Auszug und den geänderten Daten einzubetten.
Das Visual wird nicht automatisch auf die neuen Felder aus der neuen Abfrage aktualisiert, die vom Benutzer übermittelt wird, aber die verfügbaren Datenfelder, die sie im Editormodus haben, ändern sich. Der Benutzer muss die Felder aus seiner DAX-Abfrage per Drag & Drop auf das Matrix-Visual oder einen beliebigen visuellen Typ ziehen, den er verwenden möchte. Sie können einen Bericht nicht einfach im View
Modus anzeigen, da Sie nicht programmgesteuert aktualisieren können, welche Felder visuell angezeigt werden. Aufgrund der geänderten Abfrage und der visuellen Referenzfelder aus der zuvor verwendeten Abfrage kann es vorkommen, dass der Benutzer anfänglich sogar ein fehlerhaftes Bild sieht. Sie könnten die PowerBI-Javascript-API verwenden, um das vorhandene visuelle Element auszublenden, um die Benutzererfahrung zu verbessern, wenn der Benutzer nichts Defektes sieht.
Lassen Sie mich wissen, wenn Sie spezielle Fragen zu diesen API-Aufrufen oder ihrer Verwendung haben.
Hier habe ich nach der Power BI-JavaScript-Funktion gesuchthttps://github.com/Microsoft/powerbi-javascript/wiki(Kann nichts Spezielles für Matrix-Visuals finden. Die JavaScript-Funktionalität für Visuals ist generisch für Visuals und nicht für Visual Type wie Matrix oder Card)
Hier ist die Microsoft-Dokumentation zu den verfügbaren REST-APIs undhttps://docs.microsoft.com/en-us/rest/api/power-bi/
Hier sind einige gute Ressourcen, um mehr über das Einbetten zu erfahren
https://docs.microsoft.com/en-us/power-bi/developer/embedded/register-app https://docs.microsoft.com/en-us/power-bi/developer/embedded/embedding
Wenn Sie Drilldown-Funktionen benötigen, sind Hierarchien eine großartige Option
https://spreadsheeto.com/power-bi-hierarchy/