2017-10-19 37 views
1

我們使用Bigquery流式插入和數據流一起使用預定義的Dataflow作業模板。使用帶有空字段的數據流的Bigquery流式插入

當我在可空和重複的字段中使用它時遇到了一些特殊情況。

例如,使用模式

name STRING, NULLABLE 

試圖做插入{name: null}

失敗,出現錯誤:

generic::invalid_argument: This field is not a record.","location":"name","message":"This field is not a record." 

這不是什麼大不了的,因爲這是很容易簡單地刪除空字段,對於空數組也是如此。

不過,現在如果我們的模式是:

name STRING, REPEATED 

,我們要插入["a", "b", null, "c"]我們得到了一個類似的錯誤引用第三個元素。

回答

1

要爲NULLABLE字段提供一個空值的行,只需從要插入的行中省略字段。對於第二個示例,REPEATED字段(或SQL中的ARRAY)不能包含空元素。要對一個NULLABLE STRING數組進行建模,可以使用包含字段名稱爲value的STRING字段的REPEATED RECORD,例如SQL語句中的ARRAY<STRUCT<value STRING>>等效字段。

+0

謝謝!對於後人來說,我認爲這裏的一部分混亂是由於將數據存儲區導出到bigquery中創建結構化屬性的模式。重複的結構屬性與奇異的領域被加載到bigquery作爲奇異的記錄與重複的領域(我不知道這是如何工作重複結構性質的重複領域...) 我能夠改變架構埃利奧特建議和一切工作。 – vmkrish