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 elas.
Tipos de função
As funções integradas do MaxCompute dividem-se em três categorias principais:
Funções escalares: operam em uma única linha e retornam um valor por invocação. Incluem funções de data e hora, matemáticas, de string, de criptografia, de rede, ARRAY, MAP, STRUCT, JSON e de 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 em um subconjunto de linhas dentro de uma coluna de janela definida e retornam um valor por linha.
Para obter o mapeamento entre as funções integradas do MaxCompute e funções equivalentes de código aberto, consulte Mapeamento entre funções integradas do MaxCompute, Hive, MySQL e Oracle.
|
Tipo de função |
Descrição |
|
Manipulam dados DATE, DATETIME e TIMESTAMP: somam ou subtraem datas, calculam diferenças, extraem campos e convertem formatos. |
|
|
Executam operações numéricas em dados BIGINT, DOUBLE, DECIMAL e FLOAT: convertem bases, arredondam números e geram 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 agregados e concatenação de strings. |
|
|
Funções de agregação aproximada que removem duplicatas e aceleram consultas em grandes conjuntos de dados com uso mínimo de memória. |
|
|
Manipulam dados STRING: truncam, substituem, buscam, alteram maiúsculas/minúsculas e convertem formatos. Consulte Limites das funções de string. |
|
|
Manipulam dados ARRAY: constroem, removem duplicatas, agregam, classificam e mesclam arrays. |
|
|
Manipulam dados MAP: extraem pares chave-valor, constroem mapas e mesclam mapas. |
|
|
Manipulam dados STRUCT: expandem arrays STRUCT e constroem structs. |
|
|
Manipulam dados JSON: extraem valores de campo, geram objetos ou arrays, inserem ou atualizam dados e tratam 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 a rede: convertem formatos de endereço IP, analisam URLs e obtêm máscaras de rede. |
|
|
Conectam-se a dados não estruturados e seus metadados armazenados em data warehouses ou data lakes de várias formas. |
|
|
Funções adicionais para diversos cenários de negócios. |
Notas de uso
Observe os pontos abaixo ao usar funções integradas:
Parâmetros de entrada: o tipo, a quantidade e o formato dos parâmetros de entrada devem obedecer à sintaxe especificada. Caso contrário, o MaxCompute não consegue analisar a função e a instrução SQL falha.
-
Tipos de dados 2,0: se uma função integrada usar tipos de dados 2,0 (TINYINT, SMALLINT, INT, FLOAT, VARCHAR, TIMESTAMP ou BINARY), ative-os antes de executar a função. Do contrário, ocorrerá um erro. 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 comando a seguir.
SETPROJECT odps.sql.type.system.odps2=true;
-
Conversões implícitas de tipo desativadas: quando os tipos de dados 2,0 estão ativados, as seguintes conversões implícitas 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 nome entre UDF e função integrada: se uma função definida pelo usuário (UDF) tiver o mesmo nome de uma função integrada, a UDF terá precedência. 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 conforme as propriedades globais configuradas para o 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 é possível adicionar uma coluna JSON a uma tabela.
Tabelas clusterizadas não têm suporte.
Tabelas do tipo Delta Table não têm suporte.
Limites de operação SQL
Operações de comparação no tipo JSON não têm suporte.
As cláusulas
ORDER BYeGROUP BYnão podem ser usadas no tipo JSON.Uma coluna do tipo JSON não pode ser usada como chave de
JOIN.
Precisão de dados
A parte inteira de um NUMBER JSON é armazenada como BIGINT. Ocorre overflow se o valor estiver fora do intervalo do BIGINT.
A parte decimal de um NUMBER JSON é armazenada como DOUBLE. Pode haver perda de precisão durante a conversão.
Limites de caracteres
O caractere Unicode \u0000 não tem suporte em strings usadas para gerar dados JSON.
Compatibilidade de mecanismo
Outros mecanismos, como o Hologres, não conseguem ler o tipo de dados JSON de uma tabela MaxCompute.
Suporte a UDF
UDFs Java e Python não suportam o tipo JSON.
Profundidade de aninhamento
O tipo de dados JSON permite aninhamento de até 20 níveis.
Ferramentas de desenvolvimento compatíveis
As ferramentas compatíveis incluem o cliente MaxCompute (odpscmd), MaxCompute Studio e DataWorks. Ecossistemas externos, como o Dataphin, não têm suporte. 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 executam o comando
DESC json_tablenem baixam dados JSON usando o Tunnel.No arquivo
conf\odps_config.ini, localizado no caminho de instalação do cliente, definause_instance_tunnelcomofalse. Caso contrário, as consultas falharão.
Limites das funções de string
As seguintes funções de string suportam apenas caracteres em inglês:
TRIM / RTRIM / LTRIM: o parâmetro
trimCharsaceita somente caracteres em inglês.REVERSE: suporta apenas caracteres em inglês no modo Hive.
SOUNDEX: converte exclusivamente caracteres em inglês.
TOLOWER: transforma letras maiúsculas do inglês em minúsculas.
TOUPPER: transforma letras minúsculas do inglês em maiúsculas.
INITCAP: coloca a primeira letra de cada palavra em inglês em maiúscula e as demais em minúscula.