来自 ARRAY<STRUCT<STRING, STRING>> 的 BigQuery 未嵌套内部字符串列
Posted
技术标签:
【中文标题】来自 ARRAY<STRUCT<STRING, STRING>> 的 BigQuery 未嵌套内部字符串列【英文标题】:BigQuery unnest inner string column from ARRAY<STRUCT<STRING, STRING>> 【发布时间】:2021-11-15 17:04:48 【问题描述】:我无法在这里创建可重现的示例,因为我不太确定如何使用 ARRAY
而我们只是试图将 year 变成自己的列。我们尝试显而易见的:
select
customValues.year as year
from dataset.our_table
并得到错误Cannot access field year on a value with type ARRAY<STRUCT<year STRING, statCrewShirtNumber STRING>>
。所以这不是一个基本结构,而是一个数组内部的结构。我们如何为year
创建一个单独的列?
【问题讨论】:
【参考方案1】:您需要首先取消嵌套数组,如下例所示
select customValue.year as year
from `dataset.our_table` t,
t.customValues as customValue
【讨论】:
【参考方案2】:使用这个示例表,我在数组中也有一个结构。您可以简单地使用UNNEST 为每个字段设置单独的列。
请参阅下面的查询:
SELECT gender FROM `sandbox.test_table`, UNNEST(bikerides)
结果:
【讨论】:
以上是关于来自 ARRAY<STRUCT<STRING, STRING>> 的 BigQuery 未嵌套内部字符串列的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Impala 中插入 Array<Struct> 值?
Hive 使用自定义 udf 将 array<string, string> 转换为 array<struct<key:string, value:string>>
使用 `struct S const char *array[ARG_MAX]; 避免来自 `struct S as[] = NULL;` 的段错误;`? [复制]
使用了 unnest(),但仍然无法访问类型为 ARRAY<STRUCT<text STRING, language STRING>> 的值的字段文本,大查询