Tous les produits
Search
Centre de documentation

MaxCompute:EXPLODE

Dernière mise à jour :Sep 22, 2026

Transpose une ligne de données en plusieurs lignes. Il s'agit d'une fonction table définie par l'utilisateur (UDTF).

Notes d'utilisation

  • Si la valeur du paramètre est de type array<T>, le tableau stocké dans la colonne est transposé en plusieurs lignes.

  • Si la valeur du paramètre est de type map<K, V>, chaque paire clé-valeur de la map stockée dans la colonne est transposée en une ligne comportant deux colonnes : l'une pour les clés et l'autre pour les valeurs.

  • Si une ligne ne contient que des données nulles, cette fonction ne renvoie aucune ligne.

Limites

  • Une instruction SELECT ne peut contenir qu'une seule fonction EXPLODE ; l'inclusion d'autres colonnes de la table n'est pas autorisée.

  • Cette fonction est incompatible avec les clauses GROUP BY, CLUSTER BY, DISTRIBUTE BY et SORT BY.

Syntaxe

explode (<var>)

Paramètres

var : obligatoire. La valeur doit être de type array<T> ou map<K, V>.

Valeur de retour

Renvoie les lignes après transposition.

Exemples

  • Exemple 1 : La table t_table_map contient les colonnes c1 (BIGINT) and t_map (MAP<STRING,BIGINT>). Données de la table :

      +------------+-------+
    | c1         | t_map |
    +------------+-------+
    | 1000       | {k11:86, k21:15} |
    | 1001       | {k12:97, k22:2} |
    | 1002       | {k13:99, k23:1} |
    +------------+-------+

    Exemple d'instruction :

    select explode(t_map) from t_table_map;
    -- The following result is returned: 
    +-----+------------+
    | key | value      |
    +-----+------------+
    | k11 | 86         |
    | k21 | 15         |
    | k12 | 97         |
    | k22 | 2          |
    | k13 | 99         |
    | k23 | 1          |
    +-----+------------+
  • Exemple 2 : Le résultat renvoyé n'inclut pas de ligne contenant uniquement des données nulles.

    -- Create a table.
    create table explod_array (arr array<string>);
    -- Insert data into the table.
    insert into table explod_array values (array('1','2','3',null,'agb')),
                                          (array('1','2','3',null,'ag')),
                                          (null);
    -- Query data from the table.
    select * from explod_array;
    -- The following result is returned:
    +------------+
    | arr        |
    +------------+
    | ["1","2","3",null,"agb"] |
    | ["1","2","3",null,"ag"] |
    | NULL       |
    +------------+
    -- Display data.
    select explode(arr) from explod_array;
    -- The returned result does not include a row that contains only the null data.
    +------------+
    | col        |
    +------------+
    | 1          |
    | 2          |
    | 3          |
    | NULL       |
    | agb        |
    | 1          |
    | 2          |
    | 3          |
    | NULL       |
    | ag         |
    +------------+
                        

Fonctions associées

EXPLODE est une fonction de type complexe. Pour plus d'informations sur les fonctions de traitement des types de données complexes, tels que ARRAY, MAP, STRUCT et JSON, consultez Fonctions de type complexe.