hiveql:合并数组列

svmlkihl  于 2021-06-27  发布在  Hive
关注(0)|答案(3)|浏览(447)

我有一个带有数组的列的表,如何编写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"]
fafcakar

fafcakar1#

如果要从多个字符串数组中创建一个新的字符串数组,可以使用以下命令(注意,需要检查colb和colc是否为空,以避免使用额外的逗号):

split (
concat (

concat_ws(',',colA),
if(size(colB)>0, concat(',', concat_ws(',',colB)), ''    ),
if(size(colC)>0, concat(',', concat_ws(',',colC)), ''    )

),',')
klr1opcd

klr1opcd2#

类似于:
concat或||

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

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

093gszye3#

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;

相关问题