Quantcast
Channel: ループタグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 92

SQLでループ文を作成する方法

$
0
0
概要 私はSQLでデータ抽出をする際にはLOOP処理ができたらいいなと思うことも多々ある。 例えばカラムを日付毎に先頭一行ある状態でcsvファイルをエクスポートしたいなどという場合である。 そのような場合に検討することは データベース言語のSQLでLOOP処理が実現可能なのかということである。 結論:SQLでLOOP処理は使用可能 1ヶ月分毎に指定した日付をエクスポート処理するクエリ BigqueryでSQLをたたいてGCSにエクスポートする sql DECLARE x INT64 DEFAULT 初期月 SET stores = ; --setでLOOP処理を終了させる条件の変数を作成する WHILE x <= stores DO EXPORT DATA OPTIONS( uri='gs://xxxxxxxxxxx-gcs-bucket-tokyo/export_sample/*.csv.gz', -- ファイルパスを指定。uriにはワイルドカード表記とする必要がある(ファイル名個別指定は出来ない) compression='GZIP', -- 圧縮形式を指定(GZIP, DEFLATE, SNAPPY)。未指定の場合は圧縮無し format='CSV', -- ファイルフォーマットを指定。CSV, JSON, AVROが選択可能 overwrite=true, -- ファイルが存在していた場合の上書き有無。未指定の場合はfalse header=true, -- ヘッダ行の有無。未指定の場合はfalse field_delimiter=',' -- 区切り文字を文字列として指定 ) AS SELECT * FROM データセット.テーブル名 WHERE 日付 = x; SET x = ADD_MONTHS(x, 1); END WHILE; まとめ 上記を定期スケジュールで実行させることで 定期的にファイルをGCSに抽出することが可能となる。

Viewing all articles
Browse latest Browse all 92

Trending Articles