なぜ重要か
従来は時間範囲の始点と終点を個別の列や条件で管理する必要がありました。PERIOD data typeにより、アンカー付きの時間範囲を単一値として扱い、範囲の重複・包含・交差・差分などを専用関数で操作できます。
対象となるチーム
- データモデリング担当者・データエンジニア
- 時系列分析・BIチーム
- データウェアハウス設計者
- SnowflakeのSQL標準化を担当するチーム
提供条件
- PERIOD data typeはGeneral availability
- 10.30 Release NotesはPreviewとして公開中
- 10.30リリース完了予定日は2026年8月25日(変更の可能性あり)
- エディション、リージョン、前提機能の記載はリリースノートに記載なし
ユースケース
- 有効期間や契約期間を、DATEまたはTIMESTAMPの範囲として単一値で管理する。
- 複数の時間範囲について、重複や包含関係を判定する。
- 時間範囲同士の交差部分を取得し、共通期間を分析する。
- 隣接または重なり合う期間の差分を確認し、範囲の比較や統合に利用する。
仕組みと使い方
PERIOD値は、DATE、TIME、またはTIMESTAMPを要素型として構築します。本文で示されている主な関数は次のとおりです。
PERIOD_CONSTRUCT:PERIOD値を構築PERIOD_BEGIN:開始境界を取得PERIOD_END:終了境界を取得PERIOD_OVERLAPS:範囲の重複を判定PERIOD_CONTAINS:範囲の包含を判定PERIOD_INTERSECT:範囲の交差を取得PERIOD_LDIFF:範囲の左側差分を扱うPERIOD_RDIFF:範囲の右側差分を扱う
具体的なSQL構文、戻り値、NULLの扱い、型変換規則はリリースノートに記載なしのため、公式のPERIOD data typeおよび各関数のリファレンスで確認してください。
導入ステップ
- 10.30のリリース完了状況と、対象アカウントでPERIOD data typeが利用可能かを確認する。
- 公式ドキュメントでPERIOD data typeと各関数の構文、引数型、戻り値を確認する。
- 既存の開始日時・終了日時の列を使う代表的なクエリを選び、PERIODで同等の結果が得られるか検証する。
- 重複、包含、交差、差分を含む境界値テストをDATE・TIME・TIMESTAMPごとに実施する。
- 性能、既存ビューやETLとの互換性、運用上のSQL標準化への影響を評価する。
運用上の注意
- PERIODは半開区間
[begin, end)であり、開始境界は含みますが終了境界は含みません。日付や時刻の境界条件を既存ロジックと照合してください。 - リリースノートはリリース完了前のPreviewであり、記載された機能がアカウントで利用可能になる時期はリリース完了状況に依存します。
- PERIOD_CONSTRUCTなど各関数の詳細な挙動は本文だけでは判断できないため、導入前に公式リファレンスと実環境で確認してください。
制約事項
- 本リリースノートには、PERIOD data typeのエディション別・リージョン別の提供条件が記載されていません。
- 本文には、CREATE TABLEでの宣言構文、キャスト、演算子、外部連携、ビューや既存SQLとの互換性に関する詳細が記載されていません。
- 性能特性、ストレージ上の扱い、各関数の境界値・NULL・異なる時間型間の動作は、リリースノートに記載なしです。
- 10.30 Release NotesはPreviewであるため、リリース完了前の提供状況や記載内容が変更される可能性があります。
次に確認すること
- Snowflake公式ドキュメントでPERIOD data typeとPERIOD_CONSTRUCT、PERIOD_BEGIN、PERIOD_END、PERIOD_OVERLAPS、PERIOD_CONTAINS、PERIOD_INTERSECT、PERIOD_LDIFF、PERIOD_RDIFFの詳細を確認する。
- 対象アカウントのリリース状況、利用可能リージョン、エディション、必要な権限や前提条件をSnowflake管理者に確認する。
- 半開区間の境界条件を含む代表クエリを非本番環境で検証し、既存の期間管理ロジックとの差分を記録する。
- Release notes change logと10.30の正式リリース後の更新内容を確認する。
公式情報
仕様・提供条件は更新される可能性があります。導入前に必ず公式リリースノートを確認してください。