代码之家  ›  专栏  ›  技术社区  ›  DevEx

HiveQL:合并数组列

  •  0
  • DevEx  · 技术社区  · 7 年前

    我有一个带有数组的列的表,如何编写HiveQL来合并数组列?

    | id | colA             | colB            | colC 
    +----+------------------+-----------------+------------------    
    | 1  | ["john", "james"]| ["peter"]       | ["sam","peter"]
    | 2  | ["jane"]         | ["doug"]        | ["mary","peter"]
    | 3  | ["jan", "james"] | ["peter","mary"]| ["sam","peter"]
    

    写入查询以显示如下数据:

    | id | newcol
    +----+------------------------------------------------------    
    | 1  | ["john", "james", "peter", "sam","peter"]
    | 2  | ["jane", "doug", "mary","peter"]
    | 3  | ["jan", "james", "peter","mary","sam","peter"]
    
    3 回复  |  直到 7 年前
        1
  •  2
  •   mangusta    7 年前

    split (
    concat (
    
    concat_ws(',',colA),
    if(size(colB)>0, concat(',', concat_ws(',',colB)), ''    ),
    if(size(colC)>0, concat(',', concat_ws(',',colC)), ''    )
    
    
    ),',')
    
        2
  •  1
  •   Gaurang Shah    7 年前
    hive> select split(concat_ws(',',array("john", "james"), array('peter'), array("sam","peter")), ",") as a;
    OK
    ["john","james","peter","sam","peter"]
    

    select split(concat_ws(',',ColA, ColB, ColC), ",") as a;
    
        3
  •  0
  •   Daniel E.    7 年前

    诸如此类:

    Concat or ||

    SELECT id, colA||','||colB||','||colC AS newcol FROM myTable
    

    SELECT id, Concat(colA,',',colB,',',colC,) AS newcol FROM myTable