我正在尝试在 BQ 中解析这个 json。
{
"variations":[
{
"prime":{
"name":[
{
"variant":{
"indicator":["helm"]
}
},
{
"variant":{
"indicator":["chart"]
}
}]
}
}]
}
我想要的输出是
我尝试了下面的查询,得到 error: Scalar subquery produced more than one element.
。如果我重写它以使用嵌套数组,一切都会完美。但是,当我尝试遵循相同的概念使用标量子查询时,它不起作用。我认为这应该可行,但我不知道我错过了什么。
SELECT
ARRAY(
SELECT
STRUCT(
STRING_AGG(
(SELECT
STRING_AGG(JSON_EXTRACT_SCALAR(z, '$'))
FROM UNNEST(
(SELECT
JSON_EXTRACT_ARRAY(y, '$.variant.indicator')
FROM UNNEST(JSON_EXTRACT_ARRAY(x, '$.prime.name')
) AS y
)
) AS z)
) AS variant
)
FROM UNNEST(JSON_EXTRACT_ARRAY(json_string, '$.variations')) AS x
) AS variations
FROM json_string
任何帮助将不胜感激。
最佳答案
考虑以下方法
select
( select string_agg(trim(indicator, '"'))
from unnest(json_extract_array(json_string, '$.variations')) variation,
unnest(json_extract_array(variation, '$.prime.name')) variants,
unnest(json_extract_array(variants, '$.variant.indicator')) indicator
) variant
from your_table
如果应用于问题中的示例数据 - 输出为
关于sql - BigQuery JSON - 标量子查询生成多个元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71431416/