[英]BigQuery JSON - Scalar subquery produced more than one element
我正在嘗試在 BQ 中解析這個 json。
{
"variations":[
{
"prime":{
"name":[
{
"variant":{
"indicator":["helm"]
}
},
{
"variant":{
"indicator":["chart"]
}
}]
}
}]
}
我想要的 output 是
變體 |
---|
掌舵,圖表 |
我嘗試了下面的查詢,但error: Scalar subquery produced more than one element.
. 如果我重寫它以使用嵌套的 arrays,一切都會完美無缺。 但是,當我嘗試按照相同的概念使用標量子查詢時,它不起作用。 我認為這應該可行,但我不知道我錯過了什么。
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
如果應用於您問題中的示例數據 - output 是
with cte as (
select
(struct(json_extract_array(json_extract(variations, '$.prime.name'), '$.') as prime_name)).prime_name
from teste.teste, unnest(json_extract_array(json_string, '$.variations')) as variations
)
select string_agg(trim(indicator, '"'))
from cte,
unnest(cte.prime_name) as pn,
unnest(json_extract_array(json_extract(pn, '$.variant.indicator'), '$.')) as indicator
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.