获取雪花中json数组中的所有值

时间:2021-05-01 14:45:54

标签: sql json snowflake-cloud-data-platform

我有一个 JSON 数组,如下所示:

此 Json 数据位于 col1 中名为 my_table 的字段中

{
"JSON_DATA": {
         "ID": 1,
         "j_array": ["A","B"]
   }
}

这是我解析 JSON 数组的 SQL:

SELECT col1:"JSON_DATA"."ID" as id,
       v.value as j_array_values       
from my_table, lateral flatten(input => col1."JSON_DATA"."j_array") v

我的输出是

|-------------|-----------------|
|     ID      | j_array_values  |
|-------------|-----------------|
|     1       |  ["A","B"]      |
|-------------|-----------------|
|     1       |  ["A","B"]      |
|-------------------------------|

但我希望输出像

|-------------|-----------------|
|     ID      | j_array_values  |
|-------------|-----------------|
|     1       |       "A"       |
|-------------|-----------------|
|     1       |       "B"       |
|-------------------------------|

我用过横向展平,但没用

1 个答案:

答案 0 :(得分:1)

使用 ApplicationExitInfo.REASON_ANR

FLATTEN

输出:

CREATE OR REPLACE TABLE my_table AS
SELECT PARSE_JSON('{"JSON_DATA": {
         "ID": 1,
         "j_array": ["A","B"]
   }
}') AS col1;


SELECT col1:JSON_DATA:ID::INT AS id,
       v.value::STRING AS j_array_values
FROM my_table, lateral flatten(input => col1:JSON_DATA:j_array) v;