行コンテキストについて学習します。
計算列を作成したので、ここで、それらの数式がどのように評価されるかを学習します。
計算列の数式は、テーブルの行ごとに評価されます。 さらに、現在の行を意味する行コンテキスト内で評価されます。 Due Fiscal Year 計算列の定義について考えます。
Due Fiscal Year =
"FY"
& YEAR('Due Date'[Due Date])
+ IF(
MONTH('Due Date'[Due Date]) <= 6,
1
)
行ごとに数式が評価される際、'Due Date'[Due Date]
の列参照により、その行に対する列の値が返されます。 この概念は、Excel テーブルで数式を操作する際に馴染みがあるかもしれません。
ただし、行コンテキストは、テーブルを超えて拡張されることはありません。 数式で他のテーブルの列を参照する必要がある場合は、次の 2 つの方法があります。
- テーブルが直接的または間接的に関連している場合は、
RELATED
またはRELATEDTABLE
DAX 関数を使用できます。 TheRELATED
関数はリレーションシップの 1 側の値を取得しますが、RELATEDTABLE
は多側の値を取得します。RELATEDTABLE
関数はテーブル オブジェクトを返します。 - テーブルが関連していない場合は、
LOOKUPVALUE
DAX 関数を使用できます。
一般的には、可能な限り RELATED
関数を使用してください。 リレーションシップと列データの保存とインデックス作成の方法により、通常は LOOKUPVALUE
関数よりもパフォーマンスが向上します。
ここで、次の計算列の定義を Sales テーブルに追加します。
Discount Amount =
(
Sales[Order Quantity]
* RELATED('Product'[List Price])
) - Sales[Sales Amount]
計算列の定義により、Discount Amount 列が Sales テーブルに追加されます。 Power BI は、Sales テーブルの各行の計算列の数式を評価します。 Order Quantity 列と Sales Amount 列の値は、行コンテキスト内で取得されます。 ただし、List Price 列は Product テーブルに属しているため、販売製品の定価値を取得するには、RELATED
関数が必要です。
行コンテキストは、計算列の数式が評価される際に使用されます。 また、反復子関数と呼ばれる関数のクラスが使用される際にも使用されます。 反復子関数を使用すると、高度な集計を柔軟に作成できます。 反復子関数については、この後のモジュールで説明します。