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

このチュートリアルでは、DAX Studio でのデータ キャッシュの実体化について説明します。この投稿では、クエリで結果を生成する際に、それが計算にどのような影響を与えるかを示します。DAX のパフォーマンスを最大化するには、どの具体化がより優れているかを学びます。

マテリアライゼーションには、初期マテリアライゼーション後期マテリアライゼーションの 2 つの考え方があります。

目次

早期の具体化

早期実体化とは、実体化された行数が出力に必要な行数よりも大きい場合です。

出力が暦年ごとのテーブルで、5 年分のデータがある場合、大量のマテリアライズされた行を取り込む必要はありません。ベスト プラクティスは、実体化された行の数が必要な行の数と同じになるようにすることです。ただし、 DAXとデータ設定の複雑さに依存するため、常にそうとは限りません。

データは列で構成されているということを常に覚えておいてください。したがって、数式エンジンがテーブルで作業する必要がある場合、列はテーブル形式にまとめられます。これが具体化です。初期の具体化のアイデアでは、ストレージ エンジンがデータ キャッシュをフォーミュラ エンジンに送信します。その後、数式エンジンがそのキャッシュ上で動作し、複雑なプロセスを実行します。

早期の実体化は、データ モデル内に複雑な結合や多対多の関係があることが原因で発生する可能性があります。また、複雑なフィルターやイテレーターが原因で発生することもあります。

複雑な対策を立てることは間違いではありません。ストレージ エンジンをできるだけ活用するには、それらを正しく設定する必要があります。

遅い具体化

マテリアライズが遅いとは、マテリアライズされた行の数が、出力に必要な行数と同じかそれに近い場合です。

ストレージ エンジンはほとんどすべての作業を実行し、フォーミュラ エンジンには何も任せません。これにより、計算全体が高速化されます。

これらは、早期および後期マテリアライゼーションのクエリの例です。

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

これらのクエリを実行する前に、必ずキャッシュをクリアしてください。これにより、クエリがコールド キャッシュに対して実行されます。キャッシュをクリアせずに DAX を実行すると、次の結果が得られます。

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

すでにキャッシュが使用されているため、合計実行時間はわずか 1861 ミリ秒です。したがって、クエリを実行する前に必ずキャッシュをクリアしてください。

早期マテリアライゼーション クエリを実行すると、にかかった合計時間が 9485 ミリ秒であることがわかります。1 つのデータ キャッシュと 1 行の出力が生成されましたが、2,500 万行が返されました���

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

時間がかかり、DAX のパフォーマンスが低下するため、1 行の結果を得るために 2,500 万行を具体化する必要はありません。

遅延マテリアライゼーション クエリを実行すると、計算全体に 1340 ミリ秒しかかからなかったことがわかります。また、2 つのデータ キャッシュも生成され、それぞれ 5003 行が返されました。

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

物理クエリ プランを見ると、5000 行があることがわかります。同じ行数がありません。Server Timings の結果は、クエリ プランの正確な行数と多少の誤差が生じる場合があります。

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

したがって、2,500 万行を含む 1 つのデータ キャッシュで作業していたところ、5,003 行を含む 2 つのデータ キャッシュが存在することになります。そのため、後でマテリアライゼーションを使用すると、初期マテリアライゼーションよりも早く結果が得られます。

各実体化クエリの内部

クエリを見るだけで、後で具体化する方が高速であることがすでにわかります。初期マテリアライゼーション クエリは、要約テーブルの行をカウントします。

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

要約され実体化されたテーブルは、テーブルに対して単に

クエリが遅い場合は、クエリで取得されている行の数と、出力に必要な行の数を確認することから始めます。また、論理クエリ プランに移動して、計算内で行われる作業フローを追跡することもできます。


LuckyTemplates Desktop の DAX Studio とは
DAX チュートリアル: コンテキストと計算エンジン
LuckyTemplates の測定: 最適化のヒントとテクニック

結論

マテリアライゼーションは、クエリがデータ モデルから列または行をプルするときに発生します。このプロセスは、クエリの結果を提供するためにエンジンがデータ モデルからデータを取得するときに自然に発生します。

ただし、DAX が結果に必要な行よりも多くの行を取得すると、問題が発生する可能性があります。この問題は、DAX を単純化して特定のプロセスを実行することで解決できます。

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