LuckyTemplates の DAX クエリ構造 – 2 つのエンジンと DAX Studio

このチュートリアルでは、DAX クエリ構造と DAX Studio 内の 2 つのエンジンについて説明します。DAX 数式がどのように結果を生成するかの背後にあるプロセスがわかります。また、計算において各エンジンがどのように機能するかについても学習します。

データの生成を担当するエンジンは 2 つあります。それは、フォーミュラ エンジンVertiPaq ストレージ エンジンです。

目次

DAX クエリ構造

このチュートリアルでは、レポートの背後で DAX がどのように動作するかについて、詳細な DAX クエリ構造を示します。

LuckyTemplates の DAX クエリ構造 – 2 つのエンジンと DAX Studio

作成するすべてのメジャーはクエリです。一連のデータを処理し、答えを返します。次に、クエリは SQL Server Analysis Services と通信します。これは、バックグラウンドで実行される LuckyTemplates 用にカスタマイズされたバージョンです。

クエリを作成すると、クエリは数式エンジンに送信されます。すべての DAX に対応しますが、ストレージ エンジンほど効率的ではありません。

フォーミュラ エンジンはクエリを受信すると、VertiPaq ストレージ エンジンに処理するデータを要求します。次に、ストレージ エンジンは圧縮データ キャッシュからデータを取得します。

VertiPaq は圧縮された列で動作するため効率的です。ミリ秒以内に多くの行を計算できます。

図の最後にデータ ソースが表示されます。このトランザクションは、データを更新するときにのみ実行されます。

もう 1 つ学ぶ必要があるのは、単純なクエリにはストレージ エンジンが応答できるということです。それ以外の場合は、データ キャッシュを数式エンジンに送り返し、答えを計算します。

そのデータが数式エンジンに送り返されるとき、データは圧縮されなくなります。メモリ内の列全体が使用されます。 

したがって、数式エンジンはデータを取得した後、DAX クエリに対する答えを計算して入力します。

DAX クエリ構造のエンジン

フォーミュラ エンジンとストレージ エンジンの違いを理解することが重要です。それぞれが異なる目的のために設計されているため、DAX の知識を応用して、高速かつ正確なクエリを取得できます。2 つのエンジンの違いは次のとおりです。

LuckyTemplates の DAX クエリ構造 – 2 つのエンジンと DAX Studio

各エンジンのアイコンは、そのパフォーマンスの速さを表します。ストレージ エンジンは単純なリクエストを処理するため、数式エンジンよりも高速です。DAX クエリが単純で、  、  、またはが必要な場合は、ストレージ エンジンがすべてを単独で実行できます。

一方、数式エンジンは複雑な DAX 関数を処理できます。クエリが複雑になればなるほど、式に使用する数式エンジンが増えることに注意してください。

2 つのエンジンで使用されるデータも異なります。フォーミュラ エンジンはストレージ エンジンからの非圧縮データキャッシュを使用しますが、これは多くのメモリと時間を消費しますが、ストレージ エンジンは圧縮データを使用します。

ストレージ エンジンは、一度に複数のコアを使用するため高速です。それはマルチスレッドエンジンであることを意味します。テーブルにセグメントがある場合、コアの数に応じてセグメントがスキャンされます。ただし、フォーミュラ エンジンは一度に 1 つのコアしか実行できません。

ストレージ エンジンのもう 1 つの優れた機能は、メジャーによって答えが生成されると、数式エンジンとは異なり、その答えがメモリに保存されることです。同じ質問をした場合、完全な計算を実行せずに答えが得られます。

ストレージ エンジンは速度を重視して最適化され、フォーミュラ エンジンは複雑さを重視して最適化されています。

DAX 計算の裏側

DAX のパフォーマンスの背後にあるプロセスを知る唯一の方法は、DAX Studio を使用することです。これは DAX Studio のサンプル ファイルです。

LuckyTemplates の DAX クエリ構造 – 2 つのエンジンと DAX Studio

F5 キーを押して実行すると、結果が得られます。

LuckyTemplates の DAX クエリ構造 – 2 つのエンジンと DAX Studio

計算の背後で 2 つのエンジンで何が起こっているかを知るには、サーバー タイミングとクエリ プランをオンにします。次に、DAX を再度実行します。

LuckyTemplates の DAX クエリ構造 – 2 つのエンジンと DAX Studio

完了したら、「サーバータイミング」タブに移動します。

LuckyTemplates の DAX クエリ構造 – 2 つのエンジンと DAX Studio

クエリ、式エンジン、ストレージ エンジンの合計実行時間を確認できます。実行されたストレージ エンジンの数も表示されます。数式エンジンはクエリ全体の 83.3% で実行されますが、ストレージ エンジンは 16.7% しか実行しません。

[クエリ プラン] タブに移動すると、物理クエリ プランと論理クエリ プランが表示されます。これらは両方とも、数式エンジンが何を行っているかに関する数式クエリです。

LuckyTemplates の DAX クエリ構造 – 2 つのエンジンと DAX Studio



LuckyTemplates での DAX 計算: LuckyTemplatesのこの新しいコース メジャーで DAX 関数を最適化するベスト プラクティス
: 最適化のヒントとテクニック

結論

数式エンジンとストレージ エンジンはどちらも、DAX コードから結果を生成する際に大きな役割を果たします。これらは、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 を使用して数式内に仮想リレーションシップを作成する方法を説明します。