
Power Automateで Power BIサービスからpbixファイル エクスポートを自動化する
はじめに
分析屋の渡邊です。
定期的に更新されるPowrBIレポートの最新版を自動的にダウンロードし、分析またはバックアップしたいケースがありますよね。
今回はPower Automateを使って、Power BI REST API経由でPowerBIサービスのpbixファイルを自動取得する方法をご紹介します。

1. サービスプリンシパルの作成
Power AutomateからPowerBI REST APIリクエスト時の認証情報として使用するためのサービスプリンシパルオブジェクトを作成します。サービスプリンシパルはアプリ登録でMicrosoft Entra IDと統合することで自動的に作成されます。
Azureにログインし、ホーム画面の上部検索窓で「アプリの登録」と入力し、選択します。

新規登録を押下し、名前を入力し、登録ボタンを押下します。

アプリケーションIDとテナントIDは後ほど使用しますのでメモしておきます。(後から確認もできます)
「証明書とシークレット」を押下します。

「新しいクライアントシークレット」を選択し説明を入力して追加を押下します。

シークレット値はAPIリクエスト時の認証情報で使用しますのでメモしておきます。

2. PowerBIのテナント管理設定
PowerBIでサービスプリンシパルを使用してREST APIを実行するためにはPowerBIサービスの「設定」ボタンから「管理ポータル」に遷移し「テナント設定」の開発者設定セクションの「サービスプリンシパルはFabric APIを使用できます」の項目を有効化する必要があります。(管理者権限が必要です。今回は組織全体で有効にしていますが、セキュリティグループを作成して特定のセキュリティグループに対して有効化することができます)


3. ワークスペースにサービスプリンシパルを追加する
PowerBIサービスで、ダウンロードするpbixが格納されているワークスペースのワークスペースアクセスを選択する

1. で登録したサービスプリンシパルをメンバーに管理者として追加します。


4. PowerAutomateでフローを作成する
新規でフローを作成します。
今回は手動でトリガーを作成します。
アクションの追加で「HTTP」を選択します。

ワークスペースからpbixファイルを取得するAPIはExpoert Report in Groupを使用します。このAPIはマイワークスペースは対象外です。マイワークスペースにあるpbixファイルを取得する場合はExport Reportを使用します。
今回はExpoert Report in Groupを使用します。サービスプリンシパルを利用する場合はスコープの設定は不要です。
●URI:https://api.powerbi.com/v1.0/myorg/groups/{groupId}/reports/{reportId}/Export
※{groupId}、{reportId}はダウンロードするpbixファイルをPowreBIサービスで開いた際のアドレスバーから確認できます。

Method:GET
認証の種類:Active Directory OAuth
Tenant:1.のアプリの登録で確認したテナントID
Audience:https://analysis.windows.net/powerbi/api
Client ID:1.のアプリの登録で確認したクライアントID
資格情報の種類:シークレット
Secret:1.のアプリ登録で確認したシークレット値(シークレットIDではありません)

いったん保存してテストします。
テストが成功したら、HTTPアクションの出力結果をalt+選択を押下するとresponseのjsonファイルがローカルにダウンロードできますので必要であれば内容を確認します。

APIからのresponseはjson形式なので、後続のアクションでresponseのbody部を取得してpbixファイルに変換し、OneDriveに格納します。
Power Automateでアクションを追加します。
OneDriveを検索し、「ファイルの作成」アクションを追加します。

フォルダーのパスでOneDrive上のpbixファイルを格納するフォルダを指定します。

ファイル名には関数で「ダウンロード日(yyyyMMdd)report.pbix」を指定します。(お好きなファイル名を指定してください)
関数:concat(formatDateTime(utcNow(),'yyyyMMdd','ja-jp'),'report.pbix')

ファイルコンテンツには前のステップHTTPの出力からBody部を取得するように指定します。


設定が完了したら保存してテスト実行します。
処理が成功したら、指定したOneDriveのフォルダにyyyyMMddreport.pbixのファイルが作成されます。

pbixファイルを開くとレポートが表示されます。

まとめ
Power AutomateでPowerBI REST API経由でPowerBIサービスのワークスペースからpbixファイルをエクスポートし、OneDriveに格納する手順をご紹介しました。
Power AutomateにはPowerBIサービスのコネクタが順次追加されていますが、pbixファイルのエクスポートのコネクタは2024年6月時点では無いようでした。(PPTX、PDF、PNG形式のファイルエクスポートは可能)
PowerAutomateでPowrBIサービス系の作業自動化を検討する場合はコネクタがあるかどうかまず最初に確認するとよいと思います。
ここまでお読みいただき、ありがとうございました!
この記事が少しでも参考になりましたら「スキ」を押していただけると幸いです!
分析屋ではBIを使ったデータ可視化に関するサービスサイトもございます。Power BIに関するお困りごとがございましたらお気軽にお問い合わせください。
株式会社分析屋について
弊社が作成を行いました分析レポートを、鎌倉市観光協会様HPに掲載いただきました。
ホームページはこちら。
noteでの会社紹介記事はこちら。
【データ分析で日本を豊かに】
分析屋はシステム分野・ライフサイエンス分野・マーケティング分野の知見を生かし、多種多様な分野の企業様のデータ分析のご支援をさせていただいております。 「あなたの問題解決をする」をモットーに、お客様の抱える課題にあわせた解析・分析手法を用いて、問題解決へのお手伝いをいたします!
【マーケティング】
マーケティング戦略上の目的に向けて、各種のデータ統合及び加工ならびにPDCAサイクル運用全般を支援や高度なデータ分析技術により複雑な課題解決に向けての分析サービスを提供いたします。
【システム】
アプリケーション開発やデータベース構築、WEBサイト構築、運用保守業務などお客様の問題やご要望に沿ってご支援いたします。
【ライフサイエンス】
機械学習や各種アルゴリズムなどの解析アルゴリズム開発サービスを提供いたします。過去には医療系のバイタルデータを扱った解析が主でしたが、今後はそれらで培った経験・技術を工業など他の分野の企業様の問題解決にも役立てていく方針です。
【SES】
SESサービスも行っております。