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

MaxCompute:STRUCT データ型

最終更新日:Sep 16, 2025

MaxCompute は STRUCT データ型をサポートしています。これにより、異なる型のフィールドを論理ユニットに組み合わせることができます。このトピックでは、STRUCT データ型の使用方法について説明します。

構築方法

構築方法の違い

MaxCompute は、STRUCT データ型を構築するための 3 つの異なる方法、STRUCT 式、STRUCT 関数、および NAMED_STRUCT 関数をサポートしています。

構築方法

例

データ型

STRUCT 式

値リストと名前付き式リストの使用をサポートしています。

STRUCT(1L AS a,'abc' AS b,null as c)

STRUCT<a:bigint,b:string,c:string>

STRUCT(str_col AS abc) from t

STRUCT<abc:string>

STRUCT(*) from t

アスタリスク (*) を使用して、テーブルのすべての列から STRUCT を構築することをサポートしています。

STRUCT<str_col:string,...>

STRUCT 関数

値リストの使用をサポートしています。

STRUCT(1L,2L,3L)

STRUCT<col1:bigint,col2:bigint,col3:bigint>

STRUCT('abc')

STRUCT<col1:string>

STRUCT(1L,t.str_col) from t

STRUCT<col1:int,col2:string>

NAMED_STRUCT 関数

名前/値リストの使用をサポートしています。

NAMED_STRUCT('a',1L,'b','b_','c',3.50)

STRUCT<a:bigint,b:string,c:double>

NAMED_STRUCT('a', str_col...) from t

STRUCT<a:string,...>

STRUCT 式と STRUCT 関数の違い: STRUCT 関数は、各パラメーターのエイリアスの指定をサポートしていません。STRUCT を構築する場合、システムは col1、col2 などのパラメーターの順序でフィールド名を自動的に追加します。

使用上の注意

  • 異なる構築構文はネストをサポートしており、ARRAY や MAP などの他の複合型の構築関数と組み合わせることができます。

  • STRUCT データ型は、デフォルトではフィールド値として NULL をサポートしていません。NULL 値を使用する必要がある場合は、SET odps.sql.bigquery.compatible=true; を使用して Bigquery 互換モードを有効にする必要があります。また、構築には STRUCT 式メソッドのみを使用できます。

STRUCT 式

STRUCT 式は、複合 STRUCT 型を構築する方法を提供します。STRUCT を構築する際に、値リストと名前付き式リストの使用をサポートしています。

構文

STRUCT(expression1 [[AS] field_name1], expression2 [[AS] field_name2], ...)
  • パラメーター

    パラメーター

    必須

    説明

    expression

    はい

    このパラメーターは、任意の式およびデータ型にすることができます。列名、定数、および式がサポートされています。

    as

    いいえ

    STRUCT 式のフィールド名の接頭辞キーワード。

    field_name

    いいえ

    生成された STRUCT のフィールド名。フィールド名は大文字と小文字が区別されません。同じ STRUCT 式内のフィールド名は重複できません。

  • 戻り値: STRUCT 型、STRUCT <field_name1:T1, field_name2:T2, ...> を返します。ここで、フィールド名は field_name1、field_name2 などです。

例

  • NULL 以外の値をフィールド値として使用します。

    SELECT * FROM VALUES (STRUCT (1 AS a, 2 AS b, 3 AS c, 4 AS d)) AS tbl1(struct1);
    
    -- 結果
    {a:1, b:2, c:3, d:4}
    
    SELECT struct1.b FROM VALUES (STRUCT (1 AS a, 2 AS b, 3 AS c, 4 AS d)) AS tbl1(struct1);
    
    -- 結果
    +------------+
    | b          |
    +------------+
    | 2          |
    +------------+
  • NULL 値をフィールド値として使用します。SET odps.sql.bigquery.compatible=true; コマンドを実行して、Bigquery 互換モードを有効にする必要があります。

    SET odps.sql.bigquery.compatible=true;
    SELECT STRUCT (NULL AS Col_1, 2 AS Col_2);
    
    -- 結果
     {col_1:NULL, col_2:2} 

STRUCT 関数

MaxCompute は、STRUCT 関数を使用して、指定された値リストから STRUCT データ型を作成することをサポートしています。

構文

STRUCT STRUCT(value1,value2, ...)
  • パラメーター: 値は任意の型にすることができますが、NULL はサポートされていません。

  • 戻り値: STRUCT 型、STRUCT<col1:T1, col2:T2,...> を返します。ここで、フィールド名は col1、col2 などです。

例

SELECT STRUCT('a',123,'true',56.90);

-- 結果
{col1:a, col2:123, col3:true, col4:56.9}

NAMED_STRUCT 関数

MaxCompute は、NAMED_STRUCT 関数を使用して、指定された名前/値リストから STRUCT データ型を構築することをサポートしています。

構文

STRUCT NAMED_STRUCT(string_name1, T1 value1, string_name2, T2 value2,...)
  • パラメーター:

    • string_name: STRING 型の指定されたフィールド名。定数である必要があります。フィールド名は大文字と小文字が区別されません。

    • value: 値は任意の型にすることができますが、NULL はサポートされていません。

  • 戻り値: STRUCT 型、STRUCT<string_name1:T1, string_name2:T2, ...> を返します。ここで、フィールド名は string_name1、string_name2 などです。

例

SELECT NAMED_STRUCT('user_id',10001,'user_name','LiLei','married','F','weight',63.50);

-- 結果
{user_id:10001, user_name:LiLei, married:F, weight:63.5}