presto:将数组转换为行?

presto: convert array to rows?

我有一个 table 数组列 all_available_tags 和 used_tags.

example row1: 
all_available_tags:A,B,C,D
used_tags:A,B

example row2: 
all_available_tags:B,C,D,E,F
used_tags:F

我想从所有行中获取不同的 all_available_tags 集,并从所有行中获取所有 used_tags 集除外。从上面的示例中,所有行的 all_available_tags 将是 A、B、C、D、E、F,所有 used_tags 将是 A、B、F。我要找的最终结果是 C,D,E

我想我需要以某种方式调整 table 但可能有 100 个不同的标签,因此列出每个标签是不切实际的。有什么好的方法吗?

你可以试试:

with tags(at, ut) as
( 
select "A,B,C,D", "A,B"
union all
select "B,C,D,E,F", "F"
)
select splitat
from tags
cross join unnest(split(at, ",")) as t1 splitat
except
select splitut
from tags
cross join unnest(split(ut, ",")) as t2 splitut