使用配置单元中的集合列表和连接来修改查询以获得正确的结果

8ehkhllq  于 2021-06-26  发布在  Hive
关注(0)|答案(1)|浏览(213)

我在表中有以下数据集:

order_no    channel   
619         Sa        
619         Da        
619         Fa        
882         Fa        
882         Fa        
709         Sa        
709         Da        
274         Da        
274         Da

现在,我想根据订单号合并频道,如下所示

order_no    channel   Required Result   
619         Sa        Sa_Da_Fa          
619         Da        Sa_Da_Fa          
619         Fa        Sa_Da_Fa          
882         Fa        Fa_Fa             
882         Fa        Fa_Fa             
709         Sa        Sa_Da             
709         Da        Sa_Da             
274         Da        Da_Da 
274         Da        Da_Da

但我没有得到正确的结果时,渠道是相同的

order_no    channel   Actual Result 
619         Sa        Sa_Da_Fa          
619         Da        Sa_Da_Fa          
619         Fa        Sa_Da_Fa          
882         Fa        Fa                
882         Fa        Fa                
709         Sa        Sa_Da             
709         Da        Sa_Da             
274         Da        Da    
274         Da        Da

我正在使用以下查询:

select order_no, concat_ws('_',collect_set(distinct (channel))) as channels
from table A

问题是,如果与一起使用,集合将不会有任何重复值 distinct . 有没有其他方法来写这个查询?

dzhpxtsq

dzhpxtsq1#

基本上,你做的工作比你需要的要多。 collect_set() 无论如何都会消除重复项,这就是为什么不需要使用 distinct 接线员。
如果你想包括双磷酸盐,你需要使用 collect_list() 功能。
另请参见配置单元语言手册。

相关问题