2017-06-16 60 views
2

注意:這幾乎是this question的重複,區別在於在這種情況下,源表是日期分區的,目標表尚不存在。此外,在這種情況下,接受的解決方案並不適用於該問題。Google Bigquery:複製日期分區表所需的分區規範

我試圖從一個日期分區表複製一天的數據值到一個新的日期partitoined表,我還沒有創建。我希望BigQuery能夠像我們通常爲非日期分割的情況那樣爲我創建日期分割的目標表。

使用的BigQuery CLI,這裏是我的命令:

bq cp mydataset.sourcetable\$20161231 mydataset.desttable\$20161231 

下面是命令的輸出:

BigQuery error in cp operation: Error processing job 'myproject:bqjob_bqjobid': Partitioning specification must be provided in order to create partitioned table

我試着使用Python SDK做類似的東西:上運行SELECT命令一個日期分區表(它僅從一個日期分區中選擇數據)並將結果保存到一個新的目標表(我希望它也可以是日期分區)。作業失敗,出現相同的錯誤:顯然,我需要添加一個分區規範,但我找不到任何有關如何執行此操作的文檔。

回答

2

您需要先(as per the docs)創建分區的目標表:

If you want to copy a partitioned table into another partitioned table, the partition specifications for the source and destination tables must match.

所以,只要創建目標分區表,你開始複印之前。如果你不能打擾指定架構,您可以創建目標分區表所示:

bq mk --time_partitioning_type=DAY mydataset.temps 

然後,使用一個查詢,而不是一個副本寫入到目標表。該模式將與它一起復制:

bq query --allow_large_results --replace --destination_table 'mydataset.temps$20160101''SELECT * from `source`' 
+1

太糟糕了,沒有選擇告訴bigquery將日分區添加到目標表。但是,我不必指定模式真是太棒了 - 這是很痛苦的部分。 – conradlee