google-bigquery - BigQuery - 在标准 SQL 中查询嵌套字段
问题描述
我在 BigQuery 中有以下架构:
整个表格如下所示:
SELECT * FROM `...nested`
我现在只想查询所有带有标题为“Hello”的注释的行,而我正在想如何做到这一点。
SELECT * FROM `...nested` WHERE comments.title = 'Hello'
# Error: Cannot access field title on a value with type ARRAY<STRUCT<title STRING, message STRING>> at [1:69]
SELECT * FROM `...nested` WHERE comments.title IN ('Hello')
# Error: Cannot access field title on a value with type ARRAY<STRUCT<title STRING, message STRING>> at [1:69]
comments.title CONTAINS "Hello" 似乎是可用的旧版 SQL,所以我想知道等价物是什么。
解决方案
试试这个:
SELECT *
FROM dataset.nested
WHERE EXISTS (
SELECT 1 FROM UNNEST(comments)
WHERE title = 'Hello'
)
这将返回至少一条评论的标题为 Hello 的所有行。例如,您还可以使用LIKE
代替相等来查找子字符串。有关使用数组的更多信息,请参阅相关文档。
推荐阅读
- lua - 使用 luac 和 string.dump() 创建的 lua 5.1 字节码有区别吗?
- python - ssh2-python 包。userauth_publickey_fromfile 方法的有效参数
- rest - 如何使用rest api获取用户在Magento2中下的所有订单列表
- javascript - Unable to get Uint8Array bytes
- mysql - 如何在mysql中使用同一个表连接进行优化?
- kubernetes - 在 GCE 中添加 NAT 网关后“kubectl 日志”不起作用
- styled-components - 使用 styled-components 提供 css 类
- scala - Spark:如何根据 Scala 中的字符串模式进行分组?
- javascript - 未找到错误,但我没有在表中插入值
- python - python如何在Linux中看似没有正常系统调用的情况下确定PID?