2016-06-10 29 views
2

我必須使用相同的模式tab1tab1_partitioned,其中後者按天分區。BigQuery插入到現有表格的分區表中

我試圖將數據插入到使用以下命令分區表:

bq query --allow_large_results --replace --noflatten_results --destination_table 'advertiser.development_partitioned$20160101' 'select * from advertiser.development where ymd = 20160101'; 

,但我得到了以下錯誤:

BigQuery error in query operation: Error processing job 'total-handler-133811:bqjob_r78379ac2513cb515_000001553afb7196_1': Provided Schema does not match Table 

兩個具有完全相同的架構,我真不不明白我爲什麼會得到這個錯誤。有人可以解釋我的問題嗎?

其實,我寧願如果BigQuery的支持是在蜂巢支持動態分區插入,但搜索的一些日子似乎都指向這是不可能的: -/

回答

3

您所看到的行爲是由於在與表分區一起使用時,我們如何處理寫置置。

您應該可以使用WRITE_APPEND處置追加到分區以使查詢通過。

bq query --allow_large_results --append_table --noflatten_results --destination_table 'advertiser.development_partitioned$20160101' 'select * from advertiser.development where ymd = 20160101'; 

使它與--replace一起工作有一些複雜性,但我們正在研究此時改進的表分區的模式支持。

請讓我知道如果這不適合你。謝謝!

要回答關於動態分區問題的其他部分 - 我們計劃支持更豐富的分區風格,並且我們相信他們將處理大部分用例。

+0

謝謝,你的建議確實有效。歡呼 – gire

+0

有關動態分區的額外要點:將現有數據插入分區bigquery表的最佳方式是什麼?我們在Hadoop中的現有表包含大量數據並已被分區 – gire

+0

如果在現有的bigquery日期分片表中有數據,則可以使用bq cp命令將其複製到分區表中。 如果您在bigquery之外有數據,則可以使用寫入表分區(例如:表$ 20160615)的加載作業作爲目標將其加載到BigQuery表中。這將確保數據在您選擇的分區中結束。 https://cloud.google.com/bigquery/docs/creating-partitioned-tables#restating_data_in_a_partition –

相關問題