来自 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&lt;STRUCT&lt;year STRING, statCrewShirtNumber STRING&gt;&gt;。所以这不是一个基本结构,而是一个数组内部的结构。我们如何为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 未嵌套内部字符串列的主要内容,如果未能解决你的问题,请参考以下文章