私のアプリケーションでは、Power BIレポートを表示しています。すでに機能しているため、ID(ガイド)ごとにレポートを表示しても問題はありません。
ただし、たとえば、現在の年やレポートを表示する人など、パラメータ化する必要のあるレポートがあります。 それが私の質問です:どうすればいいですか?
具体的には、レポートをHTML _<iframe>
_要素内に埋め込みます。 iframe URLをレポート定義のembedUrl
(REST API)から受信)から受信したURLに設定します。postMessage()
を呼び出すJavaScriptコードで制御しています。
レポート定義:
_{
"id":"12345678-6418-4b47-ac7c-f8ac7791a0aa",
"name":"Retail Analysis Sample",
"webUrl":"https://app.powerbi.com/reports/12345678-6418-4b47-ac7c-f8ac7791a0aa",
"embedUrl":"https://app.powerbi.com/reportEmbed?reportId=12345678-6418-4b47-ac7c-f8ac7791a0aa"
}
_
レポートをロードするJavaScriptコード:
_function onFrameLoaded() {
var m = {
action: "loadReport",
reportId: reportId,
accessToken: accessToken
};
iframe.contentWindow.postMessage(JSON.stringify(m), "*");
}
_
次に、カスタムアプリケーションのパラメーターでレポートをフィルター処理します。レポートのデータセットをフィルターするために値を送信または渡す方法はありますか?
まず、レポートでフィルターを定義する必要があるため、ユーザーは手動でフィルターを設定できます。
外部ソースからPower BIレポートにパラメーターを渡す(したがってフィルターを設定する)には、2つの方法があります。
a)Power BIアプリケーションの場合
レポートURL(ブラウザーのアドレスバー)でfilter
パラメーターを設定することにより、フィルターを指定できます。パラメーターはカスタムフィルタークエリを受け取ります。
_https://app.powerbi.com/groups/me/reports/12345678-6418-4b47-ac7c-f8ac7791a0a7?filter=Store/PostalCode eq '15012'
_
「12345678-6418-4b47-ac7c-f8ac7791a0a7」はレポートID、「Store」はデータセット、PostalCodeは除外するパラメーターです。 「eq」は等値演算子です。
URLはエンコードされる必要があるため、最終的なURLは次のようになります。
_https://app.powerbi.com/groups/me/reports/12345678-6418-4b47-ac7c-f8ac7791a0a7?filter=Store/PostalCode%20eq%20%2715012%27
_
b)JavaScript sendMessage oDataFilterパラメーター
JavaScript(ブラウザークライアント側)は、パラメーターを使用したpostMessage()
呼び出し(上記の質問と同様)によって、ロードされたBIレポートを制御します。レポートをフィルタリングするために設定できる追加オプションoDataFilter
があります。
次のように設定します:_oDataFilter: "Store/PostalCode eq '15012'"
_
完全なコードは次のようになります。
_function onFrameLoaded() {
var m = {
action: "loadReport",
reportId: reportId,
accessToken: accessToken,
oDataFilter: "Store/PostalCode eq '15012'"
};
iframe.contentWindow.postMessage(JSON.stringify(m), "*");
}
_
備考
Microsoftはpowerbi-clientを作成しました。これを使用すると、1つのフィルターを適用するだけでなく、さらに多くのことができます。必要な数のフィルターを適用できます。また、デフォルトページ、デフォルトフィルター、フィルターペインの非表示、ページナビゲーションの非表示などを選択できます。
クライアントはここで見つけることができます: https://Microsoft.github.io/PowerBI-JavaScript/
デモアプリケーションを次に示します。 https://Microsoft.github.io/PowerBI-JavaScript/demo/index.html
ドキュメントは次のとおりです。 https://github.com/Microsoft/PowerBI-JavaScript/wiki