Power Automate visual for Power BI report を試してみた

# Power Automate visual が Power BI に来たよ
2021年4月15日くらいに **Power Automate visula for Power BI report** がリリースされました。現在プレビューです。

Power BI blog の該当記事はこちら。
**[Announcing the new Power Automate visual for Power BI reports]**
https://powerbi.microsoft.com/ja-jp/blog/announcing-the-new-power-automate-visual-for-power-bi-reports/

詳細は上記の記事を読めばだいたいわかります。
今回はとりあえずどんなものか試してみました。

ではスタートぉぉ！

# Power Automate visual って何するもん？何ができるの？
先に何ができるか、書いておきます。

Power Automate visual はその名の通り、ビジュアルのひとつとして提供されていて、レポートにビジュアルとして追加できます。現在はカスタムビジュアルとして作成されているので AppSource (https://appsource.microsoft.com/ja/product/power-bi-visuals/WA2000028039) からダウンロードして、追加します。（Power BI Desktop でも追加できます）

今回 **Power Automate** に **[Power BI でのボタンクリック時]** というトリガーが追加されています。**Power BI レポート**に追加された **Power Automate visual** は **[ボタン]** として機能します。このボタンをクリックすると、フローが起動します。ボタンクリック時にデータモデルのどのデータを渡すのか、指定することができます。現時点では、渡したいデータをすべて指定する必要があります。

ポイントは 

~~**Power Automate visual** がボタンとしてクリックされた時に、**DAX** が実行され、その時のフィルターが適用されたデータから、指定されたデータをフローに渡す~~
他のビジュアルと同様、**ビジュアルが読み込まれた際** or **データがスライサーなどで絞り込まれた** 際に **DAX** が実行され、**Power Automate visual** が **[列]** または **[メジャー]** で指定されたデータを保持し、そのデータが指定されたフローに渡される

ということです。

# 使ってみよう
さて、では使ってみましょう。

## カスタムビジュアルとしてレポートに追加
AppSource から直接ダウンロードしてもよいですが、ここでは **Power BI Desktop** から直接選択してレポートに追加します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/152946/4a45e753-9df5-af18-c38a-6e85a85a0b86.png)
"automate" で検索すると、ヒットしますね。画像の一番上に出ているモノを **[追加]** します。

## まずはこんな表示
レポートに追加すると、ビジュアルにこんな表示が出ます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/152946/8af1d71a-2cfb-e1c4-e2a6-0545553f4249.png)
基本的にはこのガイドに従って進めれば使える、のですが…、日本語切れてるんですwwww

まぁ何とかなります😇
で、まずはデータを追加するってことなので、ご自身のレポートが持ってるデータから列を選択して追加します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/152946/00d77fb2-cd56-ebf8-ea18-0fa7b6da34b6.png)

ちなみにこのデータはこんな感じになってます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/152946/3881dc23-8507-d16e-4c22-1ca11e297039.png)
私が公開してる **Power Platform Weekly News** のレポート (https://bit.ly/PP-WeeklyNews) です。**Power Platform** の各ブログの **RSS feed** を定期的に取得・保存して **Power BI** レポートにしたものです。レポートを開くと画面左上の **[Data Download]** アイコンから、このレポートが使用しているデータをダウンロードできます。

## つぎは3点リーダーから編集
ここからがちょっとわかりにくいです。他のビジュアルにはない操作になります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/152946/826624ae-1546-32af-7de1-df4854d86ac0.png)
ビジュアルにマウスオーバーして、右上に出る **[・・・]** をクリックして **[編集]** を選択します。

## 専用の編集画面 ＝ Power Automate の画面
編集ボタンをクリックすると、**Power Automate** の画面が表示されます。なかなか新鮮ですよね。**Power BI Desktop** の中に **Power Automate** が表示されるって。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/152946/8c4454d8-6de5-aa05-f594-be713eceb5aa.png)
ちなみにここで表示される **Power Automate** のテナントですが、どうやら **Power BI Desktop** にサインインしてるアカウントのデフォルト環境に繋がるようです。ですので、事前に使いたいテナントのユーザーで **Power BI Desktop** にサインインしておいてください。

ここからはフローを作成します。左上の **[+新規]** をクリックします。**[テンプレート]** と **[インスタント クラウド フロー]** が出てくるので、**[インスタント クラウド フロー]** をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/152946/4c314fb3-3c51-927a-6280-7bf7e6010bd4.png)

## フローは普通に作ればよいです
フローの編集画面が表示されます。トリガーには **[クリックされた Power BI ボタン]** が指定された状態で開きます。このトリガーが専用のトリガーになります。ここからは **Power Automate** でフローの作成ができる方はいつも通り作成しましょう。

今回はとりあえず、**Twitter** への投稿をやってみましょう。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/152946/d2a788e1-4d46-7494-9cf0-6b954b60db76.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/152946/58d626b7-9c62-4add-2901-cf548323a52d.png)
**Power BI** から渡されたデータは配列なので、フィールドを1つ選択すると、**[Apply to each]** が追加されます。いわゆるループですね。

通常のフローと同様、フローができたら名前を付けて保存しましょう。

