増分更新の概要と設定方法

Published: feedback 共有

こんにちは、Power BI サポート チームの丸山です。

データソースのデータ量が多く、さらに定期的に増加していくという場合、全量を毎回データセットに取り込んで更新をするのはとても重い処理になります。そのようなときには、解決策の1つとしてこの増分更新の機能が貴社シナリオに合うかご検討いただければと存じます。本記事では増分更新の概要と設定方法についてご紹介します。

重要

本記事は弊社公式ドキュメントの公開情報を元に構成しておりますが、本記事編集時点と実際の機能に相違がある場合がございます。

最新情報につきましては、参考情報として記載しておりますドキュメントをご確認ください。


目次


  1. 増分更新とは?
  2. 増分更新の条件
  3. 設定方法
  4. 留意点


増分更新とは?


データセットの更新時に、データソースの全量ではなく新規および変更のあった行のみを更新します。
Power BI Desktop にて数ステップで設定をすることができて、Power BI サービスに発行がされるとこれらのポリシーが自動的に更新時に適用されます。増分更新の主なメリットは以下です。

  • 更新が高速化される - データソース内の変更された最新データのみでデータセットの更新をします。
  • リソースの使用が減る - 更新するデータが少ないため、Power BI とデータソースの両方のメモリや他のリソースの全体的な使用が減少します。
  • 更新の信頼性が高くなる - データソースに対するクエリはより高速に実行され、データソースへの接続が短時間になり、ネットワークの問題が起こり得る可能性が減少します。
  • 頻繁に変更されるデータの更新サイクルが少なくなる – DirectQuery モードを使用すると、高い更新頻度を必要とせずにクエリが処理されるため、最新のデータ更新内容が取得されます。


増分更新の条件


  1. 日付列
    増分更新を行なうテーブルには、日付/時刻の日付列が含まれている必要があります。RangeStart および RangeEnd というパラメーター (日付/時刻データ型である必要があります) を作成し、その日付列に基づいてテーブルデータをフィルター処理し、増分更新を行ないます。

  2. クエリフォールディング(※)
    増分更新は、クエリ フォールディングをサポートするデータソース用に設計されています。そのため、クエリフォールディングをサポートしていないデータソース(フラットファイル、BLOB、一部の Web フィードなどのデータ ソース)においては、増分更新の処理自体は可能な場合がありますが、クエリフォールディングによるパフォーマンス改善はございません。

(※)クエリフォールディングとは
主に SQL を理解できるデータソース(SQL Server や Office Access などリレーショナルデータベース)をご利用頂くとき、クエリをデータソースに発行することにより、データソース側にクエリ処理を任せることができる機能となります。この機能を使うと、データベース側でクエリが実行されるため、Power BI(PowerQuery)はその結果を取得する動きとなり、Power BI(PowerQuery)上で処理をするよりもパフォーマンスが向上する可能性が高まります。

参考情報:Power BI でのデータセットの増分更新とリアルタイム データ - Power BI | Microsoft Learn



設定方法


1. Power Query エディターで2つのパラメーターを作成します。

Power Query エディタ > [パラメーターの管理] > [新しいパラメーター] > それぞれの欄を入力して [OK]



2. 同じく Power Query エディターでカスタムフィルターを設定します。

① フィルター処理する日付列のフィルターアイコン > [日付/時刻フィルター] > [カスタム フィルター]


② [行のフィルター] を以下のパターンで設定します。

1つ目の条件 = “次より後”  (RangeStart)
2つ目の条件 = “次の値以前” (RangeEnd)
or
1つ目の条件 = “次の値以降” (RangeStart)
2つ目の条件 = “次より前”  (RangeEnd)


※下図のように右側の [連動したステップ] の欄で「フィルターされた行」を確認すると、設定した内容で式が生成されているのを確認できます。


③ Power Query エディターを [閉じて適用] します。

3. 対象テーブルに増分更新ポリシーを設定します。

① テーブルを右クリック > [増分更新]


