DAX Studio のパフォーマンスの問題: CallBackDataID

このチュートリアルでは、DAX Studio のパフォーマンスの問題であるCallBackDataIDについて説明します。これが何をするのか、そして DAX クエリのパフォーマンスにどのような影響を与えるのかを学びます。

ストレージ エンジンは、データ キャッシュの形式でフォーミュラ エンジンにデータを提供するように機能します。ただし、ストレージ エンジンが式を評価できない場合は、 CallBackDataID を使用して数式エンジンにヘルプを求め、コールバックします

計算にCallBackDataIDを含めると、 DAX はストレージと数式エンジンの両方を使用するため、DAX のパフォーマンスが低下します。ただし、数式エンジンだけですべての作業を行うよりは、圧縮されたデータに対して実行され、実体化が必要ないため、それでも優れています。

また、数式エンジンが関与している場合、結果はキャッシュされません。キャッシュにより、LuckyTemplates でクエリまたはメジャーを実行する際のユーザー エクスペリエンスが向上します。

目次

CallBackDataID を確認する場所

CallBackDataID は、 DAX Studio 内のサーバー タイミングで見つかります。これらは重要であるため、xmSQL ステートメント内で強調表示されています。DAX を最適化したい場合は、CallBackDataIDを見つけることから始めるのが最適です。

のフィルターを活用することです。フィルターでCALCULATE を使用することは、 テーブルとして使用するよりも優れています。FILTERは反復子であり、テーブルをフィルターすると、 によって反復処理されます。これら 2 つのイテレータが存在すると、クエリの速度が低下する可能性があります。

CallBackDataID を使用した場合と使用しない場合の 2 つのサンプル クエリを次に示します。

DAX Studio のパフォーマンスの問題: CallBackDataID

これは、上記の 2 つのクエリを定義するローカライズされた対策です。

DAX Studio のパフォーマンスの問題: CallBackDataID

一番上のメジャーは、Sales テーブルを反復し、現在の価格と数量を乗算して、合計します。一番下のメジャーは、購入日が 2016 年 3 月 31 日以上であるかどうかをチェックします。メジャーに関数があると、 CALCULATEを使用していないためCallBackDataIDが作成されます。

これをテストするには、 CallBackDataIDを含むクエリを実行します。実行する前に、必ずキャッシュをクリアし、サーバー タイミングとクエリ プランをオンにしてください。

下部にある「サーバー タイミング」タブをクリックすると、最初のスキャンが強調表示されていることがわかります。これは、 CallBackDataIDが存在するためです。

DAX Studio のパフォーマンスの問題: CallBackDataID

xmSQL ステートメントでCallBackDataID を確認することもできます。メジャー内のIF関数はストレージ エンジンの能力を超えているため、数式エンジンの助けを求めます。

DAX Studio のパフォーマンスの問題: CallBackDataID

パフォーマンスの問題を解決する方法

CallBackDataIDを持たないクエリを実行すると、スキャンが強調表示されなくなっていることがわかります。

DAX Studio のパフォーマンスの問題: CallBackDataID

これは、 CALCULATEフィルターがストレージ エンジンにプッシュダウンされているためです。単独で機能するため、フォーミュラ エンジンの助けはもう必要ありません。

可能な限り、CALCULATEでフィルターを使用するようにしてください。ほとんどの作業をストレージ エンジンにプッシュすることで DAX のパフォーマンスを最適化し、処理を高速化します。



LuckyTemplates のストレージ エンジン – LuckyTemplates でのVertiPaq オペレーターとクエリの測定: 最適化のヒントとテクニック
DAX Studio の VertiPaq Analyzer | LuckyTemplates チュートリアル

結論

クエリが複雑すぎてストレージ エンジンが動作しない場合、パフォーマンスに影響が出る可能性があります。計算にCallBackDataIDなどの不要なプロセスが含まれるため、DAX の速度が低下します。CALCULATEでフィルターを使用すると、この問題を軽減できます。

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