BigQueryにはテーブルデータをCloud Storageにエクスポートする機能があります。
こちらの機能を使用してエクスポートするファイルサイズ上限とファイル数を制限してエクスポートする方法についてご紹介します
ドキュメントにもある通り、エクスポートするファイルのサイズを制限する場合は、テーブルデータをパーティションで分割し、パーティションごとにエクスポートすることで実現できます。
下記のSQLでファイルサイズを制限しながらエクスポートは出来るものの、ドキュメントにもあるようにEXPORT DATAステートメントではワイルドカードを使用したURIしか使用できず、単一のURIを使用することが出来ません。
EXPORT DATA
OPTIONS (
uri = 'gs://temp_bucket/test_export*',
format = 'CSV',
compression = 'GZIP',
overwrite = true,
header = true,
field_delimiter = ',')
AS (
SELECT * EXCEPT(partition_id)
FROM `table_name`
WHERE partition_id = 0
)
ワイルドカードを使用したURIの場合、テーブルデータのサイズによっては複数のファイルに分割されてしまう可能性があります。そのため、当初のパーティション数以上のファイルが生成される可能性があります。
ファイルサイズ上限を制限した上でエクスポートされるファイル数も制限したい場合、EXPORT DATAステートメントではなくbqコマンド or クライアントライブラリを使う必要があります。
bqコマンド or クライアントライブラリを使う場合、EXPORT DATAステートメントのようにSQLでの抽出結果をエクスポートすることが出来ず、エクスポート対象のテーブルしか出来ません。
そのため、パーティションごとに一時テーブルを作成し、その一時テーブルを指定してエクスポートする必要があります。