LoginSignup
5
0

More than 1 year has passed since last update.

Power Apps のキャンバスアプリに埋め込んだ Power BI に対してフィルターを適用する

Posted at

はじめに

Power Apps では Power BI で作成したレポートを、キャンバスアプリへ埋め込むことができるPower BI タイルコントロールが用意されています。
image.png

これを使用することで Power Apps 内で簡単に Power BI のレポートを表示することができます。
image.png

やりたいこと

Power Apps に埋め込んだ Power BI タイルにフィルターをかけて Power Apps側からPower BI にクエリをかけてみます。

やりかた

前提

Power BI はURLパラメーターによるフィルタリングをサポートしており、以下のような形でリクエストを行うとフィルタをかけることができます。

https://app.powerbi.com/groups/me/reports/xxxxxxxxxxxxxxxx/ReportSection1?filter={Table}/{Column} eq 'Hoge'

Power Apps で埋め込み URL を取得する

Power BI タイルコントロールをクリックして「プロパティ」→「データ」の「データがありません」をクリックして埋め込むデータを選択します。(この時までに Power BI で埋め込み対象のレポートを作成してダッシュボードにピン止めしておく必要があります)
image.png

再び Power BI タイルコントロールをクリックして「詳細情報」→「TileUri」の URL をメモ帳等にコピーしておきます。
image.png

クエリを追加する

コピーした TileURL は以下の形式になっているはずです。

https://app.powerbi.com/embed?dashboardId={DashboardID}&tileId={TileID}&config={SomeHash}

この URL の末尾にフィルタークエリを追加します。

https://app.powerbi.com/embed?dashboardId={DashboardID}&tileId={TileID}&config={SomeHash}&filter={TableName}/{ColumnName} eq '{Value}'

当たり前ですが、この時フィルターに指定することができるのは埋め込んでいるレポートに存在するテーブル名とカラム名に限られます。

filter の値を動的に変更する

TileURL の値を以下のようにします。

If(mode=0,
"https://app.powerbi.com/embed?dashboardId={DashboardID}&tileId={TileID}&config={SomeHash}&filter=WebsiteSocialAnalytics/Browser eq 'Edge'",
"https://app.powerbi.com/embed?dashboardId={DashboardID}&tileId={TileID}&config={SomeHash}&filter=WebsiteSocialAnalytics/Browser eq 'Chrome'"
)

これでコンテキスト変数modeが 0 の時は WebsiteSocialAnalytics テーブルの Browser 列が[Edge]で、それ以外は[Chrome]のデータが表示されるようにフィルタがかかります。

AllowNewAPI を true に設定する

Power BI タイルコントロールのAllowNewAPIフラグにtrueを設定します。これは Power BI API の新しいバージョンを使用するかどうかというフラグですが、false(古いAPI)だとフィルタの数が1個まで、などといった制限があるので特段の理由がない限りはtrueに設定しておきます。
image.png

mode 変数を切り替えるボタンを作る

キャンバスにボタンを追加して OnSelect プロパティでmode変数を toggle する処理を書きます。

If(mode=0,
  UpdateContext({mode:1}),
  UpdateContext({mode:0})
)

完成!

グラフのレイアウトは同じなのでわかりづらいですが、[Number of visits]の数字をみてみるとボタンが押されるたびに数字が変わるのがわかります。
Animation16.gif

参考

5
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
0