UDTF qui convertit une ligne de données en plusieurs lignes.
Remarques
Si le paramètre est de type
array<T>, la fonction transforme le tableau ARRAY stocké dans la colonne en plusieurs lignes.Si le paramètre est de type
map<K, V>, la fonction convertit chaque paire clé-valeur du MAP stocké dans la colonne en une ligne comportant deux colonnes : l'une pour la clé et l'autre pour la valeur.Les valeurs NULL présentes dans la table ne sont pas renvoyées sous forme de lignes distinctes.
Limites d'utilisation
Une instruction
selectne peut contenir qu'une seule fonctionexplodeet aucune autre colonne de la table.L'utilisation conjointe avec les clauses
group by,cluster by,distribute byousort byn'est pas autorisée.
Syntaxe
explode (<var>)
Paramètres
var : obligatoire. Type array<T> ou map<K, V>.
Valeur de retour
Renvoie les lignes converties.
Exemples d'utilisation
-
Exemple 1 : Supposons que la table
t_table_mappossède les champsc1 bigint, t_map map<string,bigint>et contienne les données suivantes :+------------+-------+ | c1 | t_map | +------------+-------+ | 1000 | {k11:86, k21:15} | | 1001 | {k12:97, k22:2} | | 1002 | {k13:99, k23:1} | +------------+-------+Voici un exemple de commande.
select explode(t_map) from t_table_map; --返回结果如下。 +-----+------------+ | key | value | +-----+------------+ | k11 | 86 | | k21 | 15 | | k12 | 97 | | k22 | 2 | | k13 | 99 | | k23 | 1 | +-----+------------+ -
Exemple 2 : Le résultat renvoyé n'inclut pas de lignes NULL isolées.
--创建表 create table explod_array (arr array<string>); --插入数据 insert into table explod_array values (array('1','2','3',null,'agb')), (array('1','2','3',null,'ag')), (null); --查询数据 select * from explod_array; --返回: +------------+ | arr | +------------+ | ["1","2","3",null,"agb"] | | ["1","2","3",null,"ag"] | | NULL | +------------+ --展开数据 select explode(arr) from explod_array; --返回结果里没有包括单独的NULL行数据 +------------+ | col | +------------+ | 1 | | 2 | | 3 | | NULL | | agb | | 1 | | 2 | | 3 | | NULL | | ag | +------------+
Fonctions associées
La fonction EXPLODE fait partie des fonctions de types complexes. Pour plus d'informations sur les fonctions de traitement des données de types complexes (telles que ARRAY, MAP, STRUCT et JSON), consultez la rubrique Complex type functions.