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个或更多相同的值。