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

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

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

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

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

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

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

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/322851/66800e5d-a077-d958-1564-236d416bb264.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をぺたり。。ほんとわかりづらいので、この記事書いてます。
（この記事がわかりやすいかは、さておきｗ）

https://learn.microsoft.com/ja-jp/power-apps/maker/model-driven-apps/embed-powerbi-report-in-system-form#embed-with-contextual-filtering

で、ポイントしては、埋め込む
①コンテキスト無しの場合こんなもの埋め込みます。
```
<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>

```
これだと、ちょっと何言っているか？わからないｗ
（サンドウィッチマン冨澤さん風ねｗ）

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

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/322851/e9f0e664-12a9-0e7f-45e3-77ca6e689393.png)

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

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/322851/54634a57-4b63-9bed-deb0-d7b13927f7f9.png)

また、後半部のAlias以下の記述は、モデル駆動型のテーブルの列の論理名をいれます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/322851/b109eb9a-543d-a87e-9290-04d63eaed451.png)

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

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

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/322851/0a089135-1cdc-ab0e-96cb-f59108a6d853.png)

そんなこんなで、いろいろと試行錯誤した結果。
取引先企業の詳細の画面で、レポートの絞り込んだ形で表示できるようになりました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/322851/fcf933c2-2812-e465-4fcb-a740129ad352.png)

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

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/322851/28b2ad6a-719a-8891-9e62-af5ea3c96097.png)

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

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

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/322851/50820ce1-736d-6e02-0bfe-55651b5bf0ac.png)


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

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