Edited at

Power BI REST API を使ってデータセットの更新を仕掛ける

手早く実現できるので Microsoft Flow のカスタムコネクタを使うけれども、手順は一緒なので、Logic Apps でも構わない。で、Microsoft Flow には Power BI サービスをサポートする標準コネクタはあるのだけど、用意されていないほかのことをしたいのです。なければ作ればいいじゃない。


そもそも標準コネクタは?

Power BI (Preview) - Connectors | Microsoft Docs

いつまでプレビューなのでしょう。長いですね。そのままかも。


用意されている Action と Triggers

テンプレートから用意されているからさほどは困らないけれども。

テンプレートの閲覧 | Microsoft Flow

Action : Add rows to a dataset (AddRows)

データセットに行を追加するってことなんだけど、そもそもデータセットがサポートしていなければならないから、ストリーミングデータセットにデータを送り込むときに使っている感じでしょうか。

サポートするデータセットについては以前にポストした。

Power BI REST API を使って Push をサポートするデータセットを作成

Triggers : When a data driven alert is triggered (CheckAlertStatus)

Power BI サービスで設定したデータ アラートを検知してメールを送信したり。

Microsoft Flow と Power BI


データセットの更新がしたかった

こんな感じのことをしようかと。



データセットのリフレッシュがしたかったのです。更新のスケジュールは Power BI サービスで設定できるのだけど、別の契機で更新させたいなと。ならば、カスタムコネクタ。

制限

先に越えられない制限は更新の回数。データセットごとに限界値があって 8 回/日 ないし 48 回/日で後者は Premium キャパシティ。スケジュールされた更新の回数に含まれ、8 or 48 の限界値を超えるものではない。


情報

最初はいろいろとやることや知ることがあり。


Power BI REST API

Power BI の開発者向け機能 - Power BI | Microsoft Docs

オートメーションに使用できるAPIなのだけど、標準コネクタではその一部(AddRows)で使われているのです。Power BI REST API にはもっと多くの Action が用意されているのでそれを使いたいなと。


Action

Power BI REST APIs - Power BI REST API | Microsoft Docs

眺めているだけでもたくさんのことができるというのがわかる。で、いくつかを使うことにする。


Group

まずはアプリのワークスペースからの情報を


Groups - Get Groups

Groups - Get Groups (Power BI REST APIs) | Microsoft Docs

参加しているアプリのワークスペースに関する情報を GET する

必要なAPIのアクセス許可 : Workspace.Read.All or Workspace.ReadWrite.All

アプリのワークスペースを参照できればよいので、"Workspace.Read.All" で事足りる。Query パラメータも使えるけどこれも今回では使わない。


HTTP

GET https://api.powerbi.com/v1.0/myorg/groups

GET https://api.powerbi.com/v1.0/myorg/groups?$filter={$filter}&$top={$top}&$skip={$skip}

Admin - Groups GetGroupsAsAdmin (Power BI REST APIs) | Microsoft Docs ってのがあるけど、これは Office 365 全体管理者 もしくは Power BI サービス管理者 の権限が必要でまさしく管理用途なのでこれは使わない。


Datasets

つづいて アプリのワークスペースに配置されたデータセットについて


Datasets - Get Datasets In Group

Datasets - Get Datasets In Group (Power BI REST APIs) | Microsoft Docs

必要なAPIのアクセス許可 : Dataset.ReadWrite.All or Dataset.Read.All


HTTP

GET https://api.powerbi.com/v1.0/myorg/groups/{groupId}/datasets


アプリのワークスペースを特定できる groupId が必須。Get Groups で取得した結果を使う感じで。


Datasets - Refresh Dataset In Group

Datasets - Refresh Dataset In Group (Power BI REST APIs) | Microsoft Docs

アプリのワークスペースに配置されたデータセットをRefresh

必要なAPIのアクセス許可 : Dataset.ReadWrite.All


HTTP

POST https://api.powerbi.com/v1.0/myorg/groups/{groupId}/datasets/{datasetKey}/refreshes


アプリのワークスペースを特定する groupId と データセットと特定する datasetKey が必須。

結果をお知らせするオプションを Request Body で POST


RefreshRequest

{

"notifyOption": "MailOnFailure"
}

オプションには、NoNotification / MailOnCompletion / MailOnFailure が用意されているので適宜。


ひと通り動作まで


アプリの登録

ともかくこれが必要です。アプリの登録 - Azure Active Directory 管理センター で構成してもよいのだけど手間がかからなさそうなツールを使う。

Power BI Development Center - App Registration Tool もしくは Onboarding Embed Tool で。





Application Name : (お好きな名前で)

Home Page URL : (必要な情報などが配置されているところなど)



STEP 2 で カスタムコネクタ作成に必要な Client Id と Client secret を取得できる。メモしたら終了でよい。


カスタムコネクタの作成


1.全般



スキーマ : HTTPS

ホスト : api.powerbi.com

ベースURL : /


2.セキュリティ



認証タイプ:OAuth 2.0



ID プロバイダー : Azure Active Directory

Client id : (アプリ登録で取得したもの)

Client secret : (アプリ登録で取得したもの)

Resource URL : https://analysis.windows.net/powerbi/api

リダイレクトURL : カスタムコネクタを保存すると発行される



既に作成されているアプリの[認証]-[リダイレクト URI] を発行されたリダイレクトURLに変更してアプリを更新


GetGroup


3.定義 - GetGroup


全般



表示 : internal


要求



[サンプルからインポート]押下



動詞 : GET

URL : https://api.powerbi.com/v1.0/myorg/groups


4.テスト - GetGroup


接続



[新しい接続]押下


操作



[テスト操作]押下


応答



応答ボディをコピー


3.定義 - GetGroup


応答





[サンプルからインポート]押下



テストでコピーした応答ボディをペースト [インポート]押下


GetDatasetsInGroup


3.定義 - GetDatasetsInGroup


全般



表示 : internal


要求



[サンプルからインポート]押下



動詞 : GET

URL : https://api.powerbi.com/v1.0/myorg/groups/{groupId}/datasets


要求 - パス




4.テスト - GetDatasetsInGroup


操作


応答


3.定義 - GetDatasetsInGroup


応答






RefreshDatasetInGroup


3.定義 - RefreshDatasetInGroup


全般


要求




要求 - パス - groupId


要求 - パス - groupId - パラメーター


要求 - パス - datasetKey


要求 - パス - datasetKey - パラメーター


要求 - 本文 - body


要求 - 本文 - body - スキーマのプロパティ


試す














その他