取消
顯示的結果
而不是尋找
你的意思是:

複雜類型數組總是評價陣列<字符串> ?

pt-jake
新的貢獻者二世

複雜類型數組似乎總是評價陣列<字符串>。因此,鑄造用空數組值或試圖加載JSON數據失敗。例如,試圖把一個JSON值{“喜歡”:[]…}在負載下表模式失敗有以下錯誤:

模式:

數組< struct < gid:字符串,用戶:struct < gid:字符串,名稱:字符串,resource_type: string > > >

錯誤:

“錯誤複製:[DATATYPE_MISMATCH。CAST_WITHOUT_SUGGESTION]不能解決“喜歡”由於數據類型不匹配:不能把“數組<字符串>”“數組< STRUCT < gid:字符串、用戶:STRUCT < gid:字符串,名稱:字符串,resource_type: STRING > > >”

什麼是最好的方法來處理空/空complex-typed數組?

2回答2

Kaniz
社區經理
社區經理

嗨@Jake圖中,發生錯誤,因為係統無法確定空數組的結構,假設它是一個數組<字符串>,它不匹配預期的模式。

處理空/空complex-typed數組,您可以使用JSON預處理步驟輸入或修改您的查詢處理空數組的場景。

  • JSON輸入預處理:

JSON數據加載到餐桌前,您可以進行預處理以確保空數組至少有一個元素為每個字段空值,這將有助於維護模式。

例如,考慮到JSON對象:

{"喜歡":[]}

預處理它:

{"喜歡":[{“gid”: null, "用戶":{“gid”:空,“名字”:空,“resource_type”:零}}]}
  • 修改您的查詢處理空數組:

你可以使用一個CASE語句查詢處理空數組,而鑄造或加載數據。這裏有一個例子使用BigQuery SQL查詢語法:

選擇如果(ARRAY_LENGTH(喜歡)> 0,數組< STRUCT < gid:字符串、用戶:STRUCT < gid:字符串,名稱:字符串,resource_type: STRING > > >(喜歡),數組< STRUCT < gid:字符串、用戶:STRUCT < gid:字符串,名稱:字符串,resource_type: STRING > > > (STRUCT (null,結構(空,空,空))))從your_table_name

這個查詢檢查“喜歡”數組的長度。如果非空,數組按原樣。

如果空,它創建了一個數組和一個null-filled元素相匹配的模式。注意,語法可能取決於您的SQL方言。

選擇的方法,最適合您的需求和您正在使用的工具。

預處理JSON數據能夠幫助維護模式一致性,同時修改查詢允許您直接在SQL代碼處理空數組。

Vidula_Khanna
主持人
主持人

嗨@Jake圖

謝謝你發布你的問題在我們的社區!我們很高興幫助你。

幫助我們為您提供最準確的信息,請您花一些時間來回顧反應和選擇一個最好的回答了你的問題嗎?

這也將有助於其他社區成員可能也有類似的問題在未來。謝謝你的參與,讓我們知道如果你需要任何進一步的援助!

歡迎來到磚社區:讓學習、網絡和一起慶祝

加入我們的快速增長的數據專業人員和專家的80 k +社區成員,準備發現,幫助和合作而做出有意義的聯係。

點擊在這裏注冊今天,加入!

參與令人興奮的技術討論,加入一個組與你的同事和滿足我們的成員。

Baidu
map