sql - 从 bigquery 中的未嵌套行创建一个数组
问题描述
您好,我有一组数据如下:
我的 id 从 1 到 6。
对于 id 从 2 到 6 的行,必须有一个具有相同时间戳的条目。
我创建了这个请求:
SELECT t.timestamp, t.id, v.id FROM `myproject.mydataset.mytable` as t CROSS JOIN `myproject.mydataset.mytable` as v WHERE v.id <> t.id AND v.timestamp = t.timestamp AND t.id =2 ORDER BY t.timestamp
它给了我这个输出:
我们可以看到,当时间戳相同时,我得到了一行将 id 从 3 到 6 附加到 id 2 的行。我想要实现的是按时间戳仅返回 1 行,并且在“id_1”列中有一个带有 [3,4,5,6] 的数组。
我看到有一个 NEST() 函数,但我无法使用它。
谢谢 :)
解决方案
如果我理解正确,您正在描述ARRAY_AGG()
:
SELECT t.timestamp, t.id, ARRAY_AGG(v.id)
FROM `myproject.mydataset.mytable` t JOIN
`myproject.mydataset.mytable` v
ON v.timestamp = t.timestamp
WHERE v.id <> t.id AND t.id = 2
GROUP BY t.timestamp, t.id
ORDER BY t.timestamp
推荐阅读
- amazon-web-services - 在浏览器中打开对象 URL 时 AWS S3 访问被拒绝
- reactjs - 开玩笑快照测试未生成适当的快照并通过
- css - 我的主题是响应式的,但我的描述不适合移动设备,为什么?
- c# - 如何从 openapi 2.0 生成的对象命名空间中删除破折号
- ios - 如何使用 Foundation 框架在 Swift 中创建和运行线程?
- bash - 如何修改此 cron 脚本以将日期返回 2 天
- android - 未显示所有 SDK 平台
- javascript - 无法从 XHR 对象获取 responseText
- plotly - 如何调试模块“plotly.tools”没有属性“set_credentials_file”
- php - Laravel Carbon 日期格式为 2017-12-01T16:48:00