Snowflake cloud data platform 如何用数组转换雪花表

Snowflake cloud data platform 如何用数组转换雪花表,snowflake-cloud-data-platform,Snowflake Cloud Data Platform,我的查询结果如下所示: |KEY |VALUE | ---------------------------- |C1| |{1,2,3,4,5} | |C2| |{ 'a','b','c','d','e'}| |C3| |{1.0,2.0,3.0,4.0,5.0} | 如何将其转换为: |C1|C2 |C3 | ----------- |1 |'a'|1.0| |2 |'b'|2.0| |3 |'c'|3.0| |4 |'d'|4.0| |5

我的查询结果如下所示:

|KEY |VALUE                 |
----------------------------
|C1| |{1,2,3,4,5}           |
|C2| |{ 'a','b','c','d','e'}|
|C3| |{1.0,2.0,3.0,4.0,5.0} |
如何将其转换为:

|C1|C2 |C3 |
-----------
|1 |'a'|1.0|
|2 |'b'|2.0|
|3 |'c'|3.0|
|4 |'d'|4.0|
|5 |'d'|5.0|
给出:

KEY VALUE
C1  [    1,    2,    3,    4,    5  ]
C2  [    "a",    "b",    "c",    "d",    "e"  ]
C3  [    1,    2,    3,    4,    5  ]
BATCH   C1  C2  C3
0       1   "a" 1
0       2   "b" 2
0       3   "c" 3
0       4   "d" 4
0       5   "e" 5
1       6   "a" 11
1       7   "b" 12
1       8   "c" 13
1       9   "d" 14
1       10  "e" 15
因此,如果您有一个JSON对象,需要大小相等的值数组:

SELECT 
     json:C1[r.index] as C1 
    ,json:C2[r.index] as C2 
    ,json:C3[r.index] as C3 
FROM (
    SELECT parse_json('{"C1":[1,2,3,4,5],"C2":[ \'a\',\'b\',\'c\',\'d\',\'e\'],"C3":[1.0,2.0,3.0,4.0,5.0]}') as json
) , LATERAL FLATTEN (input=> json:C1, MODE=>'ARRAY' ) as r ; 
给予

其中,就好像在一个数组中有多批上述对象类型:

SELECT 
    r.index as batch
    ,r.value:C1[q.index] as C1 
    ,r.value:C2[q.index] as C2 
    ,r.value:C3[q.index] as C3 
FROM (
    SELECT parse_json('[{"C1":[1,2,3,4,5],"C2":[ \'a\',\'b\',\'c\',\'d\',\'e\'],"C3":[1.0,2.0,3.0,4.0,5.0]},{"C1":[6,7,8,9,10],"C2":[ \'a\',\'b\',\'c\',\'d\',\'e\'],"C3":[11.0,12.0,13.0,14.0,15.0]}]') as json
) , LATERAL FLATTEN (input=> json, MODE=>'ARRAY' ) as r
  , LATERAL FLATTEN (input=> r.value:C1, MODE=>'ARRAY' ) as q; 
给出:

KEY VALUE
C1  [    1,    2,    3,    4,    5  ]
C2  [    "a",    "b",    "c",    "d",    "e"  ]
C3  [    1,    2,    3,    4,    5  ]
BATCH   C1  C2  C3
0       1   "a" 1
0       2   "b" 2
0       3   "c" 3
0       4   "d" 4
0       5   "e" 5
1       6   "a" 11
1       7   "b" 12
1       8   "c" 13
1       9   "d" 14
1       10  "e" 15

您也可以共享给出这些结果的查询吗?类似这样的内容:SELECT*FROM SRC limit 1中的SELECT.Key、Record.Value,横向展平输入=>OBJ,模式=>'OBJECT'作为记录;whre src是一个json对象,属性为ArraySthanks Simeon,但第二个多行查询不起作用。@user2555515它适用于我提供的数据,鉴于我不得不猜测您的数据是什么样子,它不适用于您的数据一点也不奇怪。但希望你能看到我是如何为我拥有的数据工作的,也能看到你是如何使用这些工具来处理你的数据的。或者你可以修改问题,把你拥有的数据包括进去,然后你可能会得到一个准确的答案。但是你提供了你自己的数据。仅仅复制答案并粘贴到雪花工作表中并不会产生任何结果。不过,您的第一个示例非常有效,谢谢!很抱歉,我对雪花的了解使我无法找到一种简单的方法来修复您的第二个示例。@user2555515 omg,代表我的意思,这是一个完全的剪切粘贴错误。将正确的第二批SQL