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

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でフィルターを使用すると、この問題を軽減できます。


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