SQL“FROM UNNEST”的语义是什么?

SQL“FROM UNNEST”的语义是什么?,sql,google-bigquery,Sql,Google Bigquery,在阅读正式语言中的表达时,我习惯于从内到外阅读,即理解子表达并构建整体。在: 一个子表达式是 SELECT value.string_value FROM UNNEST(event_params) WHERE key = 'TITLE' 这不是一个普通的子查询:如果我尝试自己运行它,我会得到一个错误,因为event_params不是数组。看来 UNNEST可以与数组以外的其他对象一起使用。 外部查询中使用的表events_20180725有某种绑定,使得子查询中的UNNEST可以访问它。 包含

在阅读正式语言中的表达时,我习惯于从内到外阅读,即理解子表达并构建整体。在:

一个子表达式是

SELECT value.string_value FROM UNNEST(event_params) WHERE key = 'TITLE'
这不是一个普通的子查询:如果我尝试自己运行它,我会得到一个错误,因为event_params不是数组。看来

UNNEST可以与数组以外的其他对象一起使用。 外部查询中使用的表events_20180725有某种绑定,使得子查询中的UNNEST可以访问它。
包含“查询嵌套数组”下的一些示例,但实际上没有解释语义。这里发生了什么?

从事件中选择的外部查询将事件参数引入选择列表的范围。在选择列表中放置标量子查询时,该子查询可以引用外部范围中的列。UNNEST函数返回给定列引用的关系,该引用将其他列引入子查询的范围,在本例中为key和value。对于此标量子查询:

(SELECT value.string_value FROM UNNEST(event_params) WHERE key = 'TITLE')
按键筛选='TITLE'将UNNEST返回的行限制为键具有该值的行

UNNEST运算符获取一个数组并返回一个表,其中数组中的每个元素对应一行。您还可以在FROM子句之外使用UNNEST和IN运算符

对于大多数元素类型的输入数组,UNNEST的输出通常有一列。此单列有一个可选别名,可用于在查询的其他位置引用该列。具有这些元素类型的数组返回多个列:

结构 UNNEST破坏输入数组中元素的顺序。使用可选的WITH OFFSET子句返回第二列,其中包含数组元素索引,如下所示

对于结构的输入数组,UNNEST为每个结构返回一行,为结构中的每个字段返回一个单独的列。每列的别名是相应结构字段的名称


您可以在一个更适用的部分中阅读更多关于UNNEST的内容--转到那里,向下滚动一点,直到UNNEST部分

您似乎只是查看了文档中不匹配的部分-请参阅我答案中的更好链接
(SELECT value.string_value FROM UNNEST(event_params) WHERE key = 'TITLE')