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

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 を単純化して特定のプロセスを実行することで解決できます。


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 ゲートウェイとは何ですか? 知っておくべきことすべて