I have a JSON array as follows:
This Json data is in the field called col1
in my_table
{ "JSON_DATA": { "ID": 1, "j_array": ["A","B"] } }
Here is my SQL to parse the JSON array:
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
My output is
|-------------|-----------------| | ID | j_array_values | |-------------|-----------------| | 1 | ["A","B"] | |-------------|-----------------| | 1 | ["A","B"] | |-------------------------------|
But I want the output to be like
|-------------|-----------------| | ID | j_array_values | |-------------|-----------------| | 1 | "A" | |-------------|-----------------| | 1 | "B" | |-------------------------------|
I have used used the lateral flatten but it didn’t work
Advertisement
Answer
Using 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;
Output:
+----+----------------+ | ID | j_array_values | +----+----------------+ | 1 | A | | 1 | B | +----+----------------+