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

IoT Platform:複合型関数

最終更新日:Mar 27, 2025

SQL分析ジョブ用に複合型関数を設定して、ARRAY や MAP などの複合型のデータを処理できます。このトピックでは、開発を容易にするために、SQL 分析ジョブでサポートされている複合型関数の構文、パラメーター、および例について説明します。

次の表に、SQL 分析機能でサポートされている複合型関数を示します。

関数

説明

EXPLODE

1 行のデータを複数行に転置します。この関数は UDTF です。

EXPLODE

  • 制限事項

    • SELECT 文には、EXPLODE 関数を 1 つだけ含めることができます。 EXPLODE 関数を使用して計算できるのは、列内のデータのみです。

    • この関数は、GROUP BYCLUSTER BYDISTRIBUTE BY、または SORT BY 句と一緒に呼び出すことはできません。

  • 構文

    explode (<var>)
  • 説明

    1 行のデータを複数行に転置します。この関数は UDTF です。

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

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

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

  • パラメーター

    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;
      -- サンプル結果:
      +-----+------------+
      | key | value      |
      +-----+------------+
      | k11 | 86         |
      | k21 | 15         |
      | k12 | 97         |
      | k22 | 2          |
      | k13 | 99         |
      | k23 | 1          |
      +-----+------------+
    • 例 2:

      返される結果には、null データのみを含む行は含まれません。

      -- テーブルを作成します。
      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         |
      +------------+