2013-11-26 56 views
3

我有大約1000個文件有七列。其中一些文件有幾行有第八列(如果有數據的話)。靈活的模式與谷歌Bigquery

將此加載到BigQuery中的最佳方式是什麼?我必須找到並編輯所有這些文件到 - 在所有文件中添加一個空的第八列 - 從所有文件中刪除第八列?我不在乎這一欄的價值。

有沒有辦法指定架構中的八列,並在沒有可用數據時爲第八列添加一個空值。

我正在使用BigQuery API來加載數據,如果這可能有所幫助。

回答

1

如果您的日誌是JSON,您可以定義一個可爲空的字段,如果它沒有出現在記錄中,它將保持爲空。 我不知道它如何與CSV一起工作,但我認爲你必須有所有的領域(甚至是空的)。

+0

不幸的是我的源文件是CSV格式。 –

0

這裏有一個可能的解決方案,如果你不想擔心要改變CSV值(這將是我的建議,否則)

如果行有八個參數的數量相當小,您可以承擔「犧牲」這些行,然後您可以傳遞一個合理數量的maxBadRecords參數。在這種情況下,所有「壞」行(即不符合模式的行)都將被忽略,並且不會被加載。

如果您使用bigquery獲取統計信息並且可以忽略這些行,它可以解決您的問題。

+0

我沒有檢查過,但據我所知,它約佔數據的10%。特別是考慮到我們正在付費接收這些數據,所以要犧牲太多的信息。 –

+0

然後太糟糕了。無論如何,這是值得評論的。在這種情況下,恐怕你需要對行進行標準化,或者將空列添加到所有行中,或者將其從所在列表中刪除。 –

0

找到了一個可行的「黑客」。 使用七列模式爲每個文件執行一項作業,然後在具有八列模式的所有文件上運行另一項作業。其中一項工作將成功完成。節省我的時間分別編輯每個文件並重新上傳1000多個文件。