【发布时间】:2020-12-01 16:27:25
【问题描述】:
我在雪花中有一个表 (table_1),它有 3 列。第一列是 JSON 数据,其中包含数组。这是“JSON”列中一个值的示例:
{
"authors": [
{
"name": "Jim Bob, Jimothy Bob"
}
],
"date": 1578352260,
"publishers": [
{
"name": "Bob Jim"
}
],
"title": "A Look at Ants Through The Ages",
"editors": [
{
"name": "Jim Bobby"
}
]
}
现在,我正在尝试将所有这些取消嵌套并将其展平到一个新表中,但每次我这样做只是创建一个包含 0 行和 0 个数据的表。这是我尝试这样做的方法:
create or replace table table_2 as
select
json:editors::varchar as editors,
json:authors::varchar as authors,
json:publishers::varchar as publishers,
json:date::varchar as date,
json:title::varchar as title
from table_1,
lateral flatten(input=>json:table_1);
想要的结果是
editors authors publishers date title
Jim Bobby Jim Bob Bob Jim 1578352260 A Look at Ants Through The Ages
Jimothy Bob Jim Bob Bob Jim 1578352260 A Look at Ants Through The Ages
实际结果是一个成功创建的空表。
如何展平这些 JSON 数据?
感谢您的帮助。
【问题讨论】:
-
为什么要在输出中包含两行?然后,您应该将每个名称放在作者数组中的不同元素中,而不是用逗号分隔。
-
@JaimeDrq 我无法选择获取此 JSON 文件的方式。然而,我的任务是让它看起来像预期的结果。
-
那么该路径中的数组用途是什么?
标签: sql json snowflake-cloud-data-platform create-table flatten