## 保存した後、必要なのは **[適用]** です！！！！！！！！！！！
はい、保存して左向き矢印をクリックすると、こんな画面に戻ってきます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/152946/21d50ae4-39cb-d2cd-143b-8ccefb6c4452.png)
ここで画面上部の **[適用]** を必ずクリックしてください。適用することで、**[Power Automate visual]** と選択したフローが紐づけられます。
適用されるとメッセージが画面上部に表示されます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/152946/93085099-0766-94e1-20f8-1d686a12fec0.png)

## レポートに戻ったらテストぉぉー♪
レポートに戻ってきたら、ビジュアルの書式設定で、ボタンとして設定してあげてください。文字を変更する場合は **[Button text]** で可能です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/152946/100f498d-5aba-0360-7306-60596f793bcb.png)
 そのほか、色を変えるなどは他のビジュアルと同様ですので、省略します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/152946/3296a30a-0fba-0b80-6ecb-4e0d46628095.png)
今回は画面の上部真ん中に配置しました。これをテスト実行する場合は、Ctrl+クリックで実行できます。実行すると **[トリガー中]** と表示されます。実行が終わると **[トリガー済み]** になります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/152946/ed767c18-9e7c-5a7a-7a52-943a50615f78.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/152946/2af00f31-78b0-01a8-d2df-f97e5a6f0078.png)

トリガー済みになったら、Power Automate の実行結果を確認しましょう。
今回は **Twitter** へ投稿してるので、**Twitter** を見てみると、
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/152946/428bb8e0-113a-b71b-e2f2-2d54203ea65f.png)
うん、ちゃんと投稿されています。

**Power Automate** の実行を確認する方法は2つあります。

1. **Power Automate** (https://japan.flow.microsoft.com/) で確認する
1. **Power Automate visual** の編集から確認する

**Power Automate** (https://japan.flow.microsoft.com/) で確認すると
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/152946/f9f32949-1ede-3c06-8833-6d270fd299fb.png)

うん、ちゃんと動いてますね。

**Power Automate visual** の編集から確認するには、**[編集]** をクリックして
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/152946/7d059e0f-891a-737d-1daf-14704d349e02.png)
フロー名をクリックすると、見慣れた **[Power Autoamte]** の実行履歴が出てくるので、日時をクリックすると
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/152946/9c48a32d-39f0-9b1e-9bef-7fc5b97d1fbd.png)
うん、やっぱり同じように確認ができましたね。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/152946/d99cfa00-3010-ed35-56c5-c8860c46a789.png)

# おまけ
こんな感じ **Power BI dataset** に含んでいるデータを、その時の状態でフローに渡すことができる素敵なボタンをレポートに含ませることができました。

注意点としては、

1. **Power BI Desktop** にサインインしてるアカウントで **Power Automate** の環境が開く
1. 指定したデータが全部渡されちゃうので、大量データが渡らないようにとても注意！
1. 現時点では組織内でしか動作しない

1 は既にお伝えしたことなのですが、大事なことなので再掲しておきます。

2 ですが、おそらく勘違いしてしまう方が出てくるのではないかなって思ったので、注意点として挙げておきます。Power BI は数千万行というデータでも、なんなく動作します。つまり大量データをデータセットに保持している可能性があります。一方、**Power Apps** や **Power Automate** はせいぜい数 100 行程度をターゲットにしています。1000行を超えてくると、実装をとても工夫しないと、まともに動かないことがあります。これは Web アプリケーションだということを考えれば、当然です。（経験則です。公式の見解ではありません。悪しからず）

**ちなみに現状 Power BI から渡せるデータは 1000 行が上限みたいです。**

また、Microsoft 365 にくっついてくる Power Apps や Power Automate だと、コネクタの実行回数に制限があり、その制限がユーザー当たり 2000 回/日になっていることから考えても、やはり大量データには向かないでしょう。意図せず実行して、制限を超えてしまわないように注意してください。

なので、**Power Automate visual** を配置するページでは、データの絞り込みができるようにしておく必要があると思います。

3 はたぶん無理だろうなって思って試してみたんですが、やはり無理でした。要は **[Web に公開 (パブリック)]** で一般に公開されたレポートに **Power Automate visual** が含まれていても、レポートは表示できますが、ボタンが動作しません。ボタンをクリックしても **[トリガー中]** のままで止まってしまい、**Power Autoamte** の実行履歴を見ても、呼び出しすら行われていません。

実際に試すとわかるのですが、**Power BI でのボタンクリック時** トリガーでは **実行者のユーザーID、ユーザー名、メールアドレス**が取れるようになっています。これは Power BI から渡さなくても、取得できるので、逆に言うと、実行者が **Azure AD ユーザー (= Microsoft 365 ユーザー)** であることを前提にしていると思われます。

# 参考 - Word template を使って値を出力してみた
これを応用すると、例えば、注文書とか請求書とかを出力できるなーって思いました。
<iframe width="560" height="315" src="https://www.youtube.com/embed/9Qzd0vh8vqk" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>

# おわり
ということで、以上です。
ぜひぜひ皆さん試してみくださいねー！