TableauのDATENAME
関数は、日付データを「文字列」として表示したいときに使う重要な関数です。曜日や月などを名称(Sunday、Januaryなど)で取得できます。
目次
DATENAME関数とは?
DATENAME
には以下の2つの機能があります:
- 指定した**日時単位(例:month、weekdayなど)**を判定し、
- それに対応する名称(英語)を返す
例:2023年1月1日を変換
DATENAME("month", #2023-01-01#) // "January"
DATENAME("weekday", #2023-01-01#) // "Sunday"
※注意:「week」ではなく「weekday」で曜日名が返ります(”Sunday”など)。ここは間違われやすいポイントです。
DATENAME関数の基本構文
DATENAME("日時単位", [日付フィールド])
- 第1引数に文字列で日時単位を指定(例:”month”, “weekday”)
- 第2引数には対象となる日付フィールドを指定
DATENAMEで使える日時単位一覧
単位 | 意味・出力例 |
---|---|
“year” | 年(例:2023) |
“quarter” | 四半期(例:2)※4月基準 |
“month” | 月名(例:January) |
“day” | 日(例:1〜31) |
“dayofyear” | 年初からの日数(= day) |
“weekday” | 曜日名(例:Sunday) |
“week” | 年間の週番号(例:1〜52) |
“hour” | 時(例:0〜23) |
“minute” | 分(例:0〜59) |
“second” | 秒(例:0〜59) |
dayofyear
はDATENAME
ではday
と同じ出力になります。区別したいときはDATEPART
の使用を検討してください。
日本語で曜日表示するには?
Tableauは基本的に曜日や月を英語で返すため、日本語に変換したい場合は手動でマッピングします。
方法①:CASE関数でマッピング
CASE DATENAME("weekday", [オーダー日])
WHEN "Sunday" THEN "日曜日"
WHEN "Monday" THEN "月曜日"
WHEN "Tuesday" THEN "火曜日"
WHEN "Wednesday" THEN "水曜日"
WHEN "Thursday" THEN "木曜日"
WHEN "Friday" THEN "金曜日"
WHEN "Saturday" THEN "土曜日"
END
方法②:日付マスターテーブルを準備(推奨)
- データソースに「日付マスタ」を追加し、そこに曜日・月名の日本語列を持たせる
- マッピング・ジョインすれば多言語化対応も容易
よくある間違いと注意点
DATENAME("week", ...)
は週番号を返す → 曜日名がほしいなら"weekday"
DATENAME("dayofyear", ...)
はday
と同じ → 累積日数として扱いたいならDATEPART("dayofyear", ...)
- Tableauでは出力が常に英語 → 翻訳は手作業か外部データ連携で対応
実務で役立つユースケース集(基本〜応用)
1. 月別・曜日別ビューの作成(定番)
DATENAME("month", [注文日])
→ グラフの列軸やフィルターに使用して、名称ベースの比較表示が可能
2. ダッシュボードに当日の曜日を表示(Today関数との組み合わせ)
DATENAME("weekday", TODAY())
→ 今日が何曜日かを動的に表示(例:"Wednesday")
3. 曜日によって色やマークを変更(IF文との組み合わせ)
IF DATENAME("weekday", [日付]) = "Sunday" THEN "祝日色"
ELSE "通常色"
END
4. 平日・週末の分類(CASEでマッピング)
CASE DATENAME("weekday", [日付])
WHEN "Saturday" THEN "週末"
WHEN "Sunday" THEN "週末"
ELSE "平日"
END
5. 季節別分類(DATENAME(“month”)との組み合わせ)
CASE DATENAME("month", [日付])
WHEN "December" THEN "冬"
WHEN "January" THEN "冬"
WHEN "February" THEN "冬"
WHEN "March" THEN "春"
// 以下略
END
6. 月や曜日を名前順ではなくカレンダー順でソートする
DATENAME
は文字列なので並びがアルファベット順になりますDATEPART
と組み合わせてソートキーを作成:
DATEPART("month", [日付]) // 数値ソートキー
7. 多言語ダッシュボードでのラベル対応(ローカライズ)
- フィールドに
DATENAME("month", [日付])
を使いつつ、 - 言語ごとの翻訳マスタを用意してラベル対応
8. モバイルダッシュボードで日付ラベルを短縮表示
LEFT(DATENAME("weekday", [日付]), 3)
→ "Mon", "Tue" のような短縮ラベル表示
9. 曜日ごとの売上比較(列軸にDATENAME)
- 売上指標を縦軸、
DATENAME("weekday", [日付])
を横軸に使えば、曜日ごとの傾向が視覚化できる
10. 営業日・祝日除外ロジックとの組み合わせ(上級)
- DATENAMEで”Saturday”/”Sunday”を除外対象とし、
- 外部祝日カレンダーとJOINし、祝日も除外
まとめ
DATENAME
関数は、日付データを名称(英語)で扱いたいときに最適な関数です。
- 曜日・月・年などのテキスト化ができる
DATEPART
と違い、文字列として表示できるのが最大の特長- 英語出力のみのため、日本語化するなら変換処理が必要
「Tableauで曜日や月を名前で表示したい」「月別で折れ線グラフを作りたい」といったニーズに幅広く対応できる関数です。複雑な条件ロジックにも柔軟に組み込めるため、実務現場での汎用性は非常に高いです。
Comment