使用Impala或Hive在表列中提取多个字符串元素

问题描述

我有A列,其元素由具有多个 string 元素(而不是数组)的列表组成,例如:

   **A**
1 'A123','B234','C123'
2 'A123','B234'
3 'A124',

列表元素的数量因记录而异。但是,列表元素的长度始终相同,并以逗号分隔。

我需要将这些字符串元素提取到单独的表/列表B中,并获得不同的元素,例如:

  **B**
1 'A123'
2 'A124'
3 'B234'
4 'C123'
 

如何使用sql做到这一点?我正在使用Impala或Hive 我正在使用Cloudera Hue进行分析。

谢谢

KS

解决方法

首先使用lateral view explode创建一个包含数组元素的列,然后使用dictinct,例如

SELECT distinct elem  as col1
  FROM tableA LATERAL VIEW explode(split(array_column,',')) aTable AS elem

有关lateral view的更多详细信息,请参见Hive's manual