BigQueryで実行したクエリ結果をCSVにエクスポートした方法を、
エクスポートするCSVの容量が小さい順に下記にまとめた。
BigQueryからローカル環境に直接エクスポート
画像のCSV(ローカルファイル)
を選択することで、最大10MBまでローカル環境に直接CSVをエクスポートすることができる。
BigQueryからGoogle Driveにエクスポート
前述の画像のCSV(Google ドライブ)
を選択すれば、1GBまでGoogledriveにCSVをエクスポートできる。
もっと大きい容量のCSVをエクスポートする場合は、troccoなどでBigQuery→Google Cloud Storageにエクスポートすることができた。
(下記のBigQueryからS3にエクスポートとほぼ同じ手順。容量制限なし)
BigQueryからS3にエクスポート
ETLツールのtroccoを使用して、
BigQueryでのクエリ実行結果をS3にCSV形式でエクスポートをした。(容量制限なし)
- troccoの
転送設定
をGoogle BigQuery->Amazon S3
に設定 - troccoの
転送設定
の編集画面に、SQL
という欄があるので、CSVにエクスポートしたいデータを呼び出すクエリを入力する。
※細かい設定は割愛
EXPORT DATA関数を使用して、BigQueryからGCSにエクスポート
troccoなどのETLツールを使用しなくても、EXPORT DATAステートメントを使用することで、
Google Cloud StorageにCSVをエクスポートすることもできる。
クエリの例
export data options (
uri = 'gs://バケット名/フォルダ名/ファイル名接頭辞_$content_id$_*.csv' -- バケットのuriを指定
, format = 'CSV' -- エクスポートするデータの形式をCSVに指定
, overwrite = true -- trueの場合、宛先の場所が上書きされる
, header = true -- trueの場合、各データファイルの最初の行に列ヘッダーが生成される
, field_delimiter = ',' -- フィールドを区切りに使用する区切り文字
) as
/* 抽出したいデータのクエリを記述する */
select
*
from
`テーブル名`
where
1=1
and content_id = '$content_id$' -- troccoのカスタム変数機能を使用すれば、content_id毎に別々のCSVファイルに結果をエクスポートできる。
※$content_id$
には、色々なcontent_idがtroccoのループ実行機能で格納されている。
参考:BigQuery の EXPORT DATA 関数でクエリ結果を様々なタイプで GCS に出力
参考:EXPORT DATAステートメント(公式ドキュメント)