すべてのプロダクト
Search
ドキュメントセンター

MaxCompute:EXPLODE

最終更新日:Jan 17, 2025

1行のデータを複数の行に変換します。 この関数は、ユーザー定義のテーブル値関数 (UDTF) です。

使用上の注意

  • パラメーター値がarray<T> 型の場合、列に格納されている配列は複数の行に転置されます。

  • パラメーター値がmap<K, V> 型の場合、列に格納されているマップの各キーと値のペアは、2つの列を持つ1つの行に置き換えられます。 一方の列はキーの格納に使用され、もう一方の列は値の格納に使用されます。

  • 行にnullデータのみが含まれている場合、この関数はnullデータのみを含む行を返しません。

制限事項

  • SELECTステートメントにはEXPLODE関数を1つだけ含めることができ、テーブルの他の列は許可されません。

  • この関数は、GROUP BYCLUSTER BYDISTRIBUTE BY、またはSORT BY句では使用できません。

構文

explode (<var>)

パラメーター

var: 必須です。 値は、array<T> 型またはmap<K, V> 型である必要があります。

戻り値

転置後の行が返されます。

  • 例1: t_table_mapテーブルには、c1 (BIGINT) およびt_map (MAP<STRING,BIGINT>) 列が含まれます。 テーブル内のデータ:

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

    例:

    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          |
    +-----+------------+
  • 例2: 返された結果には、nullデータのみを含む行は含まれません。

    -- 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         |
    +------------+
                        

関連関数

EXPLODEは複合型関数です。 ARRAY、MAP、STRUCT、JSONなどの複雑なデータ型のデータを処理するために使用される関数の詳細については、複合型関数.