【Power BI】Alteryxを経由で全更新を行う方法
こんにちは!MJです。
Power BI サービスにアップロードされたレポートはセマンティックモデル(データセット)のリセットボタンで簡単にデータを更新できます。
また、セマンティックモデルの設定画面では望む時間に更新するスケジュール機能を提供されています。
しかし、増分更新を設定したレポートに関しては上の方法では増分更新期間以外のデータを更新することができません。
それでは、Power BI サービスに上がた増分更新設定されたレポートをAlteryx経由で全更新する方法についてご紹介します。
必要条件
Alteryxを使ってPower BIを更新するためにMicrosoftの rest APIを使います。
rest APIを使ってPower BIサービスのデータを更新するためには3つの条件があります。
- Power BI Premium以上のライセンスを持つアカウント
- 更新しようとするセマンティックモデル(データセット)が入っているワークスペースに「管理者、メンバー」権限としてアクセスできるユーザー
- Power BI サービスのデータセットにReadWrite権限を追加したMicrosoft Entraアプリ
Power BI Premium ライセンスを持っているかご注意お願いします。
2. ワークスペースにアクセス権限追加
ワークスペースのアクセス権限追加は画面右上にある「アクセスの管理」を選択します。
ワークスペースを作成したユーザーは基本的に管理者として設定されています。
3. Azure Portalでアプリ登録
Azure PortalにMicrosoftアカウントでログインします。
Microsoft Entra IDを選択し、アプリ作成画面に移動します。
「管理>アプリの登録」に移動し、上段の「新規登録」を選択してアプリを作成します。
アプリを作成する時、必要情報を入力します。
- 名前:アプリケーションの名前を設定します。
- サポートされているアカウントの種類:アプリを利用するアカウントのタイプを選択します。
- リダイレクトURL:必要に応じてURLを入力します。
下にある「登録」ボタンをクリックしアプリケーションを作成します。
アプリケーションの「概要」画面ではアプリケーションのID(クライアントID)が取得できます。
後で使いますのでメモ帳にコピーし、保存してください。
次に「証明書とシークレット」ページで新しいクライアントシークレットを作成します。
「新しいクライアントシークレット」をクリックして説明と有効期限を設定し、追加します。
注意
シークレットは一回ページを移動したら値が隠れますのでメモ帳にコピーして保存してください。
引き続きAPIのアクセス許可を設定します。
左のメニューから「APIのアクセス許可」ページに移動します。そして、「アクセス許可の追加」を選択します。
右側に出てくるAPIリストから「Power BI Service」を選択します。
次に「委任されたアクセス許可」をクリックします。
APIでPower BIのデータセットを更新するために「Dataset.ReadWrite.All」を選択し、下にある「アクセス許可の追加」ボタンをクリックします。
「状態」列に何も表示されない場合組織の管理者からアクセス許可承認が必要です。
下にある「エンタープライズアプリケーション」青い文字をクリックし、ページを移動します。
青いボタンの「~に管理者の同意を与えます」をクリックします。
承認権限がないユーザーだと左の画面がでます。
承認権限がある組織の管理者だと右の画面がでますので承諾を選択します。
そうすると、「状態」列にチェックマークが表示されます。
Alteryxでデータ更新WF作成
Microsoftの設定が終わったらAlteryxを使ってrest APIを呼び出すWFを作成します。
作成するWFは2つに分けられます。
- MicrosoftのOauth 2.0を利用してアクセストークン発行するWF
- 全更新 APIを実行するWF
1. アクセストークンを発行するWF作成
トークンを発行するために必要なデータは下記となります。
ここにあるclient_idとclient_secretは先ほど作成したAzure Portalで作成したアプリケーションのクライアントID、クライアントシークレットを入力してください。
そして、usernameとpasswordにはPower BI Premiumライセンスを持っているし、更新対象のワークスペースに「管理者、メンバー」としてアクセス権限があるアカウントの情報を入力します。
用意した情報をダウンロードツールを利用して「アクセストークン」を発行します。
2. 全更新APIを実行するWF作成
まず、更新するデータセットの設定画面のURLからグループIDとデータセットIDを取得します。
テキスト入力ツールに全更新を行うデータセットのグループID、データセットIDをPower BI APIに入れます。
body列には
{
"type" : "full",
"applyRefreshPolicy" : "false"
}
オプションを追加して増分更新が設定されていることを無効化します。
発行したトークンの先頭に"Bearer"をつけてAuthorizationヘッダーを指定します。
テキスト入力ツールに入れたbodyを「フィールドからクエリ文字列/本文を取得する」に設定します。
問題なく実行できたら、202コードが表示され、PowerBIサービスのデータセットが更新されます。
このようにデータセットの更新履歴をみると「拡張 API経由」が記載され更新が行いました。
結果としては4ヶ月増分更新設定したレポートが全データ更新できました。
※この記事はAlteryx Designer 2023.1.1.361 時点、Power BI Desktop 2024年3月バージョンで作成しました。