如何在BigQuery

时间:2017-04-28 01:55:16

标签: google-bigquery

我正在尝试将一个分区表复制到另一个分区表中。根据{{​​3}},这应该是可能的。

  

如果要将分区表复制到另一个分区表中,源表和目标表的分区规范必须匹配。

为了测试,我使用相同的架构创建了两个分区表(partition1& partition2)。我将3条记录推送到$20170101表格中的分区partition1

echo '{"a":1, "b":2}' | bq insert '<removed>.partition1$20170101'
echo '{"a":1, "b":2}' | bq insert '<removed>.partition1$20170101'
echo '{"a":1, "b":2}' | bq insert '<removed>.partition1$20170101'

看起来不错:

docs

接下来,我将2条记录推送到partition2表和同一分区($20170101):

echo '{"a":1, "b":2}' | bq insert '<removed>.partition2$20170101'
echo '{"a":1, "b":2}' | bq insert '<removed>.partition2$20170101'

同样,这看起来不错:

enter image description here

现在,我想将partition2附加到partition1。我希望在partition1分区下的$20170101中看到5条记录:

bq cp --append_table <removed>.partition2 <removed>.partition1
Waiting on bqjob_r6d160e17a3b7b733_0000015bb238aa54_1 ... (0s) Current status: DONE   
Tables '<removed>.partition2' successfully copied to '<removed>.partition1'

但是,partition1仍然只有3条记录。

我做错了什么?

2 个答案:

答案 0 :(得分:2)

这是我安装的gcloud工具版本中的错误。我更新了它,然后它按预期工作。

执行命令

gcloud components update

答案 1 :(得分:0)

我已经尝试过从gcloud这样的命令,它可以--

bq cp -a '<source_project>:<source_dataset>.<source_table>$20180605' <destination_project>:<destination_dataset>.<destination_table> 

它完全可以正常工作... 注意:-在上面的命令中,不需要提及目标分区值/信息。它会自动从源分区的数据/值中获取数据。