▶ Power BIのインストールがまだの方は以下の投稿をご覧ください。
▶ Power BIでデータ項目を追加する方法は以下の投稿をご覧ください。
はじめに
今回はDAX関数について基本から解説することにしましょう。Power BIで新しいデータ項目を追加する際にはDAX関数を使うことが多いでしょう。まずばDAX関数の特徴やExcel関数との違いを整理することで、しっかり理解すれば難しくはありません。
では早速見ていきましょう。
DAX関数とは
DAXとはData Analysis ExpressionsのことでExcelのPower PivotやPower BI Desktopで数式や式を作成するための部品として使用できる関数や演算子のライブラリのことです。
関数と聞くと、Excel関数を思い浮かべるかもしれません。はじめに確認しておいた方が良い、「違い」があるのでまずはこれを整理していくことにしましょう。
DAX関数とExcel関数の違い
DAX関数を使う際の構文は、Microsoft社が公式に公開してくれているリファレンスがわかりやすいです。まず、構文の要件については次の記述があります
列またはテーブルへの参照。 DAX 言語では、関数への入力として常にテーブルと列が使用されます。配列や任意の値のセットが使用されることはありません。
一部の DAX 関数では、スカラーではなくテーブルが返され、テーブルを評価してスカラーを返す関数にラップする必要があります。テーブルは、単一列で単一行のテーブルでない限り、スカラー値として扱われます。
Data Analysis Expressions (DAX) リファレンス
DAX関数の入力は「列またはテーブル」、DAX関数の出力は「スカラーを返すこともテーブルを返すこともある」ということですね。Excelと比較しておくと次のようになります。
Excel関数 | DAX関数 | |
入力 | セル、または、セル範囲 | 列、またはテーブル全体 |
出力 | スカラー | スカラーあるいはテーブル |
DAX関数の基本
DAX関数のレファレンスが公式に公開されています。但し、慣れないうちはリファレンスがあってもなかなかうまくいかないことも多いと思います。
DAX関数を選んだり実際に記述するときには、以下のことも知っておくと助けになるでしょう。
DAX関数の例
- SUM(<column>)
column列の合計値を算出します。戻り値は単一値。
例) SUM(’売上データ'[売上額]) - SUMX(<table>, <expression>)
第1引数で指定したテーブルのすべての行に対して第2引数の内容で評価し、その結果の合計値を算出。戻り値は単一値。
例) [メジャー] SUMX(’売上データ’, ‘売上データ'[売上額] * 0.1)
- DIVIDE(<numerator>, <denominator> [,<alternateresult>])
numerator :分子, denominator :分母, alternateresult:0による除算がエラーになった時に返す値。
例)DIVIDE(SUM(‘売上データ'[利益]),SUM(‘売上データ'[売上高(割引後)]),0)
ポイントはメジャーは集計関数なので分子分母をSUM関数にしている点です。 - FILTER(<table>, <filter>)
第1引数に指定したテーブル、第2引数の条件でフィルターした結果を取得できます。結果はテーブル。
例) FILTER(’売上データ’, ‘売上データ'[売上額] > 1000) - CALCULATE(<expression>[, <filter1> [, <filter2> [, …]]])
第1引数に評価式を入力します。第2引数以降にはAND条件で対象となるテーブルなどのフィルター式を書きます。
例) CALCULATE(SUM(’売上データ’),’売上データ'[売上日] = DATE(2022, 12, 12), ‘売上データ'[数量] >= 10) - IF(<logical_test>, <value_if_true>[, <value_if_false>])
第1引数にTRUE/FALSEで判定できる値や式を書きます。第2引数には第1引数がTRUEの場合の値を、第3引数には第1引数がFALSEの場合の値を書きます。
例) IF(SUM(’売上データ'[売上額]) > 1000, “High”, “Low”) - SWITCH(<expression>, <value>, <result>[, <value>, <result>]...[, <else>])
第1引数には数値などの値、第2引数以降は、第1引数に対する定数値、ならびにそのときの処理を繰り返し書きます。最後の引数はいずれにもあてはまらない場合の定数値を書きます。
例) [計算列] SWITCH(’商品マスタ'[商品名], “商品A”, “カテゴリ1”, “商品B”, “カテゴリ2”, “カテゴリ3″)
まとめ
今回はDAX関数の基本をまとめました。初めての方はなかなか理解が難しかったと思います。使いながら慣れてくる部分もあると思うので、まずは是非使ってみてください。
コメント