メジャーを計算すると必ず暗黙的なCalculateが追加され、その結果としてコンテキスト変換が発生する。これにより適切なグループにおいて、余計なことを意識することなく集計ができる。
SUMX (
'Sales',
RELATED ( 'Product'[Unit Price] ) * [Total Quantity]
)
上記のコードは実際に実行されるときには以下のようになる。
SUMX (
'Sales', --- IterateするテーブルはSales
RELATED('Product'[Unit Price],
--- 該当Salesに関連するProductを一行取得する。
Sales - Productはm:1の関係である。
* CALCULATE(
--- メジャーに暗黙的なCalculateを追加
SUMX(
Sales,
--- コンテキスト変換により関連するSalesのみ取得される
--- Salesはテーブルが大きすぎる、ユニークではない可能性がある。
Sales[Quantity]
) --- 合計
)
)
)
ポイントとしてはイテレートが発生するテーブルは、行数が少ないこと、そして、ユニークであることを意識しておく。
