【Power BI】XMLAエンドポイントを利用してPower BIデータセットを更新する

こんにちは。今日はPower BIのデータセットを外部から更新する方法である、XMLAエンドポイント経由での更新を試してみたので、備忘メモを残しておきたいと思います。

XMLAエンドポイントを利用すると、データセット全体だけでなく、データセット中の特定のテーブルだけを更新、といった細かい更新を行うことができたりしますね。

なお、MicrosoftのPower BIサポートチームによるブログ記事が分かりやすかったので、大いに参考にさせていただきました。

https://jpbap-sqlbi.github.io/blog/powerbi/pbi_xmlaendpoint/

Contents

Power BI側の事前設定

前提条件

この機能は、以下のライセンスを利用したワークスペース上で利用可能です。

・Power BI Premium

・Premium Per User

・Power BI Embedded

管理ポータルからXMLAエンドポイントの「読み取り・書き込み」を許可する

はじめに、XMLAエンドポイントを利用した「書き込み」操作を許可するようにテナントの設定を変更します。(既定では、「読み取り」のみが許可された状態)

Power BI での XMLA エンドポイントを使用したデータセットの接続と管理 – Power BI | Microsoft Learn

ワークスペースの接続文字列を取得する

続けて、ワークスペースの設定から、ワークスペースの接続文字列を控えておきます。(必要なライセンスを利用したワークスペースでないとこの情報は表示されません)

以上で、事前準備は完了です。

次に、各種クライアントからのデータセット更新を試してみます。

SSMSを利用したデータセット更新

まず、GUIベースでデータセットの更新を操作する場合には、SSMS (SQL Server Management Studio)が利用できます。

Power BI での XMLA エンドポイントを使用したデータセットの接続と管理 – Power BI | Microsoft Learn

Server TypeをAnalysis Servicesにして、Server nameを先ほど取得したワークスペースの接続文字列を指定して接続することができます。

そうすると左側のメニューにデータセットの一覧が表示されます。

今回は、特定テーブルのみを更新する方法を試してみましたが、その場合適当なテーブルを右クリックしてProcess Tableを選択し、Scriptをクリックすると、データを更新するための構成スクリプトが得られます。

これをSSMSのクエリエディタから実行すると、特定テーブルのみを更新することができました。

*なお、XMLAエンドポイントの書き込み許可がない場合は、以下のようにエラーになります。

PowerShellを利用したデータセット更新

次に、PowerShellを利用したデータセット更新を試してみます。

PowerShellを利用する場合、従来のSQL Server Analysis Service用のコマンドレットを利用することになるようです。

最初に紹介したPower BIサポートチームのブログを参考に、以下コードを実行。

## SqlServerモジュールのインストール
Import-Module SqlServer

## 資格情報の構成
$Workspace = "powerbi://api.powerbi.com/v1.0/myorg/ワークスペース名"
$Database = "データセット名"

$PowerBILogin = "ユーザ名"
$PowerBIPassword = ConvertTo-SecureString "パスワード" -AsPlainText -Force

$Credential = New-Object System.Management.Automation.PSCredential ($PowerBILogin, $PowerBIPassword)

## データセットの更新(データセット全体を更新する場合)
Invoke-ProcessASDatabase -Server $Workspace -DatabaseName $Database -Credential $Credential -RefreshType Full

## データセットの更新(特定テーブルのみを更新する場合)
Invoke-ProcessTable -TableName "テーブル名" -RefreshType Full -Server $Workspace -DatabaseName $Database -Credential $Credential

データセットを更新したあと、Power BI Serviceからデータセットの更新履歴を確認すると、以下のようにXMLAエンドポイント経由で更新された旨が確認できました!

なお、PowerShellで実行できるということは、Azure FunctionsやAzure Automationなどを利用して定期的/もしくはイベントをトリガーにこのスクリプトを実行させるようなこともできそうですね。

*なお、XMLAエンドポイントの書き込み許可がない場合は、以下のようにエラーになります。

以上、Power BI XMLAエンドポイントを利用したデータセット更新を試してみたメモでした。

動作イメージ理解の助けになっていれば幸いです。

おしまい

この記事を気に入っていただけたらシェアをお願いします!

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

ABOUT US
Yuu113
初めまして。ゆうたろうと申します。 兵庫県出身、東京でシステムエンジニアをしております。現在は主にデータ分析、機械学習を活用してビジネスモデリングに取り組んでいます。 日々学んだことや経験したことを整理していきたいと思い、ブログを始めました。旅行、カメラ、IT技術、江戸文化が大好きですので、これらについても記事にしていきたいと思っています。