我如何使用Hive中的collection_list和concat_ws修改查询以获得正确的结果

时间:2018-06-21 09:17:56

标签: hive hiveql

我在表中有以下数据集:

<template>
    <h1>{{ trans.greeting }}</h1>
</template>

export default {
    props : ['trans'], // this should be called trans since in blade we passed it as trans
    data(){
        return {

        }
    }
}

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

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    

问题是collect_set如果没有使用的话将没有任何重复的值。还有什么其他方式可以编写此查询。 感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

基本上,您要做的工作超出了需要。

collect_set()仍将消除重复项,这就是为什么您无需使用distinct运算符的原因。

如果要包含重复项,则需要使用collect_list()函数。

另请参阅Hive Language Manual