您可以使用以下方法创建您想要的结果
with tbl as (select 'foo' other_data, parse_json('[{
"name": "wave",
"users": ["UM6G1DGBG", "UUW2KMQF8", "UG47U9K9N", "U01KCT0KJHL", "U7GRE4E9M", "UU1V5U3B4", "U01S7RRG21Y", "U013J1D5NFQ", "U020AS49MFA", "U010F5EDDQV", "U01ETTJHY4F"],
"count": 11
}, {
"name": "wave::skin-tone-3",
"users": ["UUBFUS220"],
"count": 1
}, {
"name": "fire",
"users": ["U01ETTJHY4F"],
"count": 1
}]') users)
select
other_data,
user_ids.value,
u.value:name,
u.value
from tbl,
lateral flatten(users) u,
lateral flatten(u.value:users) user_ids
;
OTHER_DATA VALUE U.VALUE:NAME VALUE
foo "UM6G1DGBG" "wave" { "count": 11, "name": "wave", "users": [ "UM6G1DGBG", "UUW2KMQF8", "UG47U9K9N", "U01KCT0KJHL", "U7GRE4E9M", "UU1V5U3B4", "U01S7RRG21Y", "U013J1D5NFQ", "U020AS49MFA", "U010F5EDDQV", "U01ETTJHY4F" ] }
foo "UUW2KMQF8" "wave" { "count": 11, "name": "wave", "users": [ "UM6G1DGBG", "UUW2KMQF8", "UG47U9K9N", "U01KCT0KJHL", "U7GRE4E9M", "UU1V5U3B4", "U01S7RRG21Y", "U013J1D5NFQ", "U020AS49MFA", "U010F5EDDQV", "U01ETTJHY4F" ] }
foo "UG47U9K9N" "wave" { "count": 11, "name": "wave", "users": [ "UM6G1DGBG", "UUW2KMQF8", "UG47U9K9N", "U01KCT0KJHL", "U7GRE4E9M", "UU1V5U3B4", "U01S7RRG21Y", "U013J1D5NFQ", "U020AS49MFA", "U010F5EDDQV", "U01ETTJHY4F" ] }
foo "U01KCT0KJHL" "wave" { "count": 11, "name": "wave", "users": [ "UM6G1DGBG", "UUW2KMQF8", "UG47U9K9N", "U01KCT0KJHL", "U7GRE4E9M", "UU1V5U3B4", "U01S7RRG21Y", "U013J1D5NFQ", "U020AS49MFA", "U010F5EDDQV", "U01ETTJHY4F" ] }
foo "U7GRE4E9M" "wave" { "count": 11, "name": "wave", "users": [ "UM6G1DGBG", "UUW2KMQF8", "UG47U9K9N", "U01KCT0KJHL", "U7GRE4E9M", "UU1V5U3B4", "U01S7RRG21Y", "U013J1D5NFQ", "U020AS49MFA", "U010F5EDDQV", "U01ETTJHY4F" ] }
foo "UU1V5U3B4" "wave" { "count": 11, "name": "wave", "users": [ "UM6G1DGBG", "UUW2KMQF8", "UG47U9K9N", "U01KCT0KJHL", "U7GRE4E9M", "UU1V5U3B4", "U01S7RRG21Y", "U013J1D5NFQ", "U020AS49MFA", "U010F5EDDQV", "U01ETTJHY4F" ] }
foo "U01S7RRG21Y" "wave" { "count": 11, "name": "wave", "users": [ "UM6G1DGBG", "UUW2KMQF8", "UG47U9K9N", "U01KCT0KJHL", "U7GRE4E9M", "UU1V5U3B4", "U01S7RRG21Y", "U013J1D5NFQ", "U020AS49MFA", "U010F5EDDQV", "U01ETTJHY4F" ] }
foo "U013J1D5NFQ" "wave" { "count": 11, "name": "wave", "users": [ "UM6G1DGBG", "UUW2KMQF8", "UG47U9K9N", "U01KCT0KJHL", "U7GRE4E9M", "UU1V5U3B4", "U01S7RRG21Y", "U013J1D5NFQ", "U020AS49MFA", "U010F5EDDQV", "U01ETTJHY4F" ] }
foo "U020AS49MFA" "wave" { "count": 11, "name": "wave", "users": [ "UM6G1DGBG", "UUW2KMQF8", "UG47U9K9N", "U01KCT0KJHL", "U7GRE4E9M", "UU1V5U3B4", "U01S7RRG21Y", "U013J1D5NFQ", "U020AS49MFA", "U010F5EDDQV", "U01ETTJHY4F" ] }
foo "U010F5EDDQV" "wave" { "count": 11, "name": "wave", "users": [ "UM6G1DGBG", "UUW2KMQF8", "UG47U9K9N", "U01KCT0KJHL", "U7GRE4E9M", "UU1V5U3B4", "U01S7RRG21Y", "U013J1D5NFQ", "U020AS49MFA", "U010F5EDDQV", "U01ETTJHY4F" ] }
foo "U01ETTJHY4F" "wave" { "count": 11, "name": "wave", "users": [ "UM6G1DGBG", "UUW2KMQF8", "UG47U9K9N", "U01KCT0KJHL", "U7GRE4E9M", "UU1V5U3B4", "U01S7RRG21Y", "U013J1D5NFQ", "U020AS49MFA", "U010F5EDDQV", "U01ETTJHY4F" ] }
foo "UUBFUS220" "wave::skin-tone-3" { "count": 1, "name": "wave::skin-tone-3", "users": [ "UUBFUS220" ] }
foo "U01ETTJHY4F" "fire" { "count": 1, "name": "fire", "users": [ "U01ETTJHY4F" ] }```
So to create the table do something like `create table flattened_tbl(other_data, user_name, user_data) as select other_data, u.value:name, u.value from tbl, lateral flatten(users) u;`