0

根据BigQuery docs,我应该能够导出分区表的单个分区:

从分区表中导出所有数据与从非分区表中导出数据的过程相同。有关详细信息,请参阅导出表数据。要从单个分区导出数据,请将分区修饰符 $date 附加到表名。例如:mytable$20160201。

但是,运行以下提取命令会提取整个表,而不仅仅是一个分区。它快把我逼疯了!我究竟做错了什么?

bq --location=europe-west2 extract \
--destination_format NEWLINE_DELIMITED_JSON \
--compression GZIP \
bq-project-name:dataset.table_name$20200405 \
"gs://bucket-name/test_ga_sessions*.json.gz"

在此处添加源表的分区信息

源表分区信息

我还确认我尝试提取的分区存在

#legacySQL
SELECT
  partition_id,
  creation_time,
  creation_timestamp,
  last_modified_time,
  last_modified_timestamp
FROM
  [dataset.tablename$__PARTITIONS_SUMMARY__]
  where partition_id = '20200405'

在此处输入图像描述

4

1 回答 1

1

因为我bq extract在 bash shell 中运行命令,所以分区装饰器$20200405被解释为一个变量,并且是一个空的。因此,完整的分区标识符bq-project-name:dataset.table_name$20200405被解释为bq-project-name:dataset.table_name请求到达 BigQuery 的时间。

为了让这个命令正确运行,我所要做的就是$用反斜杠转义分区装饰器的字符,如下所示:

bq --location=europe-west2 extract \
--destination_format NEWLINE_DELIMITED_JSON \
--compression GZIP \
bq-project-name:dataset.table_name\$20200405 \
"gs://bucket-name/test_ga_sessions*.json.gz"
于 2020-07-04T09:51:23.233 回答