Hive SQL,如何在group_concat中具有多个列?

时间:2018-10-01 22:37:56

标签: hive hql impala group-concat

我有如下数据:

Customer       DUNS         Employees
   A            1              60
   A            2             100
   A            3              15
   A            4              40

我想要的是这个

Customer        NEW CONCAT FIELD
   A            1:60, 2:100, 3:15, 4:40

这是我到目前为止所拥有的:

Select 
 Customer
,group_concat(cast(DUNS as string)) as DUNS
,group_concat(cast(Employees as string)) as 'Emps'
From MyTable
group by Customer

结果如下:

Customer        DUNS           EMPS
   A            1, 2, 3, 4     60,100,15,40

我真的很努力地将这些整合到一个领域。我发现MySQL语法看起来像我需要的语法,但是在我的cloudera / Impala编辑器中不起作用。

在我的一生中,我找不到以前做过的事情,但是我敢肯定它在某个地方。如何修改此查询以获取“ NEW CONCAT FIELD”?

1 个答案:

答案 0 :(得分:1)

首先concat第二和第三字段,并在新字段上使用collect_list

select Customer,collect_list(duns_employees) as duns_employees_list from
(
    select Customer,CONCAT(DUNS,':',Employees) as duns_employees from table
) a
group by Customer;