DAX クエリのイテレータとコンテキスト遷移

DAX クエリのイテレータとコンテキスト遷移

このチュートリアルでは、コンテキスト遷移とネストされたイテレータについて説明します。これらのエンティティの重要性と、それらが最適化の優れたソースとなり得る方法を学びます。

思い出してください。コンテキストの遷移は、行コンテキストが同等のフィルター コンテキストに変化するときに発生します。反復子でコンテキスト遷移が発生すると、生成される結果が遅くなることがよくあるため、何が起こっているのかを認識する必要があります。

目次

ネストされたイテレータと CALCULATE

反復中にコンテキスト遷移が呼び出される場合、実体化テーブルが作成されます。これは、コンテキスト遷移が DAX の数式を介して呼び出されることを意味します。テーブルは、数式エンジンに送信される非圧縮データです。

例として、最初のメジャーは、500 以上の場合に現在の価格を取得する大規模販売のメジャーです。

DAX クエリのイテレータとコンテキスト遷移

次の尺度は、ネストされたイテレータを使用した Big Sales の平均です。

DAX クエリのイテレータとコンテキスト遷移

最後のメジャーは、ネストされたイテレータと CallBackDataID を含まない Big Sales の平均を取得します。

DAX クエリのイテレータとコンテキスト遷移

ネストされたイテレータを使用してメジャーを実行します。実行前に必ずキャッシュをクリアしてから、サーバー タイミングとクエリ プランをオンにしてください。

DAX クエリのイテレータとコンテキスト遷移

3 つのスキャン、2 つのCallBackDataID、および 15,003 行が生成されたことがわかります。出力には 101 行しかないため、これは懸念の原因です。これは、メジャーに 2 つの反復子または X 関数があるために発生しました。

これは、実行されたメジャーの完全に展開された形式です。

DAX クエリのイテレータとコンテキスト遷移

Fact Sales テーブルをで反復しています。次に、使用してCallBackDataIDを再度繰り返します。このメジャーの短縮形式には、コンテキスト遷移を呼び出してテーブルを具体化する暗黙のそのため、出力用の行が 101 行しかない場合でも、15,003 行が取得されました。

ネストされた反復子を持たない他のメジャーを実行します。AVERAGEXを使用して Fact Sales テーブルを繰り返し処理していますが、Current Price は関数の外にあります。現在の価格が 500 以上の製品をフィルターして除外し、平均を計算します。

DAX クエリのイテレータとコンテキスト遷移

スキャンが 2 つ、行数が 104 のみで、CallBackDataID がないことがわかります。したがって、 CALCULATE を使用すると、ネストされたイテレータとCallBackDataIDを削除できます。


LuckyTemplates の DAX 関数: イテレーターの使用
LuckyTemplates で反復関数を使用する方法
DAX 計算 – フィルター コンテキスト遷移

結論

DAX のパフォーマンスが低下する原因は数多くあります。そのうちの 1 つは、ネストされた反復子が原因で、不必要なコンテキスト遷移が発生します。これらの反復子は必要以上の行を実体化するため、クエリの速度が低下します。

これに対する最善の解決策は、これをCALCULATE内に配置することです。これにより、フォーミュラ エンジンの作業が軽減され、ストレージ エンジンの機能が最大化されます。


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 を使用して数式内に仮想リレーションシップを作成する方法を説明します。