データ キャッシュ: データ キャッシュとは何か、クエリの最適化にどのように役立つか

データ キャッシュ: データ キャッシュとは何か、クエリの最適化にどのように役立つか

このチュートリアルでは、データ キャッシュとは何か、そしてそれがなぜ重要なのかを学びます。データ キャッシュには、将来の使用に役立つ可能性のあるデータのビットが保存されます。

今後の測定やアクションで同じ情報が必要な場合、データ キャッシュが必要な情報を提供します。これにより、システムが同じデータセットを再度フェッチする必要がなくなります。

このチュートリアルでは、LuckyTemplates でデータ キャッシュを扱うときに覚えておくべき 8 つの重要な点について説明します。

データ キャッシュ: データ キャッシュとは何か、クエリの最適化にどのように役立つか

目次

データキャッシュの定義と目的

データ キャッシュ: データ キャッシュとは何か、クエリの最適化にどのように役立つか

データ キャッシュは、ストレージ エンジンによってメモリ内に作成される一時テーブルです。この一時テーブルは数式エンジンに送信され、この情報が反復処理され、クエリに続いてさまざまな操作が実行されます。

データ キャッシュ: データ キャッシュとは何か、クエリの最適化にどのように役立つか

フォーミュラ エンジンとストレージ エンジン間のすべての通信は、常にデータ キャッシュの形式で行われます。フォーミュラ エンジンはクエリ プランを準備し、その指示をストレージ エンジンに送信します。次に、ストレージ エンジンはそれを式エンジンに送り返し、式エンジンは結果をユーザーに返します。

データ キャッシュ: データ キャッシュとは何か、クエリの最適化にどのように役立つか

数式エンジンは DirectQuery と VertiPaq に保存されているデータに直接アクセスできないため、データ キャッシュはストレージ エンジンに依存します。

データ キャッシュ: データ キャッシュとは何か、クエリの最適化にどのように役立つか

ストレージ エンジンによって送信されるデータ キャッシュは非圧縮形式です。これは、Vertipaq ツールに保存されるデータのサイズを削減できることを意味します。

しかし、データ キャッシュを数式エンジンに戻す段階になっても、数式エンジンは圧縮されたデータセットを処理できないため、データ キャッシュを圧縮することはできません。

データ キャッシュが RAM に与える影響とは

データ キャッシュ: データ キャッシュとは何か、クエリの最適化にどのように役立つか

ストレージ エンジンが大量のデータ キャッシュを送信すると、ソフトウェアの RAM 上で多くのスペースが必要になります。また、数式エンジンが反復を実行して結果を生成するのにかなりの時間がかかります。

したがって、DAX コードを作成するときは、データ キャッシュ内の行を最小限に抑える方法でコードを作成する必要があることを理解する必要があります。

最良のシナリオは、ビジュアルに表示される行数とデータ キャッシュで返される行数を一致させることです。

ほとんどの場合、同じ量の行を返すのは困難です。この問題が発生した場合は、DAX コードを確認し、ストレージ エンジンによって生成されるデータ キャッシュを最適化する方法でコードを分解する必要があります。

データキャッシュがクエリを最適化する方法

最適化されていない関数

データ キャッシュ: データ キャッシュとは何か、クエリの最適化にどのように役立つか

DAX 言語の一部の関数は、ストレージ エンジン用に最適化されていません。これをよりよく理解するために、例を見てみましょう。

たとえば、コードでは、SUMMARIZE を使用する代わりに、関数を使用できます。SUMMARIZE 関数と GROUPBY 関数は同じ操作を実行します。ただし、シナリオによっては顕著な違いがあります。

GROUPBY 関数はストレージ エンジン用に最適化されていません。1,200 万行のファクト テーブルで GROUPBY 関数を使用すると、同じ行数のデータ キャッシュが生成されます。これは、600MB から 1GB までのサイズにすることができます。

このサイズは RAM に大きな負担をかける可能性があります。したがって、 GROUPBY を使用する代わりに、を使用します。SUMMARIZE 関数を使用すると、データ キャッシュ サイズが小さくなります。最上位関数として GROUPBY と組み合わせることができます。

繰り返しの削減

DAX メジャーまたはクエリを作成するときは、バックグラウンドで生成されたコードがストレージ エンジンに適していることを確認する必要があります。

データ キャッシュ: データ キャッシュとは何か、クエリの最適化にどのように役立つか

後続のクエリでも使用できるデータ キャッシュを生成する方法で DAX コードを記述する必要があります。これを行う利点は、 VertiPaqを使用して個別のスキャンを実行する代わりに、ストレージ エンジンが同様のクエリが既に受信されているかどうかを確認できることです。

これが真であれば、そのデータ キャッシュがメモリ内で利用可能であることを意味します。したがって、クエリを再度スキャンする代わりに、VertiPaq はクエリをキャッシュ メモリから数式エンジンに返すだけです。

データ キャッシュ: データ キャッシュとは何か、クエリの最適化にどのように役立つか

ストレージ エンジン クエリにCALLBACKDATAID 演算子が含まれている場合は、それらのクエリをキャッシュできないことを意味します。同様のクエリがストレージ エンジンに送信された場合、反復が実行されます。

したがって、VertiPaq はクエリを解決するために数式エンジンを呼び出す必要があります。この場合、キャッシュ メモリが使用できないため、全体の実行時間が増加します。

結論

データ キャッシュは、DAX 言語の親友です。記憶域スペースを最大化し、VertiPaq ツールの反復回数を減らす方法で 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 ゲートウェイとは何ですか? 知っておくべきことすべて