我有以下代码,它从列中包含JSON数据的表创建了一个临时表。
CREATE TEMP TABLE temp_table AS
(
WITH
var1 AS (
SELECT ts
,col1 AS details
FROM raw_temp_table
,TABLE (flatten(input => $1,OUTER => TRUE)) var1
)
,var2 AS (
SELECT var1.ts
,col1 AS details
,details: "json_attr1" AS attr1
,details: "json_attr2" AS attr2
FROM var1
,TABLE (flatten(input => $2,OUTER => TRUE)) var2
WHERE KEY = 'some_key' -- "some-key" is not a column in any of the tables, but it is an attribute in the JSON
)
SELECT * FROM var2
);
字符串
解析的json看起来像这样:
{
"json_attr1": "val1",
"json_attr2": {
"data": [{...}]
}
}
型
我想从data
数组中获取对象,然后创建一个新表来保存它们,或者以某种方式将它们作为列添加到临时表中,因为我将在新查询中解析它们。我尝试添加一个新的var
,但我不知道如何使用结果。我还对,TABLE(flatten(input => $2)) var2 WHERE KEY = "some_key"
部分的具体功能感兴趣,因为我找不到任何其他例子。
有没有一种方法可以使用该查询将data
数组添加到表中?
1条答案
按热度按时间mrwjdhj31#
请检查以下查询是否为您服务。这里我用的是横向展平,这更方便。
Flatten将简单地展开任何嵌套对象并将它们放置到单独的行中。
字符串