gpt4 book ai didi

sql - 如何在 BigQuery 中查找数组中的元素

转载 作者:行者123 更新时间:2023-12-04 04:02:38 25 4
gpt4 key购买 nike

我正在尝试在数组中搜索具有某些键值对的行。我的 BigQuery 表中的一行看起来像这样。

{
"ip": "192.168.1.1",
"cookie" [
{
"key": "apple",
"value: "red"
},
{
"key": "orange",
"value: "orange"
},
{
"key": "grape",
"value: "purple"
}
]
}

我想过使用如下所示的隐式 UNNEST 或 CROSS JOIN,但它不起作用,因为取消嵌套只会创建多个不同的行。
SELECT ip
FROM table t, t.cookie c
WHERE (c.key = "grape" AND c.value ="purple") AND (c.key = "orange" AND c.value ="orange")

This link非常接近我想要做的,除了他们使用的是 legacy SQL而不是 standardSQL

最佳答案

#standardSQL
SELECT ip
FROM yourTable
WHERE (
SELECT COUNT(1)
FROM UNNEST(cookie) AS pair
WHERE pair IN (('grape', 'purple'), ('orange', 'orange'))
) >= 2

您可以使用以下虚拟数据对其进行测试
#standardSQL
WITH yourTable AS (
SELECT '192.168.1.1' AS ip, [('apple', 'red'), ('orange', 'orange'), ('grape', 'purple')] AS cookie UNION ALL
SELECT '192.168.1.2', [('abc', 'xyz')]
)
SELECT ip
FROM yourTable
WHERE (
SELECT COUNT(1)
FROM UNNEST(cookie) AS pair
WHERE pair IN (('grape', 'purple'), ('orange', 'orange'))
) >= 2

如果您需要输出 ip 如果数组中至少有一对 - 您需要更改 >= 2>=1WHERE条款

关于sql - 如何在 BigQuery 中查找数组中的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42989922/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com