如何解决有没有办法通过数组的内容过滤 BigQuery 中的行?
我在 BigQuery 表中有如下数据:
[
{ "id": 1,"labels": [{"key": "a","value": 1},{"key": "b","value": 2}] },{ "id": 2,"value": 3}] },// a lot more rows
]
我的问题是,如何找到所有包含 "key" = "a"
、"value" = 1
以及 "key" = "b"
和 "value" = 3
的行?
我尝试了各种形式的 UNNEST
使用方法,但始终无法正确使用。 CROSS JOIN
为 labels
数组中的每个对象留下一行,使我无法同时查询它们。
解决方法
试试这个:
select *
from mytable
where exists (select 1 from unnest(labels) where key = "a" and value=1)
and exists (select 1 from unnest(labels) where key = "b" and value=3)
,
假设标签数组中没有重复的条目 - 您可以在下面使用
select *
from `project.dataset.table` t
where 2 = (
select count(1)
from t.labels kv
where kv in (('a',1),('b',3))
)
,
您可以尝试解析 JSON,然后您可以根据您的要求对其应用不同的过滤条件,在以下查询中,我尝试确定哪些记录具有 Key=a
,然后我尝试确定哪些记录具有 {{ 1}} 然后通过 value=30
:-
id
希望它对你有用。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。