ImpalaまたはHiveを使用して、テーブル列の複数の文字列要素を抽出します

Aug 21 2020

次のような複数の文字列要素(配列ではない)を含むリストで要素が構成される列Aがあります。

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

リスト要素の量はレコードによって異なります。ただし、リスト要素は常に同じ長さであり、コンマで区切られます。

これらの文字列要素を別のテーブル/リストBに抽出し、次のような個別の要素を取得する必要があります。

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

SQLを使用してそれを行うにはどうすればよいですか?ImpalaまたはHiveを使用しています。分析にClouderaHueを使用しています。

ありがとう、

KS

回答

3 serge_k Aug 21 2020 at 15:39

最初にlateral view explode配列要素を含む列を作成するために使用し、次にdictinctを使用します。

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

詳細については、Hiveのマニュアルを参照してください。lateral view