【发布时间】:2018-10-23 17:09:10
【问题描述】:
在阅读正式语言的表达式时,我习惯于从内到外阅读,即理解子表达式并构建整体。在this SQL snippet:
SELECT
(SELECT value.string_value FROM UNNEST(event_params) WHERE key = 'TITLE') AS level_id,
(SELECT value.string_value FROM UNNEST(event_params) WHERE key = 'url') AS url
FROM `events_20180725`
WHERE event_name = 'SCI_ERROR'
一个子表达式是
SELECT value.string_value FROM UNNEST(event_params) WHERE key = 'TITLE'
这不是一个普通的子查询:如果我尝试自己运行它,我会得到一个错误,因为event_params 不是一个数组。所以看来
-
UNNEST可以与数组以外的东西一起使用。 - 在外部
FROM中使用了表events_20180725的某种绑定,这使得子查询内的UNNEST可以访问它。
https://cloud.google.com/bigquery/docs/reference/standard-sql/arrays 包含一些示例(在“查询嵌套数组”下),但实际上并未解释语义。这是怎么回事?
【问题讨论】:
-
您似乎只是查看了文档中不是最匹配的部分-在我的答案中查看更好的链接
标签: sql google-bigquery