在 Snowflake VARIANT 文件中查询列表
Querying list in a Snowflake VARIANT file
我有一个包含许多 JSON 文件的 VARIANT table,但是为了举例说明我的问题,我们只看下面的两行。
{
"id" : "1",
"fields":
[
{
"id": "somekey1",
"value" : "value1"
},
{
"id": "somekey2",
"value" : "value2"
}
]
},
{
"id" : "2",
"fields":
[
{
"id": "somekey1",
"value" : "value1"
},
{
"id": "somekey2",
"value" : "value2"
},
{
"id": "somekey3",
"value" : "value3"
}
]
}
我想写一个查询来得到这个输出:
ID
VALUES
1
["value1","value2","value3"]
2
["value1","value2"]
我已经尝试了很多东西,这个查询给了我一些结果,但离期望的输出还很远:
SELECT
file:id as ID,
s.value:value::varchar as VALUES
from variant_table,
table(flatten(FILE:fields)) s
结果如下,如果 fields
为空,则省略 JSON:
ID
VALUES
1
"value1"
1
"value2"
1
"value3"
2
"value1"
2
"value2"
在 Snowflake 中解决此问题的最佳方法是什么?
展平后,这会将行转换为 VALUES 列的数组:
SELECT
file:id::int as ID,
array_agg(s.value:value::varchar) as "VALUES"
from variant_table,
table(flatten(FILE:fields)) s
group by ID
我有一个包含许多 JSON 文件的 VARIANT table,但是为了举例说明我的问题,我们只看下面的两行。
{ "id" : "1", "fields": [ { "id": "somekey1", "value" : "value1" }, { "id": "somekey2", "value" : "value2" } ] }, { "id" : "2", "fields": [ { "id": "somekey1", "value" : "value1" }, { "id": "somekey2", "value" : "value2" }, { "id": "somekey3", "value" : "value3" } ] }
我想写一个查询来得到这个输出:
ID | VALUES |
---|---|
1 | ["value1","value2","value3"] |
2 | ["value1","value2"] |
我已经尝试了很多东西,这个查询给了我一些结果,但离期望的输出还很远:
SELECT
file:id as ID,
s.value:value::varchar as VALUES
from variant_table,
table(flatten(FILE:fields)) s
结果如下,如果 fields
为空,则省略 JSON:
ID | VALUES |
---|---|
1 | "value1" |
1 | "value2" |
1 | "value3" |
2 | "value1" |
2 | "value2" |
在 Snowflake 中解决此问题的最佳方法是什么?
展平后,这会将行转换为 VALUES 列的数组:
SELECT
file:id::int as ID,
array_agg(s.value:value::varchar) as "VALUES"
from variant_table,
table(flatten(FILE:fields)) s
group by ID