メジャーを計算すると必ず暗黙的な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] ) --- 合計 ) ) )
ポイントとしてはイテレートが発生するテーブルは、行数が少ないこと、そして、ユニークであることを意識しておく。