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内に配置することです。これにより、フォーミュラ エンジンの作業が軽減され、ストレージ エンジンの機能が最大化されます。


Python における Self とは: 実際の例

Python における Self とは: 実際の例

Python における Self とは: 実際の例

RでRDSファイルを保存してロードする方法

RでRDSファイルを保存してロードする方法

R の .rds ファイルからオブジェクトを保存および読み込む方法を学習します。このブログでは、R から LuckyTemplates にオブジェクトをインポートする方法についても説明します。

最初の N 営業日の再考 – DAX コーディング言語ソリューション

最初の N 営業日の再考 – DAX コーディング言語ソリューション

この DAX コーディング言語チュートリアルでは、GENERATE 関数の使用方法とメジャー タイトルを動的に変更する方法を学びます。

LuckyTemplates のマルチスレッド動的ビジュアル手法を使用したインサイトのショーケース

LuckyTemplates のマルチスレッド動的ビジュアル手法を使用したインサイトのショーケース

このチュートリアルでは、マルチスレッド動的ビジュアル手法を使用して、レポート内の動的データ視覚化から洞察を作成する方法について説明します。

LuckyTemplates のフィルター コンテキストの概要

LuckyTemplates のフィルター コンテキストの概要

この記事では、フィルター コンテキストについて説明します。フィルター コンテキストは、LuckyTemplates ユーザーが最初に学習する必要がある主要なトピックの 1 つです。

LuckyTemplates Online Service でアプリを使用する際の最良のヒント

LuckyTemplates Online Service でアプリを使用する際の最良のヒント

LuckyTemplates Apps オンライン サービスが、さまざまなソースから生成されたさまざまなレポートや分析情報の管理にどのように役立つかを示したいと思います。

時間の経過に伴う利益率の変化を分析する – LuckyTemplates と DAX を使用した分析

時間の経過に伴う利益率の変化を分析する – LuckyTemplates と DAX を使用した分析

LuckyTemplates でのメジャー分岐や DAX 数式の結合などの手法を使用して、利益率の変化を計算する方法を学びます。

DAX Studio でのデータ キャッシュのマテリアライゼーションのアイデア

DAX Studio でのデータ キャッシュのマテリアライゼーションのアイデア

このチュートリアルでは、データ キャッシュの具体化のアイデアと、それが結果を提供する際の DAX のパフォーマンスにどのように影響するかについて説明します。

LuckyTemplates を使用したビジネス レポート

LuckyTemplates を使用したビジネス レポート

これまで Excel を使用している場合は、ビジネス レポートのニーズに合わせて LuckyTemplates の使用を開始するのに最適な時期です。

LuckyTemplates ゲートウェイとは何ですか? 知っておくべきことすべて

LuckyTemplates ゲートウェイとは何ですか? 知っておくべきことすべて

LuckyTemplates ゲートウェイとは何ですか? 知っておくべきことすべて