Pivot presto:将数组转换为行?

Pivot presto:将数组转换为行?,pivot,distinct,presto,Pivot,Distinct,Presto,我有一个包含数组列的表,其中包含所有可用的标记和已使用的标记 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 我想从所有行中获得一组不同的所有可用的\u标记,并从所有行中除去包含所有已使用的\u标记的集合。从上面的例子中,所有行的所有可用标记都是A、B、C、D、E、F,所有使用的标记都是A、B、F。我要寻找的最终结果是

我有一个包含数组列的表,其中包含所有可用的标记和已使用的标记

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
我想从所有行中获得一组不同的所有可用的\u标记,并从所有行中除去包含所有已使用的\u标记的集合。从上面的例子中,所有行的所有可用标记都是A、B、C、D、E、F,所有使用的标记都是A、B、F。我要寻找的最终结果是C、D、E

我想我需要以某种方式改变表格,但是可能有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
您可以尝试:

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