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

Hive 使用配置单元中的集合列表和集合,修改查询以获得正确的结果,hive,hiveql,Hive,Hiveql,我在表格中有以下一组数据: order_no channel 619 Sa 619 Da 619 Fa 882 Fa 882 Fa 709 Sa 709 Da 274 Da 274 Da 现在,我想根据订单号组

我在表格中有以下一组数据:

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
一起使用,则集合将不会有任何重复值。有没有其他方法来编写此查询?

基本上,您所做的工作比需要的要多

collect\u set()
无论如何都会消除重复项,这就是为什么不需要使用
distinct
操作符的原因

如果您想包含双磷酸盐,则需要使用
collect\u list()
函数


另请参见。

谢谢您提供的信息。但我确实希望动态地使用distinct和duplicate值。也就是说,如果有重复值,我只想使用它两次。这只是一个样本记录。对于给定的订单号,原始记录可以有2个或更多相同的值。