DAXにおけるSUM関数は、Excel関数でのイメージ通り、列の合計を行います。
一方、DAX関数には、SUMXといった最後に「X」のつく関数が登場します。
この記事では、SUMとSUMXの違いについて説明をします。
次のテーブルで総売上を求めたいとします。

SUM関数を使った場合
まずは、SUM関数を使って、
売上金額:=SUM([単価])*SUM([販売数])
とメジャーを作成すると、1,200円という誤った計算結果が出力されます。
これは、単価列の足し算(SUM)、販売数列の足し算(SUM)を先に行ってしまうためです。

SUMXの場合
次は、SAMXを使ったメジャーを作成してみます。
売上金額:=SUMX('販売実績',[単価]*[販売数])
こちらは、先に各行の「単価×販売数」を計算し、その結果を足し算(SUM)するので正しく結果を得られます。

※式内で指定した’販売実績’は、テーブル名
SUM関数が、単純に指定した列の合計を求めるのに対して、
SUMX関数は行ごとの処理を済ませた後で、列の合計を求めます。
POINT
「SUMX」の他にも「AVERAGEX」「RANKX」「MINX」など、Xの付いた関数がありますが、全て動きは同じで、行の処理を先に行ってから結果を出力します。
SUMX(‘販売実績’,[単価]*[販売数])・・・単価×販売数を計算した後、合計を求める
AVERAGEX(‘販売実績’,[単価]*[販売数])・・・単価×販売数を計算した後、平均を求める
MINX(‘販売実績’,[単価]*[販売数])・・・単価×販売数を計算した後、一番小さかった行の値を求める
Xのつく関数をイテレーター関数といいますが、
「イテレーター関数は、横軸(X軸)から計算する」と私は覚えています。
コメント