在BigQuery中,字段可以具有NULLABLE和REPEATED模式吗?

Eri*_*rik 4 google-bigquery

BigQuery中的字段可以具有NULLABLE REPEATED模式吗?例如,表示一个字符串数组,其中某些字符串可能为NULL。

Mik*_*ant 5

BigQuery中的字段可以具有NULLABLE和REPEATED模式吗?

不。一个或另一个

ARRAYs cannot be NULL.   
NULL ARRAY elements cannot persist to a table.   
Run Code Online (Sandbox Code Playgroud)

数据类型中查看更多

例如,表示一个字符串数组,其中某些字符串可能为NULL。

下面的简单示例表明 Array cannot have a null element;

ARRAYs cannot be NULL.   
NULL ARRAY elements cannot persist to a table.   
Run Code Online (Sandbox Code Playgroud)


Ell*_*ard 5

要表示具有 NULLABLE 元素的数组,您可以使用结构来包装它们。例如,您可以有一列,例如:

nullable_arr ARRAY<STRUCT<value INT64>>
Run Code Online (Sandbox Code Playgroud)

更进一步,您可以使用另一个间接级别来表示一个可能为空的数组,其中包含可能为空的元素:

nullable_arr STRUCT<value ARRAY<STRUCT<value INT64>>>
Run Code Online (Sandbox Code Playgroud)

当然,缺点是查询需要更多语法。如果您想获得使用后一种类型定义的数组中元素的总和,则必须执行以下操作:

SELECT (SELECT SUM(elem.value) FROM UNNEST(nullable_arr.value) AS elem) AS array_sum
FROM MyTable;
Run Code Online (Sandbox Code Playgroud)

为便于比较,取arr定义为 an的列的总和ARRAY<INT64>可表示为:

SELECT (SELECT SUM(elem) FROM UNNEST(arr) AS elem) AS array_sum
FROM MyTable;
Run Code Online (Sandbox Code Playgroud)