2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

TTDCAdvent Calendar 2024

Day 16

PowerAutomateでPowerBIのデータを自動取得

Last updated at Posted at 2024-12-15

本記事は「 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のレポートイメージは、下記の通りです。
sample_data.png

このデータを使って、以下の条件に当てはまる人達を絞り込んで、CSV出力します。

  • 20歳以下の人
  • いちご好きの人
  • アレルギーのある人

フロー

PowerAutomateでPowerBIのデータを自動取得するフローは、下記の通りです。
flowchart.png

今回紹介するフローでは、フローを開始するトリガーと、処理を行うアクションを組み合わせています。
フロー編集画面からは、各処理のブロックをクリックして設定を確認・編集することができます。

Recurrence

PowerAutomateでは、トリガーを使ってフローを開始します。
スケジュール実行では、Recurrenceというトリガーを使用します。
このトリガーは、フローを一から作成する場合は、以下の赤枠のアイコンから使用可能です。
recurrence1.png

クリックすると、以下のような編集画面が開くので、お好みで設定を行ってください。
下の図は、「毎週1回 月曜日 10:00」に実行する設定です。
recurrence2.png

データセットに対してクエリを実行する

次は、データセットに対してクエリを実行するというアクションを追加します。

アクションを追加するには、を押下して「アクションの追加」を表示します。
add_action.png

「アクションの追加」を押下すると追加可能なアクション一覧が表示されます。
add_action2.png
この中からPowerBIコネクタデータセットに対してクエリを実行するを選択してください。

クリックすると、以下のような編集画面が開きます。
powerbi1.png

ワークスペースデータセットから、入力するPowerBIレポートを選択します。

クエリテキストには、PowerBIのレポートからデータを絞り込むクエリを書きます。
クエリは、DAXクエリを使用します。
クエリには、レポートのテーブル名を使用します。テーブル名は、PowerBIレポートを編集画面で開いたときの下図赤枠部分です。
powerbi2.png

今回絞り込むクエリの書き方は、以下のようになります。

  • 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[アレルギー])))

選択

次は、選択というアクションを追加します。
このアクションは、データ操作コネクタから使用可能です。
データ操作コネクタは、アクション一覧のランタイムを組み込みで絞り込むと検索しやすいです。
select0.png

クリックすると、以下のような編集画面が開きます。
select1.png

Fromには、絞り込んだ結果を指定します。
From選択時に表示される雷マークを押下すると、これより前のフローのデータ(変数)がブロック名ごとに表示されます。
ここから使用したい変数を選択可能です。
絞り込んだ結果を指定するには、1つ前のブロック=データセットに対してクエリを実行するから、最初のテーブルの行を選択します。

Mapには、キーを指定して、CSVファイルに出力するテーブルを作成します。
キーは、自由に設定可能です。(元のレポートと違う列名にもできます。)
は、値選択時に表示されるfxマークから、手動で以下の関数を設定します。

item()?['テーブル名 [ 列名 ]']

select2.png

追加直後は下図のようなfxの濃いピンク色の表示ですが、フロー保存後に表示が変わってPowerBIの黄色い表示になります。
select3.png

CSVテーブルの作成

次は、CSVテーブルの作成というアクションを追加します。
このアクションは、データ操作コネクタから使用可能です。

クリックすると、以下のような編集画面が開きます。
csv.png

Fromに、1つ前のブロック=選択から、Outputを指定します。

ファイルの作成

次は、ファイルの作成というアクションを追加します。
このアクションは、OneDrive for Businessコネクタから使用可能です。

クリックすると、以下のような編集画面が開きます。
onedrive.png

フォルダーのパスファイル名から、ファイルの出力先を選択します。

ファイルコンテンツは、1つ前のブロック=CSVテーブルの作成から、Outputを選択します。

基本はこれでOKですが、データに日本語が含まれる場合は文字化けしてしまいます。
日本語を出力するには、fxマークから、以下のように関数を変更してください。(参照)

concat(decodeUriComponent('%EF%BB%BF'),body('CSV_テーブルの作成'))

出力ファイル

フローを実行すると、ファイルの作成で指定した出力先に、以下のCSVファイルが作成されます。
期待通り、絞り込んだ結果をCSV出力できていることが確認できます。
output.png

以上で、PowerAutomateでPowerBIから最新のデータを取得するフローは完成です!

注意事項

PowerBIのレポートを使用する際の注意事項です。
セマンティックモデルを使用して作成されたレポートを2か月間表示しないと、スケジュールが一時停止されます。この機能はリソースの浪費を回避するための機能です。(参照)
スケジュールの停止を回避するためには、2か月に一度、レポートにアクセスしてください。

最後に

本記事では、PowerAutomateでPowerBIから最新のデータを取得する方法を紹介しました。
読んでくれた方のお役に立てれば幸いです!

最後まで読んでいただき、ありがとうございました。
最後になりますが、本記事の内容に誤りなどあれば、コメントにてご教授お願いいたします。

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?