sql - BigQuery:需要在相关子查询中返回记录类型的唯一值
问题描述
相同的实例 ID 和项目 ID 可以以不同的时间序列重复任何次数。我正在尝试一个选择语句,它将为每一行返回一个值(无笛卡尔积)
输出像
InstanceId ProjectId Time
2763333 manage-x 10:30
2763333 manage-x 11:30
2763334 manage-y 10:30
因为这是一个记录类型,我试过这个表名是公制
select res.value from metric,unnest(resource.labels) as res where res.key="instance_id"
这给了我 2763339646023081 的核心价值
现在我想在同一个语句中获取 project_id,所以我需要一个类似于 sql 的相关子查询
select res.value from metric,unnest(resource.labels) as res,(select proj.value from metric,unnest(resource.labels) as proj where proj.key="project_id" and this part i need help to refer the res.value(instance_id) from the outer query to match to the corresponding instance for the project_id in the inner query)) where res.key="instance_id"
因此,如上所示,我不确定如何在内部子查询中引用 instance_id 来获取相应的 project_id,我对 BigQuery 很陌生,我尝试了各种连接组合,但它不起作用并给了我 cartestian 产品。请提出您的建议和帮助。谢谢
解决方案
以下是 BigQuery 标准 SQL
#standardSQL
SELECT
(SELECT value FROM UNNEST(resource.labels) AS res WHERE key = 'instance_id') AS instance_id,
(SELECT value FROM UNNEST(resource.labels) AS res WHERE key = 'project_id') AS project_id
FROM `project.dataset.metric`
推荐阅读
- c++ - c++ std::vector 迭代器构造函数,第一个 == 最后
- c++ - 字符串操纵器使用 C++ 中的所有函数
- python - 如何使用 selenium/python 编辑 chrome 搜索和主页?
- scala - Spark 错误:ClassNotFoundException: scala.Cloneable
- python - 尝试将两个数据源/类型添加到 RecycleView 中的 SelectableButton
- javascript - 如何在 Angular6 中压缩 Base64/二进制图像?
- momentjs - 参考错误:未定义时刻(使用 moment.js)
- php - 从 API 调用获取响应时如何从数组中获取变量?
- vue.js - VueJS - 如何将函数传递给全局组件
- ldap - 如何连接到远程 ldap 服务器以从 Windows 10 操作系统执行 ldap 搜索?