BigQuery の日付/時刻型

BigQuery入門

Matt Forrest

Field CTO

日付と時刻が重要な理由

  1. 長いデータの絞り込みが容易
  2. 日付/時刻の一部を抽出
  3. パーティション戦略
BigQuery入門

日付

DATE 型の例

SELECT 
    DATE(2010, 05, 19) as launch


/*------------* | launch | +------------+ | 2010-05-19 | *------------*/
BigQuery入門

タイムスタンプ

タイムスタンプの例:

SELECT 
    TIMESTAMP("2010-05-19 00:00:00+00") as launch


/*-------------------------* | launch | +-------------------------+ | 2010-05-19 00:00:00 UTC | *-------------------------*/
BigQuery入門

Datetime と Time

Time と Datetime の例:

SELECT
  TIME(12, 00, 00) as noon,

DATETIME(2019, 05, 19, 00, 00, 00) as launch
/*----------+----------------------* | noon | launch | +----------+----------------------+ | 12:00:00 | 2019-05-19T00:00:00 | *----------+----------------------*/
BigQuery入門

日付とタイムスタンプの部品

日

  • DAY、DAYOFWEEK、DAYOFYEAR。

週

  • WEEK、WEEKDAY、ISOWEEK。

月/年

  • MONTH、QUARTER、YEAR、ISOYEAR。

時刻

  • HOUR、MINUTE、SECOND、MILLISECOND、MICROSECOND。
1 https://cloud.google.com/bigquery/docs/reference/standard-sql/timestamp_functions#timestamp_trunc
BigQuery入門

ADD、SUBTRACT、DIFF

5 日を加算

SELECT 
    DATE_ADD(DATE '2010-05-19', 
             INTERVAL 5 DAY) 
             AS five_days_later;

/*--------------------* | five_days_later | +--------------------+ | 2010-05-24 | *--------------------*/

差分を求める

SELECT 
    DATE_DIFF(DATE '2010-05-24', 
             DATE '2010-05-19', DAY) 
             AS difference;


/*-------------* | difference | +-------------+ | 5 | *-------------*/
BigQuery入門

EXTRACT

曜日を取得

SELECT 
    EXTRACT(DAYOFWEEK FROM DATE '2010-05-19') 
             AS day_of_week;


/*--------------* | day_of_week | +--------------+ | 4 | *--------------*/
BigQuery入門

FORMAT

SELECT
    FORMAT_DATE(
      '%x', DATE '2010-05-19') 
    AS with_slashes;


/*--------------* | with_slashes | +--------------+ | 05/19/10 | *--------------*/
SELECT
    FORMAT_DATE(
      '%A', DATE '2010-05-19') 
    AS dow;

/*--------------* | dow | +--------------+ | Wednesday | *--------------*/
1 https://cloud.google.com/bigquery/docs/reference/standard-sql/format-elements#format_elements_date_time
BigQuery入門

現在の日付/タイムスタンプ

現在のタイムスタンプ:

SELECT
  CURRENT_TIMESTAMP(); 

/*---------------------------------*
 | current_timestamp               |
 +---------------------------------+
 | 2023-11-13 17:35:25.951432 UTC  |
 *---------------------------------*/

現在の日付:

SELECT
  CURRENT_DATE();

/*---------------*
 | current_date  |
 +---------------+
 | 2023-11-13    |
 *---------------*/
BigQuery入門

チートシート

データ型

  • 日付は特定の日。タイムスタンプは絶対的な日時

日付/タイムスタンプの部品

  • 日付/時刻の部品(例: MONTH、HOUR)

加算/減算

  • 部品を加減する関数(例: DATE_ADD)

差分

  • 2 つの日付の部品単位の差(例: TIMESTAMP_SUB)

抽出と整形

  • 部品を抽出、日付を整形(例: EXTRACT、FORMAT)

現在の日付/タイムスタンプ

  • 現在の日付またはタイムスタンプを返す(例: CURRENT_TIMESTAMP)
BigQuery入門

練習しましょう!

BigQuery入門

Preparing Video For Download...