假设我在BigQuery查询中有以下json对象数组:
with tbl as (
select json '''{
"products": {
"product": [
{
"territory": "CA",
"sales_start_date": "2023-05-05"
},
{
"territory": "US",
"sales_start_date": "2023-06-05"
}
]
}
}''' as j)
select json_extract_array(j, '$.products.product') from tbl
如何将WHERE territory="CA" AND sales_start_date="2023-05-05"
的条件链接到查询?我已经将json值分解成一个数组,但我不确定从那里开始该去哪里。显然,我需要一个unnest,但是当我在json数组上尝试时,它告诉我:
不支持类型为ARRAY的IN UNNEST的第二个参数,因为数组元素类型在[16:10]处不是相等可比的
我该怎么解决这个问题呢?(顺便说一下,翻译成XPath将是以下查询://products/product[territory="CA" and sales_start_date="2023-05-05"]
)。
1条答案
按热度按时间xcitsw881#
一种更简单的方法是在table子句中使用
UNNEST
。下面是一个例子:请注意,在
WHERE
子句中需要将json
值转换为string
(bigquery不允许对json类型进行相等性检查)`。