LuckyTemplates の DAX クエリ – 論理的および物理的なクエリ プラン

このチュートリアルでは、LuckyTemplates の 2 つの DAX クエリ プランについて説明します。

クエリ プランは、貴重なデータを生成する際の DAX のパフォーマンスに影響します。また、レポートをより説得力のあるものにするDAX コードの最適化にも役立ちます。

これらは、数式エンジンによって生成される 2 つのクエリ プランです。

  • 論理クエリプラン
  • 物理クエリプラン

すべての DAX クエリは、これら 2 つのイベントをトリガーします。

目次

LuckyTemplates の論理クエリ プラン

これは DAX クエリ フローです。この部分では、3 番目のステップである論理クエリ プラン ツリーの単純化に焦点を当てます。

LuckyTemplates の DAX クエリ – 論理的および物理的なクエリ プラン

このクエリは、DAX クエリに似ています。DAX クエリを実行すると、論理クエリ プランの実行内容とほぼ一致します。

説明のために、サンプル クエリを次に示します。

LuckyTemplates の DAX クエリ – 論理的および物理的なクエリ プラン

これを実行すると、29,138 という結果が得られます。

LuckyTemplates の DAX クエリ – 論理的および物理的なクエリ プラン

DAX Studio でクエリを実行し、[クエリ プラン イベント] タブをオンにすると、クエリ プランが表示されます。2 つのタイプのうち、論理クエリ プランが最初に表示されます。

LuckyTemplates の DAX クエリ – 論理的および物理的なクエリ プラン

インデントされた各行は、相互に構築されたサブタスクです。最初の行は、DAX の最終結果です。他の行は、FactSales の Quantity 列を合計してスキャンします。

コロンの前の最初の単語は演算子と呼ばれます。

LuckyTemplates の DAX クエリ – 論理的および物理的なクエリ プラン

コロンの後の単語は、演算子の種類と呼ばれます。

LuckyTemplates の DAX クエリ – 論理的および物理的なクエリ プラン

演算子の種類には次の 2 種類があります。

  • RelLogOp
  • スカログオプ

RelLogOp はテーブル出力です。DAX は VertiPaq を使用して列をスキャンし、テーブルを作成します。一方、ScaLogOpはスカラー出力です。これは集計された数値であることを意味します。クエリ プランの 2 番目と最後の行を見ると、FactSales の数量を合計して数量を取得していることがわかります。

論理クエリ プランは、FactSales テーブルからの数量の合計を含む Total Quantity という 1 行のテーブルを作成します。

クエリ プランは単純な DAX クエリを使用するため、デコードが容易です。DAX が複雑になるほど、デコードは難しくなります。

できるだけ多くの「_VertiPaq」演算子を確認するように努めることをお勧めします。これは、DAX コードの最適化に役立つすべての作業を単独で実行することを意味します。

LuckyTemplates の物理クエリ プラン

物理クエリ プランは、2 つのタイプのうち 2 番目に表示されます。これは、DAX クエリ フローの 4 番目のステップです。論理クエリ プランと同じツリー構造を持ちます。

論理クエリ プランが構築されると、実行されるために物理クエリ プランに送信されます。同じサンプル クエリを実行すると、同じ答えが得られます。

LuckyTemplates の DAX クエリ – 論理的および物理的なクエリ プラン

具体的には、DAX クエリ フローの 4 番目のステップは、物理クエリ プラン ツリーの構築です。

LuckyTemplates の DAX クエリ – 論理的および物理的なクエリ プラン

論理クエリ プランに似ているかもしれませんが、異なります。通常、物理的なクエリ プランをLuckyTemplatesの DAX クエリと一致させるのは困難ですが、これは単純なサンプル クエリであるため、プロセスに従うことができます。

物理クエリ プランの 3 つの演算子タイプは次のとおりです。

  • ルックアップPhyOp
  • InterPhyOp
  • スプールフィオプ

LookupPhyOp は、特定の行コンテキストでスカラー値を提供します。InterPhyOpは、テーブルのデータを行ごとに繰り返します。SpoolPhyOp はVertiPaq クエリから結果を受け取り、それを具体化してメモリに保存します。

