Todos os produtos
Search
Central de documentação

MaxCompute:Tipo de dado STRUCT

Última atualização: Sep 24, 2026

O MaxCompute oferece suporte ao tipo de dado STRUCT, que permite combinar campos de tipos diferentes em uma única unidade lógica. Este tópico descreve como usar o tipo de dado STRUCT.

Métodos de construção

Diferenças entre os métodos de construção

O MaxCompute oferece três métodos diferentes para construir o tipo de dado STRUCT: STRUCT EXPRESSION, função STRUCT e função NAMED_STRUCT.

Método de construção

Exemplo

Tipo de dado

STRUCT EXPRESSION

Aceita uma lista de valores e uma lista de expressões nomeadas.

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

Aceita um asterisco (*) para construir um STRUCT a partir de todas as colunas de uma tabela.

STRUCT<str_col:string,...>

STRUCT function

Aceita uma lista de valores.

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 function

Aceita uma lista de nome/valor.

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,...>

A diferença entre STRUCT EXPRESSION e a função STRUCT: a função STRUCT não permite especificar um alias para cada parâmetro. Ao construir um STRUCT, o sistema adiciona automaticamente nomes de campos na ordem dos parâmetros, como col1, col2 e assim por diante.

Observações de uso

  • As diferentes sintaxes de construção aceitam aninhamento e podem ser combinadas com funções de construção de outros tipos complexos, como ARRAY e MAP.

  • Por padrão, o tipo de dado STRUCT não aceita NULL como valor de campo. Para usar valores NULL, ative o modo de compatibilidade com o Bigquery por meio do comando SET odps.sql.bigquery.compatible=true;; nesse caso, somente o método STRUCT EXPRESSION pode ser usado para a construção.

STRUCT EXPRESSION

STRUCT EXPRESSION fornece um método para construir o tipo complexo STRUCT. Aceita uma lista de valores e uma lista de expressões nomeadas na construção de um STRUCT.

Sintaxe

STRUCT(expression1 [[AS] field_name1], expression2 [[AS] field_name2], ...)
  • Parâmetros

    Parâmetro

    Obrigatório

    Descrição

    expression

    Sim

    Aceita qualquer expressão e tipo de dado. Nomes de colunas, constantes e expressões são compatíveis.

    as

    Não

    Palavra-chave de prefixo para nomes de campos na expressão STRUCT.

    field_name

    Não

    O nome do campo no STRUCT gerado. Os nomes de campos não diferenciam maiúsculas de minúsculas e não podem ser duplicados dentro da mesma expressão STRUCT.

  • Valor de retorno: retorna um tipo STRUCT, STRUCT <field_name1:T1, field_name2:T2, ...>, onde os nomes dos campos são field_name1, field_name2 e assim por diante.

Exemplos

  • Use valores não nulos como valores de campo.

    SELECT * FROM VALUES (STRUCT (1 AS a, 2 AS b, 3 AS c, 4 AS d)) AS tbl1(struct1);
    
    -- Result
    {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);
    
    -- Result
    +------------+
    | b          |
    +------------+
    | 2          |
    +------------+
  • Use valores NULL como valores de campo. Execute o comando SET odps.sql.bigquery.compatible=true; para ativar o modo de compatibilidade com o Bigquery.

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

Função STRUCT

O MaxCompute permite usar a STRUCT function para criar um tipo de dado STRUCT a partir de uma lista de valores fornecida.

Sintaxe

STRUCT STRUCT(value1,value2, ...)
  • Parâmetros: o valor pode ser de qualquer tipo, mas NULL não é aceito.

  • Valor de retorno: retorna um tipo STRUCT, STRUCT<col1:T1, col2:T2,...>, onde os nomes dos campos são col1, col2 e assim por diante.

Exemplos

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

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

Função NAMED_STRUCT

O MaxCompute permite usar a NAMED_STRUCT function para construir um tipo de dado STRUCT a partir de uma lista de nome/valor fornecida.

Sintaxe

STRUCT NAMED_STRUCT(string_name1, T1 value1, string_name2, T2 value2,...)
  • Parâmetros:

    • string_name: o nome do campo especificado, do tipo STRING, que deve ser uma constante. Os nomes de campos não diferenciam maiúsculas de minúsculas.

    • value: o valor pode ser de qualquer tipo, mas NULL não é aceito.

  • Valor de retorno: retorna um tipo STRUCT, STRUCT<string_name1:T1, string_name2:T2, ...>, onde os nomes dos campos são string_name1, string_name2 e assim por diante.

Exemplos

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

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