BigQuery - 陣列資料型別



ARRAY 與 STRUCT 的比較

與允許包含不同型別資料的 STRUCT 型別不同,ARRAY 資料型別必須包含相同型別的資料。

  • 在像Python這樣的程式語言中,ARRAY(也稱為列表)用方括號表示:[ ]
  • STRUCT 型別可以包含其他 STRUCT(以建立非常巢狀的資料),ARRAY 不能包含另一個 ARRAY。
  • 但是,ARRAY 可以包含 STRUCT,因此開發人員可能會遇到包含多個巢狀 STRUCT 的 ARRAY。

BigQuery 不會將列標記為顯式的 ARRAY 型別。相反,它以不同的模式表示。常規的 STRING 型別具有“NULLABLE”模式,而 ARRAY 型別具有“REPEATED”模式。

ARRAY vs STRUCT

可以使用點選擇 STRUCT 型別,但是 ARRAY 型別在表面層操作方面受到更多限制。

可以將 ARRAY 作為分組元素進行選擇。

Select an ARRAY

但是,使用點或任何其他方法選擇陣列中的元素是不可能的,因此這將不起作用 -

Select an ARRAY

UNNEST() 函式

要訪問 store_information 中的名稱,需要執行一個額外的步驟:UNNEST(),這是一個將資料展平以使其更容易訪問的函式。

UNNEST() 函式與逗號一起在 FROM 子句中使用。作為上下文:逗號代表隱式的 CROSS JOIN。

要正確訪問此 ARRAY,請使用以下查詢 -

The UNNEST() Function

它將為您獲取如下所示的輸出表 -

The UNNEST() Function Output

除了使用 UNNEST() 之外,還可以為記錄設定別名。生成的別名“wd”然後可用於訪問未巢狀的資料。

廣告
© . All rights reserved.