从命令行轻松运行BigQuery查询并下载结果?

时间:2017-05-09 14:45:00

标签: google-bigquery google-cloud-storage

我正在使用BigQuery进行一些数据处理,并希望将某些查询的输出用作数据处理管道下一阶段的输入,理想情况下允许我这样做:

bigquery $QUERY | ./process.sh

我能够通过以下方式实现类似的目标:

bq --nosync query --max_rows 100000000 --use_cache --batch --use_legacy_sql=false $QUERY

bq wait $JOBID

bq --format csv head -j $JOBID --max_rows 100000000 | ./process.sh

但我不确定使用head下载所有数据(数千万行)是否效率低于将结果写入表格,然后将其导出到Google存储,然后下载吗?是否有任何现有的工具可以为我提取所有这些,让我运行一个查询,然后为我发送/下载完整的输出?

1 个答案:

答案 0 :(得分:0)

使用head您可能会达到API配额限制,而且这些数据的性能非常差,因为它不是它的目的。另请注意,设置max_rows above the limit只会返回限制。您想要导出目标表是正确的方法。 您可以找到有关导出here以及从gcs here下载的详细信息。

bq extract --destination_format=NEWLINE_DELIMITED_JSON 'bigquery-public-data:samples.shakespeare' gs://example-bucket/shakespeare.json


gsutil cp -r gs://example-bucket/shakespeare.json local_dir