日付・時間の整理
データ型とタイムゾーンを揃える
- 日付や時間のデータはすべて
datetime型
またはtimestamp型
に統一する - タイムゾーンは基点が日本なら
JST(UTC+9)
を基準とする(複数タイムゾーンが必要な場合は例外) unixtime
をそのまま使うのは絶対に避ける
日付や時間の区分を作る
- BIツール等で動的に変更できない場合は年/月/四半期/週/日でよく使うものを作る
- 四半期・週の始まりをどこに置くかは別途定義する
- 時間は 0〜23 時の数値またはゼロ埋めの文字列(例:
"01"
) - 区分は文字列型で作ることもある
- 先頭に数字を付けずに別にソート用の列を作る方法もある
種類 | 例 |
---|---|
年 | 2025(文字列型) / 2025-01-01(日付型) |
月 | 202501 / 2025-01-01 |
四半期 | Q1,Q2... |
曜日 | 01_月,...,07_日 |
時間 | 01,02... / 0,1,2... |
時間帯 | 01_朝,02_昼,03_夜 |
営業日/休日フラグを作る
- 曜日や月末月初など単純なルールで把握できない特殊なケースはフラグを作るのが良い
- 国民の祝日
- 年末年始休み
- お盆休み
- 企業独自の休日
- フラグは
営業日: true/false
、休日種別: "祝日" / "年末年始"
などでもよい。 - 曜日だけで判定可能な場合はあえて作らなくてもよい
正しくない日付への対処
- エラーではないが値として正しくない場合はそのままにしておくと集計時に困る
種類 | 内容の例 | よくある原因 | 対応方針例 |
---|---|---|---|
不完全な日付 | 2025-01 , 202501 , 2025 |
日付のはずが年月までしか記録されていない | 月までしかなければ1日にする |
実在しない日付 | 2024-04-31 , 2025-02-29 |
日付型への変換ミスなど | 翌月1日/NULLにする/固定日付に置換 |
非現実的な日付 | 2100-01-01 , 1900-01-01 |
初期値の設定ミス、入力ミス、システム側のエラー | NULLにする |
時系列の不整合 | start が 2025-01-01 、end が 2024-02-01 |
初期値の設定ミス、入力ミス、システム側のエラー | カラム名がずれているだけなら直す。システム側の問題ならば修正を依頼する |
想定期間の範囲外 | キャンペーン期間が2024-12-01 ~ 12-25 なのに11-30 のデータが入る |
設定し忘れで購入が発生、キャンペーンの延期、テストデータなど | NULLにする/除外 |
実態とカラム名の不整合への対処
- 中身と名前がずれているならば修正する
- 以下は代表的な例。命名規則の詳細は別途定義する
実態 | カラム名 | 修正例 |
---|---|---|
UTC | xxx_jst |
xxx_utc |
日時 | xxx_date |
xxx_datetime |
日付 | xxx_at |
xxx_date |