DAX 計算におけるデータ キャッシュ

DAX 計算におけるデータ キャッシュ

このチュートリアルでは、DAX 計算におけるデータ キャッシュの機能について学習します。クエリに対する答えを提供するために、フォーミュラ エンジンやストレージ エンジンとどのように連携するかを理解できます。

目次

データキャッシュとは何ですか?

ストレージ エンジンは、データ キャッシュの形式でフォーミュラ エンジンと対話します

DAX クエリ構造に関する以前のブログ投稿を思い出していただければ、数式エンジンがストレージ エンジンにデータを要求していることがわかります。後者はデータベースにアクセスしてさまざまな種類のデータを取得し、それをデータ キャッシュの形式で数式エンジンに返します。

ストレージ エンジンは単純な計算と集計を実行できるため、処理が高速になります。また、複数のデータ キャッシュを一度に埋めることができる並列処理も提供します。ストレージ エンジンのクエリによっては、回答を生成するのに時間がかかる場合があります。ただし、さまざまなストレージ エンジンのクエリをすべて合計すると、複数のデータ キャッシュが埋まってしまうため、結果は同じにはなりません。

一方、数式エンジンは複雑なクエリを処理します。これはシングルスレッド エンジンであるため、最終統合データ キャッシュは 1 つだけ使用できます。すべてのリクエストがストレージ エンジンによって満たされると、データ キャッシュでの作業が開始されます。

フォーミュラ エンジン リクエストが前のリクエストとまったく同じである場合、以前に返されたキャッシュが再度使用されます。ストレージ エンジンは、同じリクエストを受け取った場合に同じデータ キャッシュを返すほど賢いものです。これにより、データがすでにキャッシュされているため、DAX のパフォーマンスが向上します。

メジャーを実行するときは、コールド キャッシュに対して実行することが重要です。ウォーム キャッシュでクエリを実行することは常に避けてください。ウォーム キャッシュは、ストレージ エンジンのデータ キャッシュがすでに形成されており、返す準備ができていることを意味します。

主な機能は何ですか?

データ キャッシュはメモリ内に実体化されたテーブルであり、時間がかかり、RAM を消費します。実体化は可能な限り低くする必要があることを常に念頭に置いてください。

もう 1 つの重要な特徴は、これらのキャッシュが非圧縮であることです。データがストレージ エンジンから出されて数式エンジンに送信されると、データ キャッシュはメモリ内の非圧縮の完全なテーブルになります。この実行は、すべてがメモリ内にあり圧縮されているピア ストレージ エンジンのリクエストよりもはるかに遅くなります。

数式エンジンの使用には問題はありません。必要なのは、ストレージ エンジンに可能な限り作業を実行させることだけです。

データ キャッシュも一時的なものです。それらはしばらく存在しますが、その後消えてしまいます。たとえメモリ内に実体化されていても、永続的ではないため消去されてしまいます。

データキャッシュはどこで見つけられますか?

この情報は、物理クエリ プランの [レコード] 列と、DAX Studio の [行] 列の [サーバー タイミング] で見つけることができます。ストレージ エンジンによって生成され、数式エンジンに送信される行の数が表示されます。

サーバーのタイミングで特定のテストを実行すると、行数が少しずれる可能性があることがわかります。これは、取得する行数の単なるガイドラインです。

データ キャッシュに関して留意すべき主な点は、実体化される行数が、出力に必要な行数にできるだけ近い値である必要があるということです。行数に大きな差がある場合は、順序操作がオフになっていることを意味します。

マテリアライズされた行の量が出力に必要な行の量と等しい場合、それは遅延マテリアライゼーションと呼ばれます。ただし、実体化された行の数が必要な行数よりも大きい場合、それは早期実体化と呼ばれます。これらは非圧縮データであるため、DAX のパフォーマンスが低下するため、両方のエンジンでこれらを具体化しないでください。

これは初期の具体化の例です。

DAX 計算におけるデータ キャッシュ

物理クエリ プランでは、レコード列に 2,500 万行がプルアップされていることがわかります。ただし、サンプル クエリには 2,500 万行の出力は必要ありません。これは、クエリが必要以上に多くの行を取得したことを意味します。

Server Timings を見ると、Rows 列に同じ量の行がプルされていることがわかります。

DAX 計算におけるデータ キャッシュ

SE CPUビジュアルでは、クエリに並列処理がある場合に数値が表示されます。この例には何もないため、0 が表示されました。

DAX 計算におけるデータ キャッシュ


LuckyTemplates Desktop の DAX Studio とはDAX チュートリアル: DAX Studio の
コンテキストと計算エンジンVertiPaq Analyzer |
LuckyTemplates チュートリアル

結論

DAX のパフォーマンスが遅いということは、エンジンが動作するためにクエリが不必要なキャッシュを取得していることを意味している可能性があります。データ キャッシュは、エンジンがデータ キャッシュ上で動作してさまざまな要求に対する回答を生成するため、DAX の速度と精度に関与します。DAX のパフォーマンスを高速化するには、データ モデルと DAX メジャーを適切に構築することでこの問題を解決できます。


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