簡體   English   中英

BigQuery JSON - 標量子查詢產生了不止一個元素

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM