根据 RECORD(repeated) 类型的列中不存在键来过滤 ROWs 列

Posted

技术标签:

【中文标题】根据 RECORD(repeated) 类型的列中不存在键来过滤 ROWs 列【英文标题】:to filter ROWs column based on non-existence of key in column of type RECORD(repeated) 【发布时间】:2020-09-16 11:21:07 【问题描述】:

我正在使用 Bigquery 表来收集 vm 数据,我使用了一个名为 metric 的表,其中嵌套了 RECORD 类型的重复列。名为 resource.labels 的 RECORD 类型列之一包含如下所示的键值对:(instanceid、project_id 等)。

其中一个找到。此可能存在也可能不存在,具体取决于条件。所以我需要一个查询来从 metric 表中选择 Found 键不存在的所有记录。

目前我正在取消嵌套记录,例如 select * from metric,unnest(resource.label) as res where res.key="Found"

我想要一个类似的查询,它可以准确地为我提供 Found 键不存在的记录。我正在使用 standard-sql

谢谢

【问题讨论】:

【参考方案1】:

以下是 BigQuery 标准 SQL

#standardSQL 
SELECT *
FROM `project.dataset.metric` t
WHERE 'Found' IN (SELECT key FROM t.resource.labels)   

【讨论】:

以上是关于根据 RECORD(repeated) 类型的列中不存在键来过滤 ROWs 列的主要内容,如果未能解决你的问题,请参考以下文章

如何在 QTableView 的列中显示下拉列表并根据下拉列表进行过滤

根据条件验证R中两个数据框之间的列中的值

什么函数允许我根据R中列中的值从数据框中的列中提取数据?

Python Pandas:无法根据 groupby 在两个不同的列中返回字典

如何根据两个逗号分隔值的列中的任何一个值获取记录

如何使用 Slick 在 Postgres 中将 json 对象插入到 jsonb 类型的列中