MaxCompute ofrece una amplia variedad de funciones integradas que cubren la mayoría de los requisitos de procesamiento de datos. En esta página se describen los tipos de funciones disponibles y las notas de uso aplicables a todas ellas.
Tipos de funciones
Las funciones integradas de MaxCompute se dividen en tres categorías principales:
Funciones escalares: operan sobre una sola fila y devuelven un valor por cada invocación. Incluyen funciones para fecha y hora, matemáticas, cadenas, cifrado, red, ARRAY, MAP, STRUCT, JSON y procesamiento de datos no estructurados.
Funciones de agregación: toman varias filas de entrada y devuelven un único valor de salida.
Funciones de ventana: operan sobre un subconjunto de filas dentro de una columna de ventana definida y devuelven un valor por cada fila.
Para consultar la correspondencia entre las funciones integradas de MaxCompute y sus equivalentes de código abierto, consulte Mapping between built-in functions of MaxCompute, Hive, MySQL, and Oracle.
|
Function type |
Description |
|
Manipulan datos DATE, DATETIME y TIMESTAMP: suman o restan fechas, calculan diferencias, extraen campos y convierten formatos. |
|
|
Ejecutan operaciones numéricas sobre datos BIGINT, DOUBLE, DECIMAL y FLOAT: convierten bases, redondean números y generan valores aleatorios. |
|
|
Calculan agregaciones, clasificaciones, desplazamientos y muestras dentro de una columna de ventana específica. |
|
|
Agregan varios registros de entrada en un único valor de salida: sumas, promedios, valores mínimos y máximos, parámetros de agregación y concatenación de cadenas. |
|
|
Funciones de agregación aproximada que eliminan duplicados y aceleran las consultas en conjuntos de datos grandes con un uso mínimo de memoria. |
|
|
Manipulan datos STRING: truncan, reemplazan, buscan, cambian mayúsculas y minúsculas, y convierten formatos. Consulte Limits of STRING functions. |
|
|
Manipulan datos ARRAY: construyen, deduplican, agregan, ordenan y combinan arreglos. |
|
|
Manipulan datos MAP: extraen pares clave-valor, construyen mapas y los combinan. |
|
|
Manipulan datos STRUCT: expanden arreglos STRUCT y construyen estructuras. |
|
|
Manipulan datos JSON: extraen valores de campos, generan objetos o arreglos, insertan o actualizan datos y gestionan estructuras complejas. Consulte Limits of JSON functions. |
|
|
Cifran y descifran datos de tablas de tipo STRING y BINARY. |
|
|
Procesan datos STRING y BINARY relacionados con la red: convierten formatos de direcciones IP, analizan sintácticamente URL y obtienen máscaras de red. |
|
|
Se conectan a datos no estructurados y a sus metadatos almacenados en almacenes o lagos de datos mediante distintos métodos. |
|
|
Sirven para construir, transformar y analizar datos geoespaciales del tipo GEOGRAPHY. Permiten crear objetos geográficos como puntos, líneas y polígonos a partir de coordenadas de latitud y longitud o texto WKT/WKB. También extraen propiedades como coordenadas y cuadros delimitadores, determinan relaciones espaciales entre objetos (contención, intersección y cobertura) y calculan distancias entre ellos. |
|
|
Funciones adicionales para diversos escenarios de negocio. |
|
|
Admiten el procesamiento del tipo de datos VECTOR para calcular distancias vectoriales y ejecutar búsquedas vectoriales. Son adecuadas para escenarios como búsqueda semántica, mejora de modelos de lenguaje grandes (LLM) e inteligencia artificial generativa. |
Notas de uso
Tenga en cuenta lo siguiente al usar las funciones integradas:
Parámetros de entrada: el tipo, la cantidad y el formato de los parámetros de entrada deben cumplir con la sintaxis especificada. De lo contrario, MaxCompute no podrá analizar la función y la instrucción SQL fallará.
-
Tipos de datos 2.0: si una función integrada utiliza tipos de datos 2.0 (TINYINT, SMALLINT, INT, FLOAT, VARCHAR, TIMESTAMP o BINARY), habilite estos tipos antes de ejecutar la función. Si no lo hace, se reportará un error. Habilite los tipos de datos 2.0 en uno de los siguientes niveles:
-
Nivel de sesión (aplica solo a la instrucción SQL actual): agregue la siguiente instrucción antes de su instrucción SQL y envíelas juntas.
SET odps.sql.type.system.odps2=true; -
Nivel de proyecto (aplica a todas las instrucciones SQL posteriores y surte efecto en 10 a 15 minutos): el propietario del proyecto ejecuta el siguiente comando.
SETPROJECT odps.sql.type.system.odps2=true;
-
Conversiones implícitas de tipo deshabilitadas: cuando los tipos de datos 2.0 están habilitados, se deshabilitan ciertas conversiones implícitas para evitar pérdida de precisión o errores. Estas son: STRING a BIGINT, STRING a DATETIME, DOUBLE a BIGINT, DECIMAL a DOUBLE y DECIMAL a BIGINT. Use la función CAST para conversiones explícitas o deshabilite los tipos de datos 2.0.
-
Conflictos de nombre entre UDF y funciones integradas: si una función definida por el usuario (UDF) tiene el mismo nombre que una función integrada, la UDF tiene prioridad. Por ejemplo, si existe una UDF llamada CONCAT en un proyecto, el sistema invoca la UDF en lugar de la función integrada CONCAT. Para llamar a la función integrada, anteponga
::al nombre de la función:SELECT ::CONCAT('ab', 'c'); Propiedades globales: los resultados de las funciones integradas pueden variar según las propiedades globales configuradas en el proyecto de MaxCompute. Ejecute
SETPROJECT;para consultar las propiedades globales actuales.
Límites de las funciones JSON
Requisitos de versión del SDK
Java SDK V0.44.0 o posterior
PyODPS V0.11.4.1 o posterior
Límites en operaciones de tabla
No se admite agregar una columna JSON a una tabla.
No hay compatibilidad con tablas agrupadas (clustered tables).
No se admiten tablas del tipo Delta Table.
Límites en operaciones SQL
No se admiten operaciones de comparación sobre el tipo JSON.
Las cláusulas
ORDER BYyGROUP BYno se pueden usar con el tipo JSON.Una columna de tipo JSON no puede usarse como clave de
JOIN.
Precisión de datos
La parte entera de un NUMBER de JSON se almacena como BIGINT. Se produce un desbordamiento si el valor está fuera del rango de BIGINT.
La parte decimal de un NUMBER de JSON se almacena como DOUBLE. Puede haber pérdida de precisión durante la conversión.
Límites de caracteres
El carácter Unicode \u0000 no es compatible en las cadenas utilizadas para generar datos JSON.
Compatibilidad de motores
Otros motores, como Hologres, no pueden leer el tipo de datos JSON desde una tabla de MaxCompute.
Compatibilidad con UDF
Las UDF de Java y de Python no admiten el tipo JSON.
Profundidad de anidamiento
El tipo de datos JSON admite hasta 20 niveles de anidamiento.
Herramientas de desarrollo compatibles
Entre las herramientas compatibles se encuentran el cliente de MaxCompute (odpscmd), MaxCompute Studio y DataWorks. Los ecosistemas externos, como Dataphin, no son compatibles. Confirme la compatibilidad antes de usar el tipo de datos JSON con cualquier sistema externo.
Al usar odpscmd, tenga en cuenta lo siguiente:
Actualice el cliente a la versión V0.46.5 o posterior. Las versiones anteriores no pueden ejecutar el comando
DESC json_tableni descargar datos JSON mediante Tunnel.En el archivo
conf\odps_config.inide la ruta de instalación del cliente, establezcause_instance_tunnelenfalse. De lo contrario, las consultas fallarán.
Límites de las funciones STRING
A continuación se muestran las funciones de cadena que solo admiten caracteres en inglés:
TRIM / RTRIM / LTRIM: el parámetro
trimCharssolo admite caracteres en inglés.REVERSE: solo admite caracteres en inglés en el modo Hive.
SOUNDEX: convierte únicamente caracteres en inglés.
TOLOWER: convierte letras mayúsculas del inglés a minúsculas.
TOUPPER: convierte letras minúsculas del inglés a mayúsculas.
INITCAP: convierte la primera letra en inglés de cada palabra a mayúscula y el resto a minúsculas.