このページはDAX関数をサイト主がよく使う例をあげながら使い方を解説します。
多様な使い方など深くは解説しません。あくまでも、最頻の使い方や抑えておきたいポイントを記しています!
用途
日付をカスタム定義のテキスト型にしたいときに使います。
前提条件
変更前のデータのデータ型を”日付”にしておく必要があります。
※スクショはPowerBIの画面です。
構文
=FORMAT(<列名>,”カスタム定義”)
カスタム定義の例
※<列名>は、[日付]がはいり、「2023年10月31日」(データ型:日付)の1レコードがはいっています。
カスタム定義 | 戻り値 | |
yyyyMMdd | 20231031 | |
yyyyMM | 202310 |
例
新しい列[年度]を追加して、[日付]に対する年度を表示させます。
- 月が1月、2月、3月だった時、年を-1にすれば年度を表示できます。
IF文を使って年度を表示させます。
= IF(FORMAT([日付],”mm”)IN{“01″,”02″,”03”},正の値,負の値) - 正の値は、年を-1にした値をいれたいのですが FORMAT([日付],”yyyy”)-1ではエラーとなります。
FORMATの戻り値はテキスト型になので、文字列から数値型に変換しておく必要があるためです。
FORMATをVALUEで囲い、VALUE(FORMAT([日付],”yyyy”)-1)としておくと良いでしょう。 - 負の値は、年をそのまま表示させた値をいれます。FORMAT([日付],”yyyy”)としたいところですが、これもエラーになってしまいます。
実はIF文の戻り値はバリアント型ではないため、正の値と負の値どちらの戻り値もデータ型を揃えておく必要があります。
正の値の戻り値が数値型だったため、負の値も数値型に揃えておきましょう。
VALUE(FORMAT([日付],”yyyy”) - 1~3を踏まえ、下記の数式になります。
= IF(FORMAT([日付],"mm")IN{"01","02","03"},VALUE(FORMAT([日付],"yyyy")-1),VALUE(FORMAT([日付],"yyyy")))
余談
- FORMATで年度を表示させる他、データに年月を持たせて(FORMAT([日付),”yyyymm”)の列を作る)おいて、その年月ごとに集計するやり方をよくやります。
※年月ごとの合計金額とか、人数カウントなどなど - ”mm”について、大文字or小文字で意味合いが違うことがあります。
Analysis Serviceなど他データモデルでは、大文字(“MM”)だと1月など1桁月は頭に0がつきますが、小文字(“mm”)は頭に0がつかないことがあります。
特に理由がない限りは、その辺がごチャラないよう、大文字で私は統一しています。