En supposant des "valeurs vides" sont des valeurs NULL
select fields[0] as Field1
,fields[1] as Field2
,fields[2] as Field3
,fields[3] as Field4
,fields[4] as Field5
from (select split(concat_ws(string(unhex(1)),*),'\\x01') as fields
from mytable
) t
+--------+--------+--------+--------+--------+
| field1 | field2 | field3 | field4 | field5 |
+--------+--------+--------+--------+--------+
| ABC | 45 | XYZ | JKL | BNM |
| 65 | QWE | JKL | (null) | (null) |
| WER | YUI | IOP | GHJ | (null) |
+--------+--------+--------+--------+--------+
version simplifiée, en supposant une virgule (,
) ne figure pas dans vos champs:
select ...
from (select split(concat_ws(',',*),',') as fields
from mytable
) t
En supposant des "valeurs vides" sont des chaînes vides
select fields[0] as Field1
,fields[1] as Field2
,fields[2] as Field3
,fields[3] as Field4
,fields[4] as Field5
from (select split(regexp_replace(concat_ws(string(unhex(1)),*),'^\\x01+|\\x01+$|(\\x01)+','$1'),'\\x01') as fields
from mytable
) t
+--------+--------+--------+--------+--------+
| field1 | field2 | field3 | field4 | field5 |
+--------+--------+--------+--------+--------+
| ABC | 45 | XYZ | JKL | BNM |
| 65 | QWE | JKL | (null) | (null) |
| WER | YUI | IOP | GHJ | (null) |
+--------+--------+--------+--------+--------+
version simplifiée, en supposant une virgule (,
) ne figure pas dans vos champs:
select ...
from (select split(regexp_replace(concat_ws(',',*),'^,+|,+$|(,)+','$1'),',') as fields
from mytable
) t
Je don Je ne connais pas Hive SQL (ou Hive), mais je pourrais remettre en question votre design si vous vous retrouvez dans cette situation tion en premier lieu. Comment êtes-vous arrivé à ces données rares? –
Si vous supprimez des données de colonne vides de l'instruction select de la requête, il est très probable que vous endommagiez les données. Comme dans l'exemple que vous avez donné JKL est la valeur de la colonne Field5 dans les données Inut mais dans la sortie, vous avez besoin de JKL à la valeur de Result4 Column. –
Par "valeurs vides", voulez-vous dire des chaînes vides ou des valeurs NULL? –