bigquery:需要为相关子查询中的记录类型返回唯一的值

wlsrxk51  于 2021-07-26  发布在  Java
关注(0)|答案(1)|浏览(266)

我有一个这样格式的大查询表

我有以下格式的表的记录值:

同一示例id和项目id可以在不同的时间序列中重复任意次数。我正在尝试一个select语句,它将为每行返回一个值(没有cartestian乘积)
输出类

InstanceId    ProjectId Time

    2763333     manage-x 10:30
    2763333     manage-x 11:30
    2763334     manage-y 10:30

因为这是一种记录类型,所以我尝试了这个方法,表名是metric

select res.value from metric,unnest(resource.labels) as res where res.key="instance_id"

这给了我2763339646023081的corect值
现在我想在同一个语句中获取项目的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"

因此,如上所示,我不知道如何在内部子查询中引用示例id来获得相应的项目id,我对bigquery非常陌生,我尝试过各种连接组合,但它不起作用,并给我cartestian产品。请给出你的建议和帮助。谢谢

nwlls2ji

nwlls2ji1#

下面是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`

相关问题