DAXステートメントからデータを取得するPowerBIMatrixを操作する

Aug 15 2020

次の要件があります。

  • ユーザーには、(Power BI Desktopではなく)WebページにPower BIMatrixが表示されます。
  • Webページには、テキストフィールド、ボタン、およびPower BI Matrix(Power BIレポートに含まれる可能性があります)の3つの要素が含まれている必要があります。
  • ユーザーはテキストフィールドにDAXステートメントを入力し、ボタンをクリックして、マトリックスにDAXステートメントを取得して実行し、データを入力するように指示します。
  • ユーザーは、マトリックスをドリルダウンできる必要があります。
  • ユーザーは、新しいDAXステートメントを再入力して、マトリックスを更新できます。

ここで、たとえばここで見つけたすべてのドキュメントでは、Power BI Desktopのマトリックス(Webページではない)と、テーブル/列/メジャーを手動で選択して取得したデータ(画面の右側)について説明しています。

Power BI Studioでは、たとえばDAXがある場合、トップバーにテーブルを作成することでDAXステートメントを入力できることを知っています。

 EVALUATE TOPN (3, branches)

マトリックスに次のものを入力するテーブルを作成できます。

BranchesTable = TOPN (3, branches)

しかし、実行時に定義されたDAXステートメントをWebページ上のマトリックスに動的にリンクするにはどうすればよいでしょうか。

回答

1 vvvv4d Aug 15 2020 at 21:20

これは現在、あなたが望むことを正確に行うことは不可能です。データソースを動的に変更し、特定のレポートで使用されるクエリを更新できますが、レポートのビジュアルにある列を更新するために使用できるAPI(PowerBIRESTまたはPowerBIJavaScript)はありません。必要なものにかなり近づくことができますが、レポートをViewモードで表示することはできず、モードで表示する必要があるEditため、ユーザーは、更新されたDAXクエリ結果から生成されたフィールドを手動でマトリックスビジュアルにドラッグできます。彼らは変更を提出します。

前提条件のアプリ登録のセットアップと構成がすでに完了していて、ここに埋め込む準備ができていると仮定すると、探しているものに近づくためのいくつかの手順があります。埋め込む準備ができていない場合は、埋め込むことができるようにするための前提条件のセットアップを完了するために提供した8つの手順の下にいくつかのドキュメントがあります。

  1. PowerBIデスクトップの使用マトリックスビジュアルと使用するデータソースへの接続を含むテンプレートレポートを作成します。SQLまたはSSASに関係なく、データソース内のすべてのテーブルではなく、特定のクエリを使用してこのレポートを設定してください。(レポートでデータソースを最初に設定するときに、詳細オプションでクエリを指定します)
  2. レポートで使用するデータソースにPowerBI DataGatewayをセットアップする
  3. PowerBI.comにワークスペースを作成して、レポートをにアップロードします
  4. PowerBIデスクトップの使用手順1で作成したレポートを手順3で作成したワークスペースに公開します
  5. Webアプリケーションで、ユーザーがレポートビューアページを表示するときに、各ユーザーを識別する方法が必要です。UserIdユーザーごとに一意のIDであるフィールドがあると仮定します。グループでGetReportsを呼び出すhttps://docs.microsoft.com/en-us/rest/api/power-bi/reports/getreportsingroup。既知のレポート名とUserIdが必要です。そのDynamicReportを想定しましょう。したがって、GetReportsを呼び出しDynamicReport_UserIdて、Webアプリケーションでレポートビューアページを表示しようとしているユーザーが存在するかどうかを確認します。
  6. 手順5のAPI呼び出しの結果で、ユーザーのレポートが存在しない場合は、次を使用します。 https://docs.microsoft.com/en-us/rest/api/power-bi/reports/clonereport 手順4で公開したテンプレートレポートのクローンを作成します。
  7. ユーザーのユーザー固有のテンプレートレポート(DynamicReport_UserId)を埋め込んで表示します。
  8. レポートビューアページにロジックを設定して、ユーザーが送信しPOSTてDAXクエリを実行できるようにします。彼らが提出するとき、使用するロジックがありますhttps://docs.microsoft.com/en-us/rest/api/power-bi/datasets/updatedatasources バックエンドでレポートのデータソースを更新してから、DAXステートメントと変更されたデータを使用してレポートを再度埋め込みます。

ビジュアルは、ユーザーが送信した新しいクエリから新しいフィールドに自動的に更新されませんが、エディターモードで使用可能なデータフィールドは変更されます。ユーザーは、DAXクエリのフィールドをマトリックスビジュアルまたは使用するビジュアルタイプにドラッグアンドドロップする必要があります。Viewビジュアル上のフィールドをプログラムで更新する方法がないため、モードでレポートを表示することはできません。変更されたクエリと以前に使用されたクエリのビジュアル参照フィールドが原因で、ユーザーは最初に壊れたビジュアルを見ることになります。 PowerBI Javascript APIを使用して既存のビジュアルを非表示にし、何かが壊れているのを見ていないユーザーエクスペリエンスを向上させることができます。

これらのAPI呼び出しについて、またはそれらの使用方法について具体的な質問がある場合はお知らせください。

これが私がPowerBIJavaScript機能を探していた場所です https://github.com/Microsoft/powerbi-javascript/wiki (マトリックスビジュアルに固有のものが見つかりません。マトリックスやカードなどのビジュアルタイプではなく、ビジュアルに一般的なビジュアルのJavaScript機能)

利用可能なRESTAPIと https://docs.microsoft.com/en-us/rest/api/power-bi/

埋め込みについてさらに学ぶためのいくつかの良いリソースがあります

https://docs.microsoft.com/en-us/power-bi/developer/embedded/register-app https://docs.microsoft.com/en-us/power-bi/developer/embedded/embedding

ドリルダウン機能が必要な場合階層は優れたオプションです

https://spreadsheeto.com/power-bi-hierarchy/