字段在BigQuery中是否具有NULLABLE和REPEATED模式?

时间:2017-10-21 19:56:35

标签: google-bigquery

BigQuery中的字段是否可以使用NULLABLE 重复模式?例如,表示字符串数组,其中某些字符串可能为NULL。

2 个答案:

答案 0 :(得分:4)

  

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

不。无论是一个还是另一个

ARRAYs cannot be NULL.   
NULL ARRAY elements cannot persist to a table.   

Data Types

中查看详情
  

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

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

  
#standardSQL
WITH test AS (
  SELECT ['abc', NULL, 'xyz']  
)
SELECT *
FROM test  

答案 1 :(得分:4)

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

nullable_arr ARRAY<STRUCT<value INT64>>

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

nullable_arr STRUCT<value ARRAY<STRUCT<value INT64>>>

当然,缺点是查询需要更多语法。如果你想得到用后一种类型定义的数组中元素的总和,你必须这样做:

SELECT (SELECT SUM(elem.value) FROM UNNEST(nullable_arr.value) AS elem) AS array_sum
FROM MyTable;

为了便于比较,将名为arr的列的总和定义为ARRAY<INT64>可以表示为:

SELECT (SELECT SUM(elem) FROM UNNEST(arr) AS elem) AS array_sum
FROM MyTable;