在 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