ITの隊長のブログ

ITの隊長のブログです。Rubyを使って仕事しています。最近も色々やっているお(^ω^ = ^ω^)

BigQueryでクエリのエクスポートをスケジュールジョブで叩くSQLを用意する

スポンサードリンク

実行した日から去年のデータをエクスポートしたかった。年単位で実行したかったので、こういう感じで設定するといけた。

1st monday of january 09:00

叩くクエリは下記。

DECLARE run_date DATE;
DECLARE last_year INT64;
DECLARE start_date DATE;
DECLARE end_date DATE;
DECLARE file_name STRING;
SET run_date = CURRENT_DATE();
SET last_year = EXTRACT(YEAR FROM DATE_SUB(run_date, INTERVAL 1 YEAR));

-- 去年の1/1から12/31の日付を取得.
SET (start_date, end_date) = (DATE(last_year, 1, 1), DATE(last_year, 12, 31));

-- エクスポートするbucket名とファイル名の指定
-- 1GB以上の場合は複数ファイルで出力するのでワイルドカードの指定が必要
-- https://cloud.google.com/bigquery/docs/exporting-data?hl=ja#exporting_data_into_one_or_more_files
SET file_name = CONCAT('gs://bucket_name/', last_year, '/', last_year, '-*.csv');

EXPORT DATA
OPTIONS(
  uri=(file_name),
  format='CSV',
  compression='GZIP',
  overwrite=true,
  header=true,
  field_delimiter=',')
AS SELECT * FROM `database_name.table_name` WHERE visited_date BETWEEN start_date AND end_date;

参考URL