【DAX】もしAならBを表示する

ここに5つの商品名が入っている列があります。すでにカテゴリ列が入っていますが、今回はDAX関数を使ってオレンジなら「果物」と表示できるように練習したいと思います。

風場 輝


適当に作ったダミーデータでPower BI練習中。バージョンによっては画面がかなり変わることもあるのであしからず。
この記事作成時のPower BI Desktopバージョンは「2.139.2054.0 64-bit (2025年1月)」

IF関数

も

IF関数を使おう

カテゴリ(if) = 
    IF(CALCULATE(MAX('2025_売上'[商品名]) = "オレンジ"), "果物",
     IF(CALCULATE(MAX('2025_売上'[商品名]) = "きゅうり"), "野菜",
      IF(CALCULATE(MAX('2025_売上'[商品名]) = "さくらんぼ"), "果物",
       IF(CALCULATE(MAX('2025_売上'[商品名]) = "ブロッコリー"), "野菜", "果物"))))

IFしか知らないのでとりあえず上から順にIF関数を使いましたがやっぱり長いです。カッコとアルファベットとカンマばかりで目が滑りますね。あと条件が増えたときに追加するのが絶対めっちゃめんどいです。

ぷ

IF使うって言ってるのになんでCALCULATEとかMAXとか入ってんの?

実はこの「商品名」列には他にもたくさんの果物や野菜の重複する名前が入っているのでCALCULATEとMAX(MINもあり)で一つの値を特定できる状態にしないといけないんです。(ってエラーメッセージが言っていました)

SWITCH関数

せっかくなので別の方法もやってみたいと思います。最近SWITCH関数も使えるらしいと知ったのでさっそくやってみたいと思います。

カテゴリ(SWITCH) = 
    SWITCH(TRUE(),
        MAX('2025_売上'[商品名]) = "オレンジ", "果物",
        MAX('2025_売上'[商品名]) = "さくらんぼ", "果物",
        MAX('2025_売上'[商品名]) = "りんご", "果物",
        "野菜"
    )
も

IF関数よりすっきりした気がする

TRUE()の後に条件を羅列して、指定した条件以外で表示する値は最後に記載するかんじですかね。

変数

ではこのまま変数を使ったDAX関数も作りたいと思います。やりかたは色々とあると思うのですがこの書き方に落ち着きました。

カテゴリ(if変数) = 
 VAR fruitList = {"オレンジ", "さくらんぼ", "りんご"}
 VAR fruit = CALCULATE(MAX('2025_売上'[商品名]) IN fruitList)

 RETURN 
  IF (fruit, "果物", "野菜")

いつもFILTER関数を使おうとしてうまくいかずくじけていましたが、INを使えばよかったんですね。今回のケースだと個人的には変数が使いやすそうで好きです。

ぴ

果物が追加されたら{}の中に追加すればいいだけだから修正も楽でいいね

完成

どのDAX関数もちゃんとカテゴリ列と同じ値が表示されています。

気が向いたらもう少し複雑な条件にもチャレンジしてみたいと思います。

(追記)書きました。↓

タイトルとURLをコピーしました