2016-09-21 26 views
0

在BigQuery中,可以將新查詢的結果寫入新表。我希望僅當查詢返回至少一行時才創建表。基本上我不想最終創建空表。我找不到這樣做的選項。 (我正在使用Python庫,但我想這同樣適用於原始API)僅當查詢不爲空時,才從查詢寫入BigQuery中的表

+0

你不能使用某種默認設置嗎?如果EMPTY然後使用默認值? – xCloudx8

+0

@ xCloudx8不確定我們是否在同一頁面上。我在說這個:http://stackoverflow.com/a/14634697/825190 –

+1

我也不明白,bigquery中的每個查詢都創建了一個表,即使它是匿名的。如果不是空的,必須有第二個操作來重寫某個表。據我所知,你無法避免這種情況。 – Pentium10

回答

1

由於您必須在查詢定義中指定目標,並且在運行時不知道它會返回什麼,所以您可以把LIMIT 1加到最後?

您可以檢查job result object中的行號,然後在沒有限制器的情況下重新運行查詢,如果新表中有結果的話。

+0

對不起,我忘了提這個。當然,你可以按照你的建議分兩步進行。我的問題是關於在一次通話中做到這一點。 –

+0

我從來沒有在BigQuery中呆過那麼久,但似乎並不像你所要求的那樣。查詢運行並將結果放入表中或存儲器/應用程序中,並且在查詢運行之前必須定義該結果。 – Bmo

1

沒有辦法一步到位。我建議運行查詢,檢查結果,然後使用WRITE_TRUNCATE執行表副本,以便將結果提交到最終位置(如果中間輸出至少包含一行)。

相關問題