Power BI Desktop でのクエリ フォールディングのガイダンス

この記事では、Power BI Desktop でモデルを開発しているデータ モデラーを対象としています。 Power Query のクエリ フォールディングを実現する場合と方法について、ベスト プラクティスのガイダンスを提供します。

"クエリ フォールディング" は、ソース データを取得して変換する単一のクエリ ステートメントを Power Query クエリで生成する機能です。 詳細については、「Power Query のクエリ フォールディング」を参照してください。

ガイダンス

クエリ フォールディングのガイダンスは、モデル モードによって異なります。

DirectQuery テーブルとデュアル ストレージ モードのテーブルの場合、Power Query クエリでクエリ フォールディングが実現される必要があります。

インポート テーブルの場合は、クエリ フォールディングを実現できる可能性があります。 クエリがリレーショナル ソースに基づいていて、単一の SELECT ステートメントを作成できる場合は、クエリ フォールディングを確実に発生させるようにすることで、"データ更新の最高のパフォーマンス" を達成できます。 変換を処理するために Power Query マッシュアップ エンジンが引き続き必要な場合は、特に大規模なセマンティック モデルの場合に必要な作業を最小限に抑えるように努める必要があります。

次の箇条書きは、具体的なガイダンスを示しています。

  • 可能な限り多くの処理をデータ ソースに委任する: Power Query クエリのすべてのステップを折りたたむことができない場合、クエリ フォールディングを阻止しているステップを探します。 可能な場合、それらがクエリ フォールディングに含まれるように、その後のステップをシーケンスの前の段階に移動します。 Power Query マッシュアップ エンジンは、ソース クエリの生成時にクエリ ステップの順序を変更できる十分なスマートさを備えています。

    リレーショナル データ ソースについては、クエリ フォールディングを阻止するステップを単一の SELECT ステートメントまたはストアド プロシージャの手続き型ロジック内で実現できる場合、次に説明するように、ネイティブ SQL クエリの使用を検討します。

  • ネイティブ SQL クエリを使用する: Power Query クエリがリレーショナル ソースからデータを取得すると、一部のソースでネイティブ SQL クエリを使用することができます。 実際、クエリは、ストアド プロシージャの実行を含む任意の有効なステートメントにすることができます。 ステートメントによって複数の結果セットが生成される場合、最初の結果セットのみが返されます。 ステートメントではパラメーターを宣言できます。M 関数 Value.NativeQuery を使用することをお勧めします。 この関数は、パラメーター値を安全かつ便利に渡すように設計されています。 Power Query マッシュアップ エンジンではその後のクエリ ステップを折りたためないことを理解することが重要です。したがって、すべて (または可能な限り多く) の変換ロジックをネイティブ クエリ ステートメントに含める必要があります。

    ネイティブ SQL クエリを使用する場合は、次の 2 つの重要な考慮事項に配慮する必要があります。

    • DirectQuery モデル テーブルの場合、クエリは SELECT ステートメントである必要があり、共通テーブル式 (CTE) またはストアド プロシージャを使用することはできません。
    • 増分更新では、ネイティブ SQL クエリは使用できません。 そのため、Power Query マッシュアップ エンジンですべてのソース行を取得させてから、フィルターを適用して増分変更を決定します。

    重要

    ネイティブ SQL クエリは、データの取得以外の機能も実行できる場合があります。 任意の有効なステートメントを実行できます (場合によっては複数回)。たとえば、データを変更するステートメントや削除するステートメントなどがあります。 最小特権の原則を適用して、データベースへのアクセスに使用されるアカウントが、必要なデータに対する読み取りアクセス許可のみを持つようにすることが重要です。

  • データの準備と変換をソースで行う: Power Query の特定のクエリ ステップを折りたためないことがわかったら、データ ソースで変換を適用できる可能性があります。 変換は、ソース データを論理的に変換するデータベース ビューを作成することによって実現できます。 または、Power BI でクエリを実行する前に、データを物理的に準備して具体化することでも実現できます。 リレーショナル データ ウェアハウスは準備されたデータの好例で、通常、事前に統合された組織データのソースで構成されます。

この記事に関する詳細については、次のリソースを参照してください。