2015-10-26 72 views
2

我有返回幾十萬行的作業/查詢。我想獲得查詢的結果,並將它們作爲json存儲在存儲桶中。通過Google BigQuery API將查詢結果導出爲JSON

有沒有這樣做的直接方式?現在我能想到的唯一方法是:

  • 集allowLargeResults爲true
  • 設置一個隨機命名的目的地表來保存查詢輸出
  • 創建第二個作業中的「臨時來提取數據「目標表格到存儲桶中的文件
  • 刪除隨機的」臨時「表。

這似乎有點凌亂和迂迴。我將把所有這些都包含在一個與用戶界面相關的服務中,這些服務會讓很多用戶觸及它,而不願意管理所有這些臨時表。

回答

4

1)正如你所說的步驟是好的。您需要將Google雲端存儲用於導出作業。從BigQuery中導出數據解釋爲here,還檢查不同路徑語法的變體。

然後,您可以將文件從GCS下載到本地存儲。

Gsutil工具可以幫助您進一步將文件從GCS下載到本地計算機。

使用這種方法,您首先需要導出到GCS,然後轉移到本地機器。如果您有一個消息隊列系統(如Beanstalkd)來驅動所有這些操作,則可以輕鬆完成一系列操作:提交作業,監視作業狀態,完成初始化導出到GCS時,然後刪除臨時表。

另請注意,您可以通過API update a table並設置expirationTime屬性,使用此方法您不需要將其刪除。 2)如果使用BQ Cli工具,則可以將輸出格式設置爲JSON,並且可以重定向到文件。這樣你可以在本地實現一些出口,但是它有一些其他限制。

這出口第一1000線JSON

bq --format=prettyjson query --n=1000 "SELECT * from publicdata:samples.shakespeare" > export.json