BigQuery标准SQL嵌套字段查询:筛选含指定标题评论的行
如何在BigQuery中查询包含标题为"Hello"的评论的行
嘿,我明白你遇到的问题了——comments是一个数组类型的结构体(ARRAYcomments.title去访问肯定会报错,因为BigQuery不知道你要找数组里的哪一个元素的title。下面给你两种常用的正确查询方法,按需选择就行:
方法1:保留原表结构,仅筛选符合条件的行
如果你只想找出包含至少一条标题为"Hello"的评论的原数据行,不想改变原表的结构,推荐用EXISTS子查询配合UNNEST:
SELECT * FROM `...nested` WHERE EXISTS ( SELECT 1 FROM UNNEST(comments) AS comment WHERE comment.title = 'Hello' )
原理说明
UNNEST(comments)会把数组里的每个评论结构体拆成单独的行,然后子查询检查这些拆分后的评论里是否有title等于"Hello"的元素。只要存在这样的元素,对应的原数据行就会被筛选出来,而且原表的结构完全保留。
方法2:展开数组,查看具体匹配的评论
如果你需要同时查看原数据行和对应的匹配评论(比如想知道到底是哪条评论符合条件),可以用CROSS JOIN UNNEST来展开数组:
SELECT original.*, comment.* FROM `...nested` AS original CROSS JOIN UNNEST(original.comments) AS comment WHERE comment.title = 'Hello'
原理说明
这个语句会把原表的每一行和它包含的符合条件的评论进行关联,生成新的行。如果某一行有多个标题为"Hello"的评论,会生成多条对应的结果行,方便你查看具体的匹配内容。
内容的提问来源于stack exchange,提问作者user9114945
相关产品推荐
相关产品推荐

