変数と重要な関数を使用した DAX クエリ

関数やCALCULATE関数などの変数について説明します。これらが DAX クエリのパフォーマンスを向上させ、正確な結果を提供するのにどのように役立つかを理解できます。

変数は、最適化のためのコードを簡単に見つけることができるため、できる限り使用する必要があります。これにより、誤った出力が得られることがなくなり、エラーを探す時間を節約できます。ただし、変数によって値の再計算が妨げられる場合があります。したがって、一度値を定義すると、CALCULATEであってもその値を変更することはできません。

変数を反復の内部と外部で使用すると異なる結果が生成されるため、変数をどこで定義して使用するかを理解しておくことが重要です。これらは、使用される場所の近くで定義する必要があります。これは、長いコードを分割するのにも役立ち、コードの理解とデバッグが容易になります。

目次

CALCULATE と FILTER を使用して DAX クエリを作成する

DAX で結果と回答を取得するには、さまざまな方法があります。作業内容に満足できるように、レポートを作成する際に独自のスタイルとフローを確立する必要があります。独自のスタイルがある場合でも、 FILTERなどのさまざまなメソッドではなくCALCULATEを使用するなど、特定のガイドラインに従う必要があります。

FILTER は大量の非圧縮データを数式エンジンに送信する可能性があり、潜在的にCallBackDataID をトリガーする可能性があります。ここでは、 CALCULATEFILTERの結果を表示するためにメジャーが使用されます。これには、クエリに対してローカルな定義済みのメジャーもあります。定義されたメジャーはデータ モデル内では見つかりませんが、コードの開発とトラブルシューティングをより迅速に行うことができます。

変数と重要な関数を使用した DAX クエリ

最初の行には、日付の変数を定義するメジャーが表示されます。これは、2016 年 3 月 31 日以降に発生する日付のファクト テーブルをフィルターすることを意味します。また、ファクト販売テーブルを反復して数量と現在の価格を乗算する総売上高の単純なメジャーを確認することもできます。

次の対策は、内でを使用することです。CallBackDataIDモジュールを思い出した場合、SUMX 関数内で IF を使用すると、CallBackDataIDが作成されます。

変数と重要な関数を使用した DAX クエリ

このメジャーは、Fact Sales テーブル全体をフィルター処理しています。Date テーブルからのフィルターを削除します。

変数と重要な関数を使用した DAX クエリ

テーブル全体をフィルタリングする場合は、1 対多のリレーションシップの片側にあるすべての列もフィルタリングされるため、注意が必要です。

このメジャーは前のメジャーと同じです。唯一の違いは、テーブル全体をフィルタリングしないことです。SUMX を使用して、フィルターされたテーブルを反復するだけです。

変数と重要な関数を使用した DAX クエリ

これは Fact Sales テーブルをフィルターする別のメジャーですが、今回はそれが含まれる列のみをフィルターします。

変数と重要な関数を使用した DAX クエリ

最後の手段は、CALCULATEとデータ モデルを使用してデータをフィルタリングして取得することです。

変数と重要な関数を使用した DAX クエリ

各測定を実行して確認する

まず、IF測定を実行します。クエリを実行する前に必ずキャッシュをクリアし、サーバー タイミングとクエリ プランをオンにしてください。

変数と重要な関数を使用した DAX クエリ

変数と重要な関数を使用した DAX クエリ

正しいデータが提供されますが、 CallBackDataIDと 3 つの期間のため、パフォーマンスが遅くなります。

Fact Sales テーブル全体をフィルターするメジャーを実行しても、 CallBackDataID を確認できます。また、15,003 行が生成され、誤った結果が得られます。

変数と重要な関数を使用した DAX クエリ

変数と重要な関数を使用した DAX クエリ

すべての Fact Sales テーブルをフィルターしないメジャーを実行すると、正しい結果が得られます。ただし、 CallBackDataIDと実体化された 15,003 行は引き続き表示されますが、出力は 7 行のみです。

変数と重要な関数を使用した DAX クエリ

変数と重要な関数を使用した DAX クエリ

列をフィルタリングする次のメジャーを実行します。正しい結果が得られ、CallBackDataID が削除されます。しかし、それでも多くの行が具体化されていることがわかります。

変数と重要な関数を使用した DAX クエリ

変数と重要な関数を使用した DAX クエリ

CALCULATEメジャーを実行します。10 行のみが実体化され、5 ミリ秒で正しいデータが生成されたことがわかります。

変数と重要な関数を使用した DAX クエリ

変数と重要な関数を使用した DAX クエリ

これは、 CallBackDataID がなく、10 行しかプルされないため、上記のすべての手段の中で最も高速です。これは、CALCULATEが迅速かつ正確な結果を得る上でいかに優れているかを示しています。

すべての DAX クエリまたはメジャーを実行すると、期間に基づいてどれが最も遅いか、最も速いかがわかります。各対策の結果も確認できます。

変数と重要な関数を使用した DAX クエリ

変数と重要な関数を使用した DAX クエリ

結論

フィルターを CALCULATE に移動すると、CallBackDataID が削除されるため、時間と具体化が節約されます。データを 2 回繰り返す必要はありません。これにより、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 を使用して数式内に仮想リレーションシップを作成する方法を説明します。