O MaxCompute oferece um amplo conjunto de funções integradas que atendem à maioria das necessidades de processamento de dados. Esta página descreve os tipos de funções disponíveis e as notas de uso aplicáveis a todas as funções integradas.
Tipos de funções
As funções integradas do MaxCompute se dividem em três grandes categorias:
Funções escalares — operam sobre uma única linha e retornam um valor por invocação. Incluem funções de data e hora, matemáticas, de string, criptografia, rede, ARRAY, MAP, STRUCT, JSON e processamento de dados não estruturados.
Funções de agregação — recebem várias linhas de entrada e retornam um único valor de saída.
Funções de janela — operam sobre um subconjunto de linhas dentro de uma coluna de janela definida e retornam um valor por linha.
Para o mapeamento entre as funções integradas do MaxCompute e as funções equivalentes de código aberto, consulte Mapeamento entre as funções integradas do MaxCompute, Hive, MySQL e Oracle.
Tipo de função | Descrição |
Manipulam dados DATE, DATETIME e TIMESTAMP — somar ou subtrair datas, calcular diferenças, extrair campos e converter formatos. | |
Executam operações numéricas sobre dados BIGINT, DOUBLE, DECIMAL e FLOAT — converter bases, arredondar números e gerar valores aleatórios. | |
Calculam agregações, classificações, deslocamentos e amostras dentro de uma coluna de janela especificada. | |
Agregam vários registros de entrada em um único valor de saída — somas, médias, mínimo/máximo, parâmetros de agregação e concatenação de strings. | |
Funções de agregação aproximada que eliminam duplicatas e aceleram consultas em grandes conjuntos de dados com uso mínimo de memória. | |
Manipulam dados STRING — truncar, substituir, pesquisar, alterar maiúsculas/minúsculas e converter formatos. Consulte Limites das funções STRING. | |
Manipulam dados ARRAY — construir, deduplicar, agregar, ordenar e mesclar arrays. | |
Manipulam dados MAP — extrair pares chave-valor, construir mapas e mesclar mapas. | |
Manipulam dados STRUCT — expandir arrays STRUCT e construir structs. | |
Manipulam dados JSON — extrair valores de campos, gerar objetos ou arrays, inserir ou atualizar dados e lidar com estruturas de dados complexas. Consulte Limites das funções JSON. | |
Criptografam e descriptografam dados de tabela STRING e BINARY. | |
Processam dados STRING e BINARY relacionados à rede — converter formatos de endereço IP, analisar URLs e obter máscaras de rede. | |
Conectam-se a dados não estruturados e seus metadados armazenados em data warehouses ou data lakes de diversas formas. | |
Utilizadas para construir, transformar e analisar dados geoespaciais do tipo GEOGRAPHY. Essas funções permitem criar objetos geográficos como pontos, linhas e polígonos a partir de coordenadas de latitude/longitude ou texto WKT/WKB, extrair propriedades como coordenadas e caixas delimitadoras, determinar relações espaciais entre objetos geográficos como contenção, interseção e cobertura, e calcular distâncias entre objetos geográficos. | |
Funções adicionais para cenários comerciais diversos. | |
Suporta o processamento do tipo de dados VECTOR para realizar computação de distância vetorial e busca vetorial, sendo aplicável a cenários como busca semântica, aprimoramento de modelos de linguagem grandes (LLM) e IA generativa. |
Notas de uso
Observe os seguintes pontos ao usar funções integradas:
Parâmetros de entrada: O tipo, a quantidade e o formato dos parâmetros de entrada devem estar de acordo com a sintaxe especificada. Caso contrário, o MaxCompute não conseguirá interpretar a função e a instrução SQL falhará.
Tipos de dados 2.0: Se uma função integrada utiliza tipos de dados 2.0 — TINYINT, SMALLINT, INT, FLOAT, VARCHAR, TIMESTAMP ou BINARY — ative os tipos de dados 2.0 antes de executar a função. Caso contrário, um erro será reportado. Ative os tipos de dados 2.0 em um dos seguintes níveis:
Nível de sessão (aplica-se apenas à instrução SQL atual): Adicione a seguinte instrução antes da sua instrução SQL e envie-as juntas.
SET odps.sql.type.system.odps2=true;Nível de projeto (aplica-se a todas as instruções SQL subsequentes, entra em vigor em 10 a 15 minutos): O proprietário do projeto executa o seguinte comando.
SETPROJECT odps.sql.type.system.odps2=true;
Conversões implícitas de tipo desabilitadas: Quando os tipos de dados 2.0 estão ativados, as seguintes conversões implícitas de tipo são desabilitadas para evitar perda de precisão ou erros: STRING para BIGINT, STRING para DATETIME, DOUBLE para BIGINT, DECIMAL para DOUBLE e DECIMAL para BIGINT. Use a função CAST para conversões explícitas ou desative os tipos de dados 2.0.
Conflitos de nomes entre UDF e funções integradas: Se uma função definida pelo usuário (UDF) tiver o mesmo nome de uma função integrada, a UDF terá prioridade. Por exemplo, se existir uma UDF chamada CONCAT em um projeto, o sistema chamará a UDF em vez da função integrada CONCAT. Para chamar a função integrada, adicione o prefixo
::ao nome da função:SELECT ::CONCAT('ab', 'c');Propriedades globais: Os resultados das funções integradas podem variar de acordo com as propriedades globais configuradas no projeto MaxCompute. Execute
SETPROJECT;para visualizar as propriedades globais atuais.
Limites das funções JSON
Requisitos de versão do SDK
Java SDK V0.44.0 ou posterior
PyODPS V0.11.4.1 ou posterior
Limites de operação de tabela
Não há suporte para adicionar uma coluna JSON a uma tabela.
Não há suporte para tabelas clusterizadas.
Não há suporte para tabelas do tipo Delta Table.
Limites de operação SQL
Não há suporte para operações de comparação com o tipo JSON.
As cláusulas
ORDER BYeGROUP BYnão podem ser usadas com o tipo JSON.Uma coluna do tipo JSON não pode ser usada como chave de
JOIN.
Precisão dos dados
A parte inteira de um JSON NUMBER é armazenada como BIGINT. Ocorre overflow se o valor estiver fora do intervalo do BIGINT.
A parte decimal de um JSON NUMBER é armazenada como DOUBLE. Pode ocorrer perda de precisão durante a conversão.
Limites de caracteres
O caractere Unicode não é suportado em strings usadas para gerar dados JSON.
Compatibilidade de engine
Outras engines — por exemplo, o Hologres — não conseguem ler o tipo de dados JSON de uma tabela do MaxCompute.
Suporte a UDF
UDFs Java e UDFs Python não suportam o tipo JSON.
Profundidade de aninhamento
O tipo de dados JSON pode ser aninhado em até 20 níveis de profundidade.
Ferramentas de desenvolvimento suportadas
As ferramentas suportadas incluem o cliente MaxCompute (odpscmd), o MaxCompute Studio e o DataWorks. Ecossistemas externos como o Dataphin não são suportados. Confirme a compatibilidade antes de usar o tipo de dados JSON com qualquer sistema externo.
Ao usar o odpscmd, observe o seguinte:
Atualize o cliente para a versão V0.46.5 ou posterior. Versões anteriores não conseguem executar o comando
DESC json_tablenem baixar dados JSON usando o Tunnel.Em
conf\odps_config.inino caminho de instalação do cliente, definause_instance_tunnelcomofalse. Caso contrário, as consultas falharão.
Limites das funções STRING
As seguintes funções de string aceitam apenas caracteres em inglês:
TRIM / RTRIM / LTRIM: O parâmetro
trimCharsaceita apenas caracteres em inglês.REVERSE: Aceita apenas caracteres em inglês no modo Hive.
SOUNDEX: Converte apenas caracteres em inglês.
TOLOWER: Converte letras maiúsculas em inglês para minúsculas.
TOUPPER: Converte letras minúsculas em inglês para maiúsculas.
INITCAP: Converte a primeira letra de cada palavra em inglês para maiúscula e as demais para minúscula.