Estrai più elementi stringa nella colonna della tabella utilizzando Impala o Hive

Aug 21 2020

Ho una colonna A i cui elementi sono costituiti da elenchi con più elementi stringa (non array), come ad esempio:

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

La quantità di elementi dell'elenco varia tra i record. Gli elementi della lista tuttavia sono sempre della stessa lunghezza e sono separati da una virgola.

Ho bisogno di estrarre questi elementi stringa in una tabella/lista separata B e ottenere gli elementi distinti come:

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

Come posso farlo usando SQL? Sto usando Impala o Hive Sto usando Cloudera Hue per l'analisi.

Grazie,

KS

Risposte

3 serge_k Aug 21 2020 at 15:39

Utilizzare prima lateral view explodeper creare una colonna con elementi di matrice, quindi dettare, ad es

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

Consulta il manuale di Hive per maggiori dettagli sulateral view