Power BI Premium / Power BI Embedded のワークスペースでは、XMLA エンドポイントを使用して、ワークスペースの操作を行うことができます。
XMLA は、XML for Analysis の略となり、Analysis Services の操作を行う際に使用されているプロトコルとなります。
XMLA エンドポイントを使用することで、SSAS を操作するためのツールを使用して、Power BI の操作を行うことができるようになり、
- SSMS による Power BI ワークスペースへの接続 / 操作
- TMSL (Tabular Model Scripting Language) を使用したデータセットの操作
- Visual Studio / SSDT の Analysis Services Project を使用した、データモデリングと配置
等の作業を行うことができるようになります。
他にも データセットの更新 に書かれているような、データセットの内容の更新時に次のようなメリットがあります。
XMLA エンドポイントにより、SSMS、PowerShell による自動化、Azure Automation、TOM を使用する Azure Functions を使用した、きめ細かい更新機能を実現するための広範なシナリオが可能になります。 たとえば、すべての履歴データを再読み込みしなくても、特定の増分更新履歴パーティションを更新できます。
Power BI サービスで更新を構成するのと異なり、XMLA エンドポイントを介した更新操作は、1 日 48 回の更新に制限されず、スケジュールされた更新のタイムアウトも課されません。
XMLA エンドポイントを使用したデータ更新のメリットについては、データセットの増分更新とリアルタイム データ にも記載があります。
先日、XMLA エンドポイントを使用した Power BI の操作方法を調査する機会があったのですが、その際に調べた内容を遺していなかったので、本投稿でまとめておきたいと思います。
XMLA エンドポイントを使用した接続
XMLA エンドポイントをサポートしているワークスペースでは、ワークスペースの設定から「ワークスペース接続」の情報を確認することができます。
接続先の情報については Premium ワークスペースに接続する に記載されていますが、同じテナントのユーザーであれば、接続文字列のテナントの情報は myorg に置き換えて接続をすることができます。
確認した接続先の情報は、SSMS の接続先サーバー / Analysis Services プロジェクトのプロジェクトの配置先サーバーとして使用することができ、各ツールから接続を行うことができます。
Invoke-ASCmd の Server としても指定することができ、コマンドレット経由での操作もできるようになっています。コマンドレットによる操作では、資格情報を指定する必要がありますが、使用する資格情報については、サービス プリンシパルを使用して Premium ワークスペースとデータセットのタスクを自動化する で解説が行われており、Azure AD のサービスプリンシパルを使用することができます
Invoke-ASCmd で、対話型の認証は正常に実行できるが、サービスプリンシパルを使用したコマンド実行がうまくできない場合は、SqlServer モジュール のバージョンが古い可能性があるため、モジュールのアップグレードを実施してみるとよいかと思います。
TMSL を使用したデータセット等の定義
SSMS で XMLA エンドポイントに接続を行い、XMLA クエリを開くと、TMSL を使用してワークスペース内にデータセット等を作成することができます。
TMSL については、Tabular Model Scripting Language (TMSL) のリファレンス に記載されており、次のような JSON を記述して実行を行います。以下のような TMSL であれば、データベースの作成により、Power BI にデータセットが作成されます。
TMSL ですが手で書くこともできますが、次のような手順で、既に存在するオブジェクトをスクリプト化することができます。
- Analysis Services Project でテンプレートとなるデータモデルを作成して配置 (デプロイ) または、Power BI デスクトップでサンプルを作成して Power BI へ発行
- SSMS XMLA エンドポイントに接続して、配置したデータセットをスクリプト化
パーティションの処理についてもスクリプトを作成することができます。
XMLA エンドポイントの活用については XMLA エンドポイントを使用した高度な増分更新およびリアルタイム データ なども確認する必要があるかと思います。
XMLA エンドポイントは、Power BI を使用して Analysis Services (SSAS) を学習するという観点でも活用できるかもしれませんね。
XMLA エンドポイントを使用して、Power BI で使用するデータセットを作成していく流れについては、Analysis Services チュートリアル も参考になりますので、こちらも合わせて確認をしておくとよさそうです。