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 メジャーを適切に構築することでこの問題を解決できます。


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