見出し画像

DAX解説 SUMとSUMXの違い【エクセル パワーピボット】【Excel PowerPivot】

エクセルのパワーピボットやPowerBIなどで使うDAX関数には、値を合計するお馴染みの関数である『SUM』とは別に、似た名前の『SUMX』という関数があります。

こちらの記事では、そのSUMとSUMXの違いについて解説します。


以下の動画でも同じ内容を解説しています。
記事をご購入いただくと、記事の最下部から本記事と動画の解説で実際に使用しているExcelファイルをダウンロードすることができます。


=== ストアカで開催中のオンライン講座 ===

画像16

https://bit.ly/3oNb031

画像17

https://bit.ly/3uieSx6

===============================


SUMは『列』を合計する


データモデルに3つのテーブルがあり、以下のようにリレーションが設定されています。

画像4

画像6

画像7



『販売データ』テーブルの『販売数量』列の値をメジャーを使って合計したい場合、

画像2

列の値の合計なので、もちろんDAX関数のSUMを使います。

画像3

@販売数量 := SUM( '販売データ'[販売数量] )


では、『販売数量』に『商品コード』ごとの『単価』をかけて、『売上高』の値を算出し、その『売上高』の合計をメジャーで求めたい場合はどうするかといいますと、

画像4

画像5


こんな感じで、RELATED関数を使って『商品マスタ』テーブルの『単価』もってきて、計算列として『販売データ』テーブルに追加します。

『単価』の計算列 : = RELATED( '商品マスタ'[単価] )

『売上高』の計算列はRELATED関数でもってきた『単価』に『販売数量』をかけます。

『売上高』の計算列 : = '販売データ'[販売数量] * '販売データ'[単価]


あとは計算列として作成した『売上高』の列の値をSUMを使って合計します。

画像8

@売上高 := SUM( '販売データ'[売上高] )



ここで、ちょっと考えてみます。

このメジャーのSUMの中で合計している『'販売データ'[売上高]』の数式は

画像13

と分解できます。


なら、『売上高』を計算するための数式を、SUMのメジャーの中に埋め込んでしまえば、わざわざ『販売データ』テーブルに余計な計算列を追加しなくていいんじゃないか?


つまり、

@売上高 := SUM( '販売データ'[売上高] )

@売上高 := SUM( '販売データ'[販売数量] * RELATED( '商品マスタ'[単価] ) )

にしてしまえないか?というわけですね。



結論から言いますと、このメジャーはエラーで値が算出されません。

@売上高 := SUM( '販売データ'[販売数量] * RELATED( '商品マスタ'[単価] ) )

画像9


理由はエラーメッセージに書いてあるとおりで、

画像10

SUMの引数として使えるのは列だけだからです。


画像11

このメジャーだと、SUMの引数として設定している赤線の部分は列ではありませんので、SUMに関しては、こういった使い方をするとエラーになってしまいます。



SUMXは『計算式』を合計できる


ではSUMXというDAX関数を使うと、どうなるか?


画像12

@売上高 :=
SUMX( '販売データ' , '販売データ'[販売数量] * RELATED( '商品マスタ'[単価] ) )


実は、SUMXであれば、こんな感じで数式を引数で使うことができます。

つまり、『販売データ』のテーブルに『単価』『売上高』という計算列を追加する必要がなくなります。


SUMXには以下のような説明文が表示されます。

テーブルの行ごとに評価される式の合計値を返します。


分かりにくいですね。

少なくとも、私はよく理解できませんでした。



SUMXの計算ロジックは、大体こんなイメージです。

画像14

文書にすると、

第1引数で指定したテーブルの1行1行で
第2引数で指定した数式を計算し
各行で計算された第2引数の結果の数値を合計する。

となります。


SUMの場合は列しか引数に指定できませんが、SUMXの場合は計算式を引数にできるということですね。



ちなみに、最初にSUMで作成したメジャーをSUMXで表現すると

画像17

@売上高SUM  := SUM( '販売データ'[売上高] )
@売上高SUMX:= SUMX( '販売データ' , '販売データ'[売上高] )

となり、この2つのメジャーは同じ値が算出されます。



記事と動画で使用しているExcelファイル

ここから先は

0字
この記事のみ ¥ 500

よければサポートしていただけると嬉しいです😀 有用な記事や動画を制作していけるように頑張ります❗️