Todos os produtos
Search
Central de documentação

MaxCompute:Edição de tipos de dados do MaxCompute V1.0

Última atualização: Jun 26, 2026

Contexto

A edição de tipos de dados do MaxCompute V1.0 é uma das três edições de tipos de dados do MaxCompute.

Essa edição destina-se a projetos antigos do MaxCompute cujos componentes dependentes não oferecem suporte à edição de tipos de dados V2.0.

Configuração do projeto

Um projeto do MaxCompute usa a edição de tipos de dados V1.0 quando as três propriedades a seguir estão definidas:

setproject odps.sql.type.system.odps2=false; -- Disable MaxCompute V2.0 data types.
setproject odps.sql.decimal.odps2=false;      -- Disable the DECIMAL type in MaxCompute V2.0.
setproject odps.sql.hive.compatible=false;    -- Disable Hive-compatible data types.

Tipos de dados suportados

Tipos de dados básicos

Todos os tipos de dados básicos aceitam valores NULL.

Data type

Constant example

Description

BIGINT

100000000000L e -1L

  • Inteiro com sinal de 64 bits.

  • Intervalo: -2⁶³ + 1 a 2⁶³ - 1.

DOUBLE

3.14159261E+7

Ponto flutuante binário de 64 bits.

DECIMAL

3.5BD e 99999999999.9999999BD

Tipo numérico exato. Precisão padrão: decimal(54,18). A precisão e a escala não são ajustáveis. Intervalo da parte inteira: -10³⁶ + 1 a 10³⁶ - 1. Parte decimal: precisão de 10⁻¹⁸. Para obter mais informações, consulte Tipo de dados DECIMAL.

STRING

"abc", 'bcd', "alibaba", 'inc'

  • Tipo string.

  • Comprimento máximo: 8 MB.

DATETIME

DATETIME'2017-11-11 00:00:00'

  • Tipo de data e hora.

  • Intervalo: 0000-01-01 a 9999-12-31.

  • Os resultados de consultas DATETIME não incluem precisão de milissegundos. Para exibir milissegundos, use a opção -dfp no comando Tunnel para especificar um formato de hora.

  • Exemplo: tunnel upload -dfp 'yyyy-MM-dd HH:mm:ss.SSS'. Para obter mais informações, consulte Comandos do Tunnel.

BOOLEAN

True e False

  • Tipo booleano.

  • Valores possíveis: True e False.

Observações de uso

  • Constantes

    • Constantes inteiras: O sistema as processa como BIGINT por padrão. Se uma constante exceder o intervalo do BIGINT (por exemplo, 1,000,000,000,000,000,000,000,000), o processamento ocorrerá como DOUBLE. Por exemplo, o valor 1 em SELECT 1 + a; é do tipo BIGINT.

    • Constantes DECIMAL: Ao inserir uma constante DECIMAL em um campo, use o formato com o sufixo BD. Exemplo:

      INSERT INTO test_tb(a) VALUES (3.5BD);
    • Concatenação de STRING: Concatene constantes STRING diretamente. Por exemplo, abc e xyz resultam em abcxyz.

  • Colunas de chave de partição: As colunas de chave de partição em tabelas particionadas devem ser obrigatoriamente do tipo STRING.

  • Funções integradas: A edição de tipos de dados V1.0 não permite o uso de funções integradas com parâmetros de tipos de dados do MaxCompute V2.0.

Diferenças em relação à edição de tipos de dados do MaxCompute V2.0

  • As operações LIMIT, ORDER BY, DISTRIBUTE BY, SORT BY e CLUSTER BY apresentam comportamentos distintos entre as edições de tipos de dados V1.0 e V2.0 do MaxCompute.

    O exemplo a seguir usa SELECT * FROM t1 UNION ALL SELECT * FROM t2 LIMIT 10;.

    Edição

    Instrução equivalente

    MaxCompute V1.0

    SELECT * FROM t1 UNION ALL SELECT * FROM (SELECT * FROM t2 LIMIT 10) t2;

    MaxCompute V2.0

    SELECT * FROM (SELECT * FROM t1 UNION ALL SELECT * FROM t2) t LIMIT 10;

  • A expressão IN também se comporta de maneira diferente nas edições de tipos de dados V1.0 e V2.0.

    Considere o exemplo a IN (1, 2, 3).

    Edição

    Comportamento

    MaxCompute V1.0

    Todos os valores dentro dos parênteses devem ser do mesmo tipo.

    MaxCompute V2.0

    Os valores dentro dos parênteses podem ser convertidos implicitamente para o mesmo tipo.

Tipos de dados complexos

Tipos de dados complexos permitem aninhamento mútuo. Para consultar as funções integradas relacionadas a tipos complexos, veja ARRAY, MAP e STRUCT.

Tipo de dado

Definição

Construtor

ARRAY

ARRAY<BIGINT>, ARRAY<STRUCT<a:BIGINT, b:STRING>>

ARRAY(1, 2, 3), ARRAY(NAMED_STRUCT('a', 1, 'b', '2'), NAMED_STRUCT('a', 3, 'b', '4'))

MAP

MAP<STRING, STRING>, MAP<BIGINT, ARRAY<STRING>>

MAP("k1", "v1", "k2", "v2"), MAP(1L, ARRAY('a', 'b'), 2L, ARRAY('x', 'y'))

STRUCT

STRUCT<'x', BIGINT, 'y', BIGINT>, STRUCT<'field1', BIGINT, 'field2', ARRAY<BIGINT>, 'field3', MAP<BIGINT>>

NAMED_STRUCT('x', 1, 'y', 2), NAMED_STRUCT('field1', 100L, 'field2', ARRAY(1, 2), 'field3', MAP(1, 100, 2, 200))