Power BIで日付テーブルを簡単に作成する方法 ~ Calendar関数 ~
日付テーブルを作る意味と利点
Power BIでは、売上や契約データなどの時系列分析を行う際に日付テーブルが必須です。 単にカレンダーを作るだけでなく、「年度」「四半期」「年月」「曜日」などの列を追加しておくことで、 スライサーやビジュアルで柔軟に集計・比較できるようになります。
Point!
日付テーブルは モデル全体の分析軸。必ず独立したテーブルを作成し、リレーションを張りましょう。
CALENDAR関数とCALENDARAUTO関数の書き方
Power BIには日付範囲を自動生成する便利な関数が用意されています。
| 関数 | 書き方 | 特徴 |
|---|---|---|
CALENDAR |
|
明示的に開始日・終了日を指定 ※式による指定も可能 |
CALENDARAUTO |
|
モデルに含まれる日付列の最小値〜最大値を自動検出 |
迷ったらまず CALENDARAUTO() を使うのがおすすめです。
ただし範囲を制御したい場合は CALENDAR を使いましょう。
汎用日付テーブルの完成形スクリプト
いちいち列を追加するのが面倒…という方は、以下のスクリプトを新しいテーブルに定義すれば大体の分析に対応できます。
現場でよく使われている分析内容を網羅していますので、ぜひコピペで活用してください!
準備①:画面左のテーブルマークを押下し、テーブルビュー(テーブル一覧やそのデータが見れる画面)に移動
準備②:画面上部「ホーム」タブの「新しいテーブル」を押下
準備③:式を記載するエリアにカーソルが当たり、「テーブル =」と出てくるので、それを消して以下の式をそのままコピペし、Enter
日付テーブル =
ADDCOLUMNS(
CALENDARAUTO(),
"yyyymmdd", FORMAT([Date], "yyyy年mm月dd日"),
"日付", DATE(YEAR([Date]), MONTH([Date]), DAY([Date])),
"年", YEAR([Date]),
"月", MONTH([Date]),
"MM月", FORMAT([Date], "MM月"),
"数値", DAY([Date]),
"DD日", FORMAT([Date], "DD日"),
"年月", VALUE(FORMAT([Date], "yyyyMM")),
"yy/MM", FORMAT([Date], "yy/MM"),
"週", WEEKNUM([Date], 1),
"第00週", FORMAT(WEEKNUM([Date], 1), "第00週"),
"曜日", FORMAT([Date], "aaa"),
"日曜日", FORMAT([Date], "DDaaa"),
"年度", IF(MONTH([Date]) > 3, YEAR([Date]), YEAR([Date]) - 1),
"年度_数値", FORMAT(IF(MONTH([Date]) > 3, YEAR([Date]), YEAR([Date]) - 1), "0年度"),
"会計年度", IF(MONTH([Date]) < 4, YEAR([Date]) - 1, YEAR([Date])),
"年度四半期", IF(MONTH([Date]) < 4, 4, IF(MONTH([Date]) < 7, 1, IF(MONTH([Date]) < 10, 2, 3))),
"年度四半期_Q", IF(MONTH([Date]) < 4, "4Q", IF(MONTH([Date]) < 7, "1Q", IF(MONTH([Date]) < 10, "2Q", "3Q"))),
"年四半期_Q", IF(MONTH([Date]) < 4, "1Q", IF(MONTH([Date]) < 7, "2Q", IF(MONTH([Date]) < 10, "3Q", "4Q")))
)
よく使う日付列をまとめた日付テーブルが完成!
Point!
列を多めに用意しておいて損はありません!式自体が参考になることもあるので、ぜひ活用しましょう。
まとめ
- 日付テーブルは分析の軸になるため必須
CALENDAR/CALENDARAUTOで簡単に生成可能- 汎用スクリプトを使えば実務で即利用できる
Power BIでのモデリングに困ったら
DAX設計やモデル最適化の相談もお気軽にどうぞ。
DAX設計やモデル最適化の相談もお気軽にどうぞ。