19
2

More than 1 year has passed since last update.

Power Apps モデル駆動型アプリにPower BIレポートを埋めこんでみる(コンテキストフィルタあり編)

Last updated at Posted at 2022-12-16

どうも、こんにちは。susumutanakaです。

前書き

皆さん、Power BI好きですねー。
毎日アドベントカレンダーを見るのが楽しみでしょうがないです。

さて、今年は何を書こうか?悩んだあげく、
昨年の書いたQiitaの記事のやりきれてない
「②コンテキストのフィルター処理で埋め込む」をやってみました。

□こちらは、昨年の記事です
https://qiita.com/susumutanaka/items/ce89fd130b9b109b5ad0

まずは、Power BI のレポート作成

シンプルに、Dataverseの取引先企業(Account)をリスト化したレポートを作成しております。
これが、モデル駆動アプリに埋め込んだときに、絞り込まれるか?確認したいと思います。

image.png

※レポートができあがったら、Power BI Serviceへ公開はしておきましょうねー。

まず純粋に、モデル駆動型にPower BIレポートを埋め込みを行う。

これは、去年の記事を参考してくださいー。
(ソリューションファイルをいじるのは変わらないので、以下記事を参考にしてみてください。)
https://qiita.com/susumutanaka/items/ce89fd130b9b109b5ad0#%E4%BD%9C%E3%82%8A%E6%96%B9%E3%81%AE%E6%A6%82%E8%A6%81

また、とてもわかりづらいLearn(旧Docsね)も参考なるかもしないので、
URLをぺたり。。ほんとわかりづらいので、この記事書いてます。
(この記事がわかりやすいかは、さておきw)

で、ポイントしては、埋め込む
①コンテキスト無しの場合こんなもの埋め込みます。

<control id="filteredreport" classid="{8C54228C-1B25-4909-A12A-F2B968BB0D62}">
    <parameters>
        <PowerBIGroupId>d5221958-b57a-42e9-99b2-4b3d67fd51fa</PowerBIGroupId>
        <PowerBIReportId>1bc3c6e9-a082-4e95-a0f5-6338f340b929</PowerBIReportId>
        <TileUrl>https://app.powerbi.com/reportEmbed?reportId=1bc3c6e9-a082-4e95-a0f5-6338f340b929</TileUrl>
    </parameters>
</control>

そして、
②コンテキスト有りの場合は以下の内容を埋め込みます。

<control id="filteredreport" classid="{8C54228C-1B25-4909-A12A-F2B968BB0D62}">
    <parameters>
        <PowerBIGroupId>d5221958-b57a-42e9-99b2-4b3d67fd51fa</PowerBIGroupId>
        <PowerBIReportId>1bc3c6e9-a082-4e95-a0f5-6338f340b929</PowerBIReportId>
        <TileUrl>https://app.powerbi.com/reportEmbed?reportId=1bc3c6e9-a082-4e95-a0f5-6338f340b929</TileUrl>
        <PowerBIFilter>{"Filter": "[{\"$schema\":\"basic\",\"target\":{\"table\":\"account\",\"column\":\"取引先企業名\"},\"operator\":\"In\",\"values\":[$a],\"filterType\":1}]", "Alias": {"$a": "name"}}</PowerBIFilter>
    </parameters>
</control>

じゃぁ、何が違うか?いうと、以下のフィルターの部分の定義となります。

<PowerBIFilter>
{"Filter": "
    [{\"$schema\":\"basic\",
                \"target\":{
                            \"table\":\"account\",
                            \"column\":\"取引先企業名\"
                },
                \"operator\":\"In\",
                \"values\":[$a],
                \"filterType\":1
    }]", 
        "Alias": {"$a": "name"}}
</PowerBIFilter>

これだと、ちょっと何言っているか?わからないw
(サンドウィッチマン冨澤さん風ねw)

ということで、解説していくと、
ポイントとしては、以下キャプチャーの赤線部分になります。

image.png

target以下のtable とColumnの定義は、Power BIレポートの
PQで加工後のデータのテーブル名とカラム名になります。
以下のキャプチャーの赤枠になりますが、
tableは「account」という名前ですが、
columnは勝手に変換されて、日本語の「取引先企業名」となっております。

image.png

また、後半部のAlias以下の記述は、モデル駆動型のテーブルの列の論理名をいれます。
image.png

で、ここでハマリポイントがあるのですが、
Dataverseの論理名がかなりわかりにくい点にあります。

以下が、列の定義ですが、
「スキーマ名」(Name) ※一文字目が大文字
「理論名」(name)※一文字目が小文字
と二つあり、
最初のスキーマ名の方で、定義していたのですが、
うまくフィルターされないため、いろいろと試した結果「論理名」を指定することが判りました。
めっちゃわかりづらいの注意してください。
(キャプチャーの赤枠内の論理名が正解です。)

image.png

そんなこんなで、いろいろと試行錯誤した結果。
取引先企業の詳細の画面で、レポートの絞り込んだ形で表示できるようになりました。
image.png

他のデータでも確認してますが、企業名で絞り込んだ形でレポートが表示されているのを確認しております。

image.png

あとは、皆さんお得意のPower BIレポートを作ってあげれば、よいかなと思います。

しょぼいですが、ちゃんとデータ整備して、レーダーチャートなんかいれる、
雰囲気でると思います。

image.png

あとがき

さて、如何だったでしょうか?
二年越しのモデル駆動型にコンテキストフィルタありの記事、
モデル駆動にPower biのレポートを埋め込む要件なんてそうそうないですが、
一から調べると大変なので、今後皆さんの対応のご参考になれば幸いです。

Power BI Love 3000!
では、よいお年を!

19
2
1

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
19
2