DAX CALCULATABLE と FILTER 関数の比較

DAX CALCULATABLE と FILTER 関数の比較

どちらも、DAX クエリでデータを操作および分析するための強力なツールですが、理解することが重要な重要な違いがいくつかあります。

このブログでは、 DAX Studio のCALCULAETABLE関数とそのクエリ プランについて説明し、 FILTER関数との違いを理解します。最後には、データ分析のニーズに適した関数を選択する方法をよりよく理解できるようになります。

デモのために、以下の DAX コードを使用します。

DAX CALCULATABLE と FILTER 関数の比較

このコードを実行すると、ブランドと色を示すテーブルが表示されます。

DAX CALCULATABLE と FILTER 関数の比較

[クエリ プラン]タブでは、数式エンジンCrossApply演算子に対応するコードを取得します。

DAX CALCULATABLE と FILTER 関数の比較

同時に、コードは [サーバー タイミング]タブで製品の色とブランドのみを取得していることがわかります。

DAX CALCULATABLE と FILTER 関数の比較

目次

CALCULATABLE の DAX Studio サーバーのタイミング結果

例として、製品の色をフィルタリングして、赤および/または黒のみを表示してみましょう。

これを行うには、FILTER 関数を使用します。これを実行すると、サーバー タイミングに FILTER 引数がxmSQL コードに適用されていないことが表示されます。

DAX CALCULATABLE と FILTER 関数の比較

ただし、CALCULAETABLE 関数を使用すると、[サーバー タイミング] タブのクエリで、結果が製品の色でフィルターされたことが表示されます。

DAX CALCULATABLE と FILTER 関数の比較

DAX Studio の CALCULATABLE クエリ プラン

各関数のクエリ プランを見てみましょう。

CALCULAETABLE は、コード内の最上位関数であり、要件に依存しないため、論理クエリ プランの最初の行にあります。

DAX CALCULATABLE と FILTER 関数の比較

CALCULAETABLE 関数のクエリ プランを読み取るときは、最初の引数から始めません。まず、使用されるフィルター コンテキストを理解する必要があります。それでは、5行目に行きましょう。

フィルターが適用されているため、VertiPaqオペレーターには製品の色の列が必要であることがわかります。次に、この列をスキャンし、Not IsEmpty フィルターの組み合わせを使用して、各行に対して製品の色をチェックします。

フィルター コンテキストが準備された後、引数が実行されます。

後から考えると、FILTER 関数を使用すると、別のクエリ プランが表示されるため、フィルター コンテキストを識別する前に CROSSJOIN 引数が実行されます。

DAX CALCULATABLE と FILTER 関数の比較

このアプローチの欠点は、フィルター条件がストレージ エンジンにプッシュされないことです。xmSQL 内でWHERE句を使用することはできないため、フォーミュラ エンジンに大きな負担がかかります。

また、複数のテーブルを操作している場合、CROSSJOIN 関数のフィルターの組み合わせは膨大になります。これにより、DAX コードのパフォーマンスが低下します。したがって、ほとんどの場合、CALCULAETABLE 関数を使用することをお勧めします。

したがって、数式エンジンですべての計算を実行する代わりに、XMSQL コードの WHERE クラス内にフィルター条件を挿入できます。

同様の DAX 関数のコンテキスト遷移

サーバーのタイミング

この概念は CALCULATE 関数にも当てはまります。例として以下の DAX コードを使用してみましょう。

DAX CALCULATABLE と FILTER 関数の比較

メジャーには自動的に CALCULATE 関数が追加されます。

このコードを実行すると、各色の総売上高を示す表が取得されます。

DAX CALCULATABLE と FILTER 関数の比較

[サーバー タイミング] タブでは、コードが 2 つのクエリを実行していることがわかります。最初のクエリは、Products テーブルに関する Sales テーブルからの Sales 金額の合計を計算します。

DAX CALCULATABLE と FILTER 関数の比較

一方、2 番目のクエリは Products テーブルから製品の色を再度取得します。これは、DAX コードの関数に対応します。

DAX CALCULATABLE と FILTER 関数の比較

Formula Engine は、2 つのクエリのデータ キャッシュを並べて配置します。まず 2 番目のデータ キャッシュから値を取得し、次に 1 番目のデータ キャッシュでルックアップを実行します。

クエリプラン

引数により論理クエリ プランが製品の色をスキャンします。

次に、VertiPaq は製品の色に応じて総売上高を合計します。製品のカラー値を同等のフィルター コンテキストに変換するコンテキスト遷移を実行します。

DAX CALCULATABLE と FILTER 関数の比較

コンテキスト遷移によって作成されたフィルターは、クエリ プランのdependOnColsプロパティに変換されます。VertiPaq は、総売上高の計算に必要な列をスキャンした後、売上数量に正味価格を乗算します。

その後、合計売上が通貨データ型の形式で結果として返されます。最後に、ADDCOLUMNS は、Color と Total Sales 金額を含む 2 つの列を含むテーブルを返します。

結論

クエリ プランが異なれば効率のレベルも異なる可能性があるため、クエリ プランはクエリのパフォーマンスに大きな影響を与える可能性があります。

DAX クエリで CALCULAETABLE 関数と FILTER 関数を使用する場合、クエリ プランは、特定のシナリオや、使用されている特定の数式やクエリ エンジンの機能などのさまざまな要因に応じて異なる場合があります。

一般に、特定のシナリオに対して最も効率的なアプローチを決定するために、さまざまなクエリ プランのパフォーマンスをテストして比較することをお勧めします。

ではごきげんよう、


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