② 以下のようにお客様のシナリオどおりの値を設定します。
「アーカイブの開始」とは、どれくらいのデータを保持するかの指定で、「増分更新データを開始する」は、どれくらいの期間を定期更新するかの指定です。

※「3.オプション設定」の詳細は後述

③ Power BI サービスに発行してスケジュール更新を設定すれば、増分更新ポリシーに基づき更新がされるようになります。

上記設定の例では 2022/10/15 までのデータに対して増分更新期間を7日間と指定しています。
これをもとに増分更新がされたときのイメージを以下にご案内します。

<更新前>


<以下のデータソースの内容で、10/22にデータセット更新がされた場合>
データソースが以下左図のように変更がされた状態でデータセットが増分更新されると、増分更新の期間(赤枠)のみが更新され、増分更新より前の期間(緑枠)は更新がされていないことがわかります。


以上が増分更新の設定と動きのイメージです。
次に、設定時の 「3. オプション設定の選択」 の3つについて以下に詳細をご説明します。


[DirectQuery で最新データをリアルタイムで取得します (Premium のみ)]

これを有効にした場合、増分更新が行われた更新日より後の日付/時刻のデータがあったとき、次の更新タイミングを待つことなく DirectQuery を使用して最新状態をレポートに取得表示することができます。


[完了期間のみを更新]

これを有効にした場合、完全に完了している日付までのデータが更新操作に含められます。たとえば、スケジュール更新の設定が毎朝8時だとして、午前0時から午前8時までの8時間の間にデータ ソースに新しいデータ行が出現した場合、それらを含めないで前日分までの更新をしたい場合に使用できます(タイムゾーンはスケジュール更新で設定されているタイムゾーン)

※この設定は、[DirectQuery で最新データをリアルタイムで取得します (Premium のみ)] の設定を有効にすると固定でオンになります。


上記画像を例にすると、当設定を有効にしたことで、増分更新の期間終了日が 当日10/22 から1日戻った 10/21 に変わっており、実際の更新されたデータを見ても、10/21 までのデータしか取り込まれておりません。


[データ変更の検出]

この設定を有効にすると、当欄で指定した日付/時刻の列の最大値が、増分範囲の各期間のなかで変更されたデータのみ更新をします。この列は、RangeStart および RangeEnd パラメーターでデータをパーティション分割するために使用される列と同じ列にすることはできません。前回の更新以降に変更されていない場合、現在の期間は更新されません。


Premium 容量に発行されたデータセットの場合は、カスタム クエリを指定することもできます。 詳細については、Power BI での XMLA エンドポイントを使用した高度な増分更新およびリアルタイム データ - Power BI | Microsoft Learn をご参照ください。



留意点


・増分更新を設定したデータセットでも、Power BI サービスでの初回更新は全量をインポートするため時間がかかります。
・増分更新を設定したデータセットは、Power BI サービスから pbix ファイルとしてダウンロードができないため、元のpbix ファイルは別途保存をしておくことを推奨いたします。


以上となります。
留意点にもあるとおり、増分更新を設定したとしても初回には全量を取得する重い更新処理が走り、さらにいうと増分を検知するための列は必然的に高いカーディナリティとなります。そのため、本当に必要なデータ期間はどれくらいか、増分を検知する列の「時・分」はある程度丸められるかなど、データのあり方も含めた1つの解決策としてご検討ください。
いずれの設定にしてもお客様の環境とデータで検証をして、要望を満たしていることを確認しながら本番でご活用いただけますと幸いでございます。


参考情報:

以上、本ブログが少しでも皆様のお役に立てますと幸いでございます。


アンケートご協力のお願い
Japan CSS Support Power BI Blog では、作成する記事やブログの品質向上を目的に、匿名回答でのアンケートを実施しております。
ユーザー様のご意見・ご要望を参考に今後もお役に立てるブログを目指してまいりますので、ぜひご協力いただけますと幸いでございます。 

※ 所要時間は1分程度となります。
【ご協力のお願い】Microsoft Japan CSS Power BI Blog ご利用に関するアンケート

※本情報の内容(添付文書、リンク先などを含む)は、作成日時点でのものであり、予告なく変更される場合があります。