本記事は「 TTDC Advent Calendar 2024 」 16 日目の記事です。
はじめに
最近は、PowerAutomate、PowerBIを活用する方が増えています。
本記事は、今から始める方・始めたいと思っている方をターゲットにした記事です。
PowerAutomateでPowerBIから最新のデータを取得する方法を紹介します。
本記事でわかること
- PowerAutomateのスケジュール実行方法
- PowerBIのデータ絞り込み方法
- 絞り込んだデータのCSV出力方法
PowerAutomate、PowerBIとは
PowerAutomateとは、Microsoft社のRPA(ロボティック・プロセス・オートメーション)ツールです。Microsoft 365製品や他の外部サービスと連携して業務プロセスを自動化することができます。
PowerBIとは、Microsoft社が提供しているBI(ビジネス・インテリジェンス)ツールです。膨大なデータを分析・可視化し、経営や業務の意思決定に役立てることができます。
やりたいこと
PowerBIのレポートから、必要なデータを絞り込んで、OneDrive上へCSV出力します。
PowerBIのレポートイメージは、下記の通りです。
このデータを使って、以下の条件に当てはまる人達を絞り込んで、CSV出力します。
- 20歳以下の人
- いちご好きの人
- アレルギーのある人
フロー
PowerAutomateでPowerBIのデータを自動取得するフローは、下記の通りです。
今回紹介するフローでは、フローを開始するトリガー
と、処理を行うアクション
を組み合わせています。
フロー編集画面からは、各処理のブロックをクリックして設定を確認・編集することができます。
Recurrence
PowerAutomateでは、トリガーを使ってフローを開始します。
スケジュール実行では、Recurrence
というトリガーを使用します。
このトリガーは、フローを一から作成する場合は、以下の赤枠のアイコンから使用可能です。
クリックすると、以下のような編集画面が開くので、お好みで設定を行ってください。
下の図は、「毎週1回 月曜日 10:00」に実行する設定です。
データセットに対してクエリを実行する
次は、データセットに対してクエリを実行する
というアクションを追加します。
アクションを追加するには、+
を押下して「アクションの追加」を表示します。
「アクションの追加」を押下すると追加可能なアクション一覧が表示されます。
この中からPowerBIコネクタ
のデータセットに対してクエリを実行する
を選択してください。
ワークスペース
とデータセット
から、入力するPowerBIレポートを選択します。
クエリテキスト
には、PowerBIのレポートからデータを絞り込むクエリを書きます。
クエリは、DAXクエリ
を使用します。
クエリには、レポートのテーブル名を使用します。テーブル名は、PowerBIレポートを編集画面で開いたときの下図赤枠部分です。
今回絞り込むクエリの書き方は、以下のようになります。
-
20歳以下の人
誕生日が20年前の日付以降の人
を絞り込みます。FILTER ( Sheet2, Sheet2[誕生日] >= EDATE(TODAY(), -240) )
EDATE(TODAY(), -240)
は、今日の日付から240ヶ月(20年)前の日付です。 -
いちご好きの人
好きな果物列がいちごの人
を絞り込みます。FILTER ( Sheet2, Sheet2[好きな果物] = "いちご" )
-
アレルギーのある人
アレルギー列が空白じゃない人
を絞り込みます。FILTER ( Sheet2, NOT( ISBLANK(Sheet2[アレルギー]) ) )
上記の条件を組み合わせて絞り込む場合は、&&
を使って複数の条件を結合します。
FILTER(Sheet2, Sheet2[誕生日] >= EDATE(TODAY(), -240) && Sheet2[好きな果物] = "いちご" && NOT(ISBLANK(Sheet2[アレルギー])))
選択
次は、選択
というアクションを追加します。
このアクションは、データ操作コネクタ
から使用可能です。
データ操作コネクタ
は、アクション一覧のランタイムを組み込み
で絞り込むと検索しやすいです。
From
には、絞り込んだ結果を指定します。
From選択時に表示される雷マーク
を押下すると、これより前のフローのデータ(変数)がブロック名ごとに表示されます。
ここから使用したい変数を選択可能です。
絞り込んだ結果を指定するには、1つ前のブロック=データセットに対してクエリを実行する
から、最初のテーブルの行
を選択します。
Map
には、キー
と値
を指定して、CSVファイルに出力するテーブルを作成します。
キー
は、自由に設定可能です。(元のレポートと違う列名にもできます。)
値
は、値選択時に表示されるfxマーク
から、手動で以下の関数を設定します。
item()?['テーブル名 [ 列名 ]']
追加直後は下図のようなfxの濃いピンク色の表示ですが、フロー保存後に表示が変わってPowerBIの黄色い表示になります。
CSVテーブルの作成
次は、CSVテーブルの作成
というアクションを追加します。
このアクションは、データ操作コネクタ
から使用可能です。
From
に、1つ前のブロック=選択
から、Output
を指定します。
ファイルの作成
次は、ファイルの作成
というアクションを追加します。
このアクションは、OneDrive for Businessコネクタ
から使用可能です。
フォルダーのパス
とファイル名
から、ファイルの出力先を選択します。
ファイルコンテンツ
は、1つ前のブロック=CSVテーブルの作成
から、Output
を選択します。
基本はこれでOKですが、データに日本語が含まれる場合は文字化けしてしまいます。
日本語を出力するには、fxマーク
から、以下のように関数を変更してください。(参照)
concat(decodeUriComponent('%EF%BB%BF'),body('CSV_テーブルの作成'))
出力ファイル
フローを実行すると、ファイルの作成
で指定した出力先に、以下のCSVファイルが作成されます。
期待通り、絞り込んだ結果をCSV出力できていることが確認できます。
以上で、PowerAutomateでPowerBIから最新のデータを取得するフローは完成です!
注意事項
PowerBIのレポートを使用する際の注意事項です。
セマンティックモデルを使用して作成されたレポートを2か月間表示しないと、スケジュールが一時停止されます。この機能はリソースの浪費を回避するための機能です。(参照)
スケジュールの停止を回避するためには、2か月に一度、レポートにアクセスしてください。
最後に
本記事では、PowerAutomateでPowerBIから最新のデータを取得する方法を紹介しました。
読んでくれた方のお役に立てれば幸いです!
最後まで読んでいただき、ありがとうございました。
最後になりますが、本記事の内容に誤りなどあれば、コメントにてご教授お願いいたします。