Tous les produits
Search
Centre de documentation

MaxCompute:EXPLODE

Dernière mise à jour :Aug 10, 2026

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 select ne peut contenir qu'une seule fonction explode et aucune autre colonne de la table.

  • L'utilisation conjointe avec les clauses group by, cluster by, distribute by ou sort by n'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_map possède les champs c1 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.