行コンテキストとフィルターコンテキスト

複雑なDAX式を自分で作成していくためには、

内部処理について理解しなければなりません

この記事では、DAX式を書く際に重要なコンテキストについて解説します

コンテキストとは

DAXにおけるコンテキストは、計算や集計の結果に影響を与える「背景情報」を指します。これには以下の2つの種類があります

  • 行コンテキスト
  • フィルターコンテキスト

DAX式では、これら2つのコンテキストが複雑に絡み合うことがあります

特に、CALCULATE関数はフィルターコンテキストを操作するため、

行コンテキストが適用されている計算列と組み合わせると、予期しない結果になることもあります

行コンテキストについて

DAXの行コンテキストは、現在の行を基準にして計算を行うための背景情報を提供します。計算列や特定の関数を使用する際に重要な役割を果たします。

行コンテキストは主に以下の場合に発生します:

  1. 計算列を作成するとき
    計算列は、テーブル内の各行ごとに計算を実行します。このとき、その行の値だけが参照されるため、行コンテキストが自動的に適用されます。
  2. 特定のDAX関数内
    SUMXは行コンテキストを活用する代表的な関数で、テーブル内の各行に対して式を評価し、その結果を合計します。

フィルターコンテキストについて

フィルターコンテキストは、DAX式が評価される際に、どのデータが「計算の対象になるか」を決定する背景情報です。

Excelでは、スライサー、ピボットテーブルのフィルターCALCULATE関数を使用した計算時に適用されます

コンテキストトランジションについて

コンテキストトランジションとは、

行コンテキストが存在しているときにCALCULATEまたはCALCULATETABLEを使うと、行コンキテストがフィルタコンテキストに変換される現象のこと

例でいうと、計算列でCALCULATE関数を使った場合やメジャーを使用した場合です

また、計算列でメジャーを使用した際にも、なぜコンテキストトランジションが起こるかですが、

メジャーにはCALCULATE関数が追加される特性があるからです

次の例で見てみます

計算列1は =SUM([売上])

計算列2は =[メジャー]
※メジャー:=SUM(売上)

ですが、出力された結果が異なります

計算列2の方では、メジャーを使用しているため

「 =CALCULATE(SUM(売上)) 」として解釈されているのです

Udemy(ユーデミー)は、世界中の講師と学習者をオンラインで結びつける学習プラットフォームです。

Udemyの特徴は「買い切り型の動画」で、購入後いつでも無制限に視聴可能なことです。

また、セール時には本1冊分ほどの価格で購入できる講座もあります。

さらに、一般書籍で紹介されない内容を、サンプルデータ付きでわかりやすく学ぶことができるため、コストパフォーマンスは抜群です!

いつでもどこでも何度でも、スマホが教室に Udemy icon 仕事の生産性の人気オンラインコース

コメント