はじめに
本記事はPower BI Premiumの機能を利用しています。
Power BI Premiumを導入する理由の一つになるので、Proユーザーもぜひご一読を😁
やりたいこと
増分更新を設定したDatasetをPower BI Serviceに公開したあと、初回更新はとても時間がかかりますよね
データをパーテーションに分けて(年ごと、四半期ごと、など)、データソースから全行スキャンしたうえでパーテーションごとにデータを格納する処理が重いためです。一度パーテーションごとのデータ格納が済んでしまえば、過去のデータは更新されず、指定したパーテーションだけが更新されるので更新時間はとても早くなる・・はずなのですが・・
データが多すぎると、初回のデータ更新が既定の制限時間内に終わらない! ことがあります。初回のデータ更新さえ終わってくれれば2回目以降は早いのに・・だけど、初回のデータ更新ができないと始まらない!
そんな状況を解決するためのひとつの方法です。
データセット更新時間の制限
データセット更新時間の制限は下記の通りです。
- Power BI Pro
- 2時間
- PPU/Premium
- 5時間
- XMLAエンドポイント経由の更新は時間無制限
XMLAエンドポイントの接続は制限時間無制限😊
Power BI Service上で更新ボタンを押した場合と違い、XMLAエンドポイント経由でデータセットの更新をした場合には制限時間はありません。5時間以上かかる更新にはこれを利用します。XMLAエンドポイント経由でアクセスすると、Premiumワークスペースやそのワークスペースに置いてあるデータセットには、SSMSやTabularEditorなどのツールを利用して直接さわることが可能です。ワークスペースがデータサーバーで、データセット一つ一つがデータベースです。
ワークスペース、データセットへのアクセス用文字列の取得方法
ワークスペースにアクセスするには、設定>Premium>ワークスペース接続にある接続文字列をコピーします。
データセットへのアクセスは、3点リーダーの設定>サーバー文字列の項目にいき、コピーします。
今回のケースでは
- Tabular Editorを使用してパーテーションの設定
- SSMSを使用して各パーテーションにデータを格納
までをXMLAエンドポイント経由で自力で行います💪
時間はもちろんかかりますが、制限時間はありません。大きなデータセットの初回更新を
Tabular Editor を使用したパーテーションの設定
SSMSを使用したパーテーションの設定もできますが、重複がないようにしたり、ひとつひとつ設定したりするのが非常にめんどうです。Tabular Editorを使用すれば一括で設定可能。
先ほど取得した接続文字列を使用して、ワークスペースやデータセットにアクセスし、増分更新をしたいテーブルで右クリックをし、「Apply refresh policy」 をクリックします。プロパティウィンドウで、増分更新の設定がされていることを確認しましょう。ここで任意の数値に設定も変えられます。
設定後にパーテーションを開くと、年や四半期ごとにパーテーションが自動で設定されていることを確認することができます。
ただこのままだとパーテーションは設定できましたが、肝心のデータはまだ入っていません。いま変更を加えたデータモデルを保存して、次はSSMSを開きます。
SSMSでデータをパーテーションに読み込む
SSMSでの接続はTabular Editorと同様で、サーバー接続用の文字列を入力するだけです。Power BIの裏側はAnalysis Servicesなので、サーバータイプを「Analysis Services」に変えるのを忘れずに😁
ターゲットのテーブルを右クリックするとPartitionsという項目が出てきます。こちらをクリックすると、先ほどTabular Editorで作成したパーテーションを確認することができます。
全てのパーテーションを選択して、OKを押せばデータ読込が開始します。あとは待つだけ😚
増分更新の対象テーブルをすべて更新すると、Power BI Serviceでの初回更新は行われず、指定したパーテーションのみの更新になります。
注意点
XMLAエンドポイント経由でいじったPBIXファイルはダウンロードすることができなくなります。
まとめ
増分更新をしないといけないシナリオは確実にありますが、その前にできることは要確認😉データモデルに不要な列はないの?そこまで過去のデータは必要なの?ダイレクトクエリじゃダメ?いろいろなやり方の中のひとつだということを意識しておこう💪
参考リンク