クエリ プランの 4 行目には、クエリがストレージ エンジンに送信されることを意味する ProjectionSpool 演算子が表示されます。レコードの数に応じてクエリの結果を繰り返します。

クエリ プランに表示されるレコードの量は、回答を完了するために必要な最小限のレコードである必要があります。この単純なクエリの結果には 1 行しかないため、クエリ プランでは 1 つのレコードが返されます。

ProjectionSpool の SpoolPhyOp に対応するRecordsには、ストレージ エンジンから数式エンジンに送信されたデータの量が表示されます。したがって、レコードが多いほど、クエリは遅くなります。

DAX のパフォーマンスが遅い場合は、[レコード] 列から探し始めるとよいでしょう。



LuckyTemplates での DAX 計算:この新しいコースで DAX 関数を最適化するベスト プラクティス
LuckyTemplates DAX スキルを強化するための 5 つの戦略

結論

DAX クエリを実行すると、答えが得られるまでに一連の手順が実行されます。これらのステップのうちの 2 つは、論理クエリ プランと物理クエリ プランです。彼らは、計算に使用される式の段階的なプロセスと実行を担当します。

これらのクエリ プランについてさらに詳しく知りたい場合は、このチュートリアルを読んでから、DAX Studio を使用して実際に確認してみてください。

Leave a Comment

Power Automate の文字列関数: Substring と IndexOf

Power Automate の文字列関数: Substring と IndexOf

Microsoft フローで使用できる 2 つの複雑な Power Automate String 関数、substring 関数とindexOf 関数を簡単に学習します。

LuckyTemplates でビジュアル ツールチップを作成する

LuckyTemplates でビジュアル ツールチップを作成する

LuckyTemplates ツールチップを使用すると、より多くの情報を 1 つのレポート ページに圧縮できます。効果的な視覚化の手法を学ぶことができます。

Power Automate で HTTP 要求を行う

Power Automate で HTTP 要求を行う

Power Automate で HTTP 要求を作成し、データを受信する方法を学んでいます。

LuckyTemplates で日付テーブルを作成する方法

LuckyTemplates で日付テーブルを作成する方法

LuckyTemplates で簡単に日付テーブルを作成する方法について学びましょう。データの分析と視覚化のための効果的なツールとして活用できます。

2 つの方法による SharePoint 列の検証

2 つの方法による SharePoint 列の検証

SharePoint 列の検証の数式を使用して、ユーザーからの入力を制限および検証する方法を学びます。

SharePoint リストを Excel または CSV ファイルにエクスポート

SharePoint リストを Excel または CSV ファイルにエクスポート

SharePoint リストを Excel ファイルおよび CSV ファイルにエクスポートする方法を学び、さまざまな状況に最適なエクスポート方法を決定できるようにします。

Power Automate のオンプレミス データ ゲートウェイ

Power Automate のオンプレミス データ ゲートウェイ

ユーザーがコンピューターから離れているときに、オンプレミス データ ゲートウェイを使用して Power Automate がデスクトップ アプリケーションにアクセスできるようにする方法を説明します。

DAX 数式での LASTNONBLANK の使用

DAX 数式での LASTNONBLANK の使用

DAX 数式で LASTNONBLANK 関数を使用して、データ分析の深い洞察を得る方法を学びます。

CROSSJOIN 関数の使用方法 – LuckyTemplates および DAX チュートリアル

CROSSJOIN 関数の使用方法 – LuckyTemplates および DAX チュートリアル

LuckyTemplates で予算分析とレポートを実行しながら、CROSSJOIN 関数を使用して 2 つのデータ テーブルをバインドする方法を学びます。

TREATAS 関数を使用して LuckyTemplates で仮想リレーションシップを作成する

TREATAS 関数を使用して LuckyTemplates で仮想リレーションシップを作成する

このチュートリアルでは、LuckyTemplates TREATAS を使用して数式内に仮想リレーションシップを作成する方法を説明します。