【发布时间】:2021-12-08 05:56:30
【问题描述】:
我有一个包含许多 JSON 文件的 VARIANT 表,但为了示例和说明我的问题,我们只看下面的两行。
{ “id”:“1”, “领域”: [ { “id”:“somekey1”, “价值”:“价值1” }, { “id”:“somekey2”, “价值”:“价值2” } ] }, { “身份证”:“2”, “领域”: [ { “id”:“somekey1”, “价值”:“价值1” }, { “id”:“somekey2”, “价值”:“价值2” }, { “id”:“somekey3”, “价值”:“价值3” } ] }我想写一个查询来给我这个输出:
| 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 中解决此问题的最佳方法是什么?
【问题讨论】:
-
在示例中,数组中的两个对象是在表中的单行中,还是在两个不同的行中?
-
对不起,是的,它是两个单独的行
-
我认为你只需要添加一个
listagg或array_agg函数来在你扁平化它们之后聚合你的结果。 -
嗨,迈克,谢谢,它适用于添加 OUTER => TRUE 参数。但是我现在遇到了一个新问题,我将编辑我的问题以显示它。
标签: snowflake-cloud-data-platform snowflake-schema