Este tema describe la sintaxis básica y los ejemplos de las funciones y operadores de arreglos.
Log Service admite las siguientes funciones y operadores de arreglos.
Si desea usar cadenas en instrucciones analíticas, debe encerrarlas entre comillas simples (''). Las cadenas sin comillas o encerradas entre comillas dobles ("") indican nombres de campo o de columna. Por ejemplo,
'status'
indica la cadena status, mientras que
status
o
"status"
indican el campo de registro status.
|
Nombre de la función |
Sintaxis |
Descripción |
SQL |
SPL |
|
[x] |
Devuelve el elemento en el índice x de un arreglo. Esto equivale a la función |
√ |
× |
|
|
array_agg(x) |
Devuelve un arreglo con todos los valores de x. |
√ |
× |
|
|
array_distinct(x) |
Elimina los elementos duplicados de un arreglo. |
√ |
√ |
|
|
array_except(x, y) |
Devuelve la diferencia entre dos arreglos. |
√ |
√ |
|
|
array_intersect(x, y) |
Devuelve la intersección de dos arreglos. |
√ |
√ |
|
|
array_join(x, delimiter) |
Une los elementos de un arreglo en una cadena mediante el delimitador especificado. Los elementos nulos se ignoran. Importante
La función array_join devuelve un resultado de hasta 1 KB. Los datos que superen este límite se truncan. |
√ |
√ |
|
|
array_join(x, delimiter, null_replacement) |
Une los elementos de un arreglo en una cadena mediante el delimitador especificado. Los elementos nulos se reemplazan con el valor null_replacement. Importante
La función array_join devuelve un resultado de hasta 1 KB. Los datos que superen este límite se truncan. |
√ |
√ |
|
|
array_max(x) |
Devuelve el valor máximo de un arreglo. |
√ |
√ |
|
|
array_min(x) |
Devuelve el valor mínimo de un arreglo. |
√ |
√ |
|
|
array_position(x, element) |
Devuelve el índice basado en 1 de un elemento especificado. Devuelve 0 si el elemento no existe. |
√ |
√ |
|
|
array_remove(x, element) |
Elimina un elemento especificado de un arreglo. |
√ |
√ |
|
|
array_sort(x) |
Ordena los elementos de un arreglo en orden ascendente. Los elementos nulos se colocan al final. |
√ |
√ |
|
|
array_transpose(x) |
Transpone un arreglo bidimensional (un arreglo de arreglos) al intercambiar sus filas y columnas. |
√ |
× |
|
|
array_union(x, y) |
Devuelve la unión de dos arreglos. |
√ |
× |
|
|
cardinality(x) |
Devuelve el número de elementos de un arreglo. |
√ |
√ |
|
|
concat(x, y…) |
Concatena varios arreglos en uno solo. |
√ |
× |
|
|
contains(x, element) |
Devuelve |
√ |
× |
|
|
element_at(x, y) |
Devuelve el elemento en el índice y de un arreglo. |
√ |
× |
|
|
filter(x, lambda_expression) |
Filtra un arreglo mediante una expresión lambda y devuelve solo los elementos que cumplen con la expresión. |
√ |
√ |
|
|
flatten(x) |
Convierte un arreglo bidimensional en un arreglo unidimensional. |
√ |
× |
|
|
reduce(x, lambda_expression) |
Reduce un arreglo a un único valor al aplicar una expresión lambda a sus elementos. |
√ |
√ |
|
|
reverse(x) |
Invierte el orden de los elementos de un arreglo. |
√ |
√ |
|
|
sequence(x, y) |
Devuelve un arreglo de valores consecutivos y crecientes dentro de un rango especificado. El paso predeterminado es 1. |
√ |
√ |
|
|
sequence(x, y, step) |
Devuelve un arreglo de valores consecutivos y crecientes dentro de un rango especificado, con un paso personalizado. |
√ |
√ |
|
|
shuffle(x) |
Mezcla aleatoriamente los elementos de un arreglo. |
√ |
√ |
|
|
slice(x, start, length) |
Devuelve un subconjunto de un arreglo. |
√ |
√ |
|
|
transform(x, lambda_expression) |
Transforma cada elemento de un arreglo mediante una expresión lambda. |
√ |
√ |
|
|
zip(x, y...) |
Combina varios arreglos en un único arreglo bidimensional. Los elementos en el mismo índice de los arreglos de entrada forman un nuevo subarreglo. |
√ |
√ |
|
|
zip_with(x, y, lambda_expression) |
Combina dos arreglos en uno solo al aplicar una expresión lambda a cada par de elementos correspondientes. |
√ |
× |
Operador de subíndice
El operador de subíndice devuelve el elemento en el índice x de un arreglo. Equivale a la función element_at.
Syntax
[x]
Parameters
|
Parámetro |
Descripción |
|
x |
El índice basado en 1 del elemento que se va a recuperar de un arreglo. El valor debe ser de tipo |
Return value type
El valor devuelto tiene el mismo tipo de datos que los elementos del arreglo.
Examples
Este ejemplo devuelve el primer elemento del campo number.
-
Campo de muestra
number:[49,50,45,47,50] -
Instrucción de consulta
* | SELECT cast(json_parse(number) as array(bigint)) [1] La consulta devuelve
49.
Función array_agg
La función array_agg devuelve un arreglo con todos los valores de x.
Syntax
array_agg (x)
Parameters
|
Parámetro |
Descripción |
|
x |
El parámetro puede ser de cualquier tipo de datos. |
Return value type
array
Examples
Devuelve los valores del campo status como un arreglo.
-
Instrucción de consulta
* | SELECT array_agg(status) AS array Resultados de la consulta: El campo array contiene un arreglo de códigos de estado HTTP (como 200, 202, 204, 303, 304, 401, 402 y 501).
Función array_distinct
Elimina los elementos duplicados de un arreglo.
Syntax
array_distinct(x)
Parameters
|
Parámetro |
Descripción |
|
x |
Debe ser un arreglo. |
Return value type
array
Examples
Elimina los elementos duplicados del campo number.
-
Campo de muestra
number:[49,50,45,47,50] -
Instrucción de consulta
*| SELECT array_distinct(cast(json_parse(number) as array(bigint))) El resultado de la consulta es
[49,50,45,47]. El elemento duplicado 50 se eliminó del arreglo original.
Función array_except
La función array_except devuelve la diferencia entre dos arreglos.
Syntax
array_except(x, y)
Parameters
|
Parámetro |
Descripción |
|
x |
Debe ser un arreglo. |
|
y |
Debe ser un arreglo. |
Return value type
array
Examples
Calcula la diferencia entre los arreglos [1,2,3,4,5] y [1,3,5,7].
-
Instrucción de consulta
* | SELECT array_except(array[1,2,3,4,5],array[1,3,5,7]) La consulta devuelve
[2,4].
Función array_intersect
Calcula la intersección de dos arreglos.
Syntax
array_intersect(x, y)
Parameters
|
Parámetro |
Descripción |
|
x |
Un arreglo. |
|
y |
Un arreglo. |
Return value type
array
Examples
Calcula la intersección de los arreglos [1,2,3,4,5] y [1,3,5,7].
-
Instrucción de consulta y análisis
* | SELECT array_intersect(array[1,2,3,4,5],array[1,3,5,7]) El resultado de la consulta y el análisis es
[1,3,5].
Función array_join
Concatena los elementos de un arreglo en una cadena mediante un delimitador especificado.
Syntax
-
Concatena los elementos de un arreglo en una cadena mediante un delimitador. Los elementos nulos se ignoran.
array_join(x, delimiter) -
Concatena los elementos de un arreglo en una cadena mediante un delimitador. Reemplaza los elementos nulos con null_replacement.
array_join(x, delimiter,null_replacement)
Parameters
|
Parámetro |
Descripción |
|
x |
El arreglo de entrada. |
|
delimiter |
La cadena que se usa para separar los elementos del arreglo. |
|
null_replacement |
La cadena que se usa para reemplazar los elementos nulos. |
Return value type
varchar.
Examples
Este ejemplo concatena los elementos del arreglo [null, 'Log', 'Service'] en una cadena con un espacio como delimitador. Reemplaza el elemento nulo con 'Alicloud'.
-
Consulta
* | SELECT array_join(array[null,'Log','Service'],' ','Alicloud') Resultados: El valor de la columna _col0 es
Alicloud Log Service.
Función array_max
Devuelve el valor máximo de un arreglo.
Syntax
array_max(x)
Parameters
|
Parámetro |
Descripción |
|
x |
La entrada debe ser un arreglo. Importante
Si el arreglo contiene un elemento nulo, la función devuelve null. |
Return value type
El valor devuelto tiene el mismo tipo de datos que los elementos del arreglo.
Examples
Este ejemplo encuentra el valor máximo en un arreglo de números.
-
Campo de muestra
number:[49,50,45,47,50] -
Instrucción de consulta
*| SELECT array_max(try_cast(json_parse(number) as array(bigint))) AS max_number Resultados de la consulta: El valor de max_number es 50.
Función array_min
Devuelve el valor mínimo de un arreglo.
Syntax
array_min(x)
Parameters
|
Parámetro |
Descripción |
|
x |
El arreglo de entrada. Importante
Si el arreglo contiene un elemento nulo, la función devuelve null. |
Return value type
El valor devuelto tiene el mismo tipo de datos que los elementos del arreglo.
Examples
Encuentra el valor mínimo en un arreglo de números.
-
Campo de muestra
number:[49,50,45,47,50] -
Instrucción de consulta
*| SELECT array_min(try_cast(json_parse(number) as array(bigint))) AS min_number La consulta devuelve 45.
Función array_position
La función array_position devuelve el índice basado en 1 de un elemento en un arreglo. Devuelve 0 si no se encuentra el elemento.
Syntax
array_position(x, element)
Parameters
|
Parámetro |
Descripción |
|
x |
El arreglo donde se realizará la búsqueda. |
|
element |
El elemento que se va a buscar en el arreglo. Nota
Si el elemento que se busca es nulo, la función devuelve null. |
Return value type
Devuelve un valor bigint.
Examples
Busca el índice de 45 en el arreglo [49,45,47].
-
Instrucción de consulta y análisis
* | SELECT array_position(array[49,45,47],45) El resultado es
2, lo que indica que el elemento45se encuentra en el índice2del arreglo.
Función array_remove
La función array_remove elimina todas las apariciones de un elemento especificado en un arreglo.
Syntax
array_remove(x, element)
Parameters
|
Parámetro |
Descripción |
|
x |
El arreglo de entrada. |
|
element |
El elemento que se va a eliminar del arreglo. Nota
Si el elemento es nulo, la función devuelve null. |
Return value type
Devuelve un arreglo.
Examples
Elimina 45 del arreglo [49,45,47].
-
Instrucción de consulta y análisis
* | SELECT array_remove(array[49,45,47],45) El resultado es
[49,47].
Función array_sort
La función array_sort ordena los elementos de un arreglo en orden ascendente y coloca los valores nulos al final.
Syntax
array_sort(x)
Parameters
|
Parámetro |
Descripción |
|
x |
El arreglo que se va a ordenar. |
Return value type
Devuelve un arreglo.
Examples
Ordene el arreglo ['b', 'd', null, 'c', 'a'] en orden ascendente.
-
Instrucción de consulta
* | SELECT array_sort(array['b','d',null,'c','a']) El resultado es
["a","b","c","d",null]. Los elementos se ordenan alfabéticamente en orden ascendente y el valor nulo se coloca al final.
Función array_transpose
La función array_transpose transpone un arreglo bidimensional (una matriz). Crea un nuevo arreglo bidimensional al agrupar los elementos que comparten el mismo índice en los arreglos internos.
Syntax
array_transpose(x)
Parameters
|
Parámetro |
Descripción |
|
x |
La entrada es un arreglo bidimensional de tipo |
Return value type
array(double)
Examples
La función agrupa los elementos con el mismo índice en cada arreglo interno para formar nuevos arreglos internos. Por ejemplo, a partir de los arreglos [0,1,2,3], [10,19,18,17] y [9,8,7], la función toma los primeros elementos (0, 10 y 9) y los agrupa en el nuevo arreglo interno [0.0,10.0,9.0].
-
Instrucción de consulta y análisis
* | SELECT array_transpose(array[array[0,1,2,3],array[10,19,18,17],array[9,8,7]]) Resultados de la consulta y el análisis: El valor en la columna _col0 es
[[0.0,10.0,9.0],[1.0,19.0,8.0],[2.0,18.0,7.0],[3.0,17.0]].
Función array_union
Devuelve un arreglo con los elementos de la unión de dos arreglos, sin duplicados.
Syntax
array_union(x, y)
Parameters
|
Parámetro |
Descripción |
|
x |
Debe ser un arreglo. |
|
y |
Debe ser un arreglo. |
Return value type
array
Examples
Este ejemplo calcula la unión de los arreglos [1,2,3,4,5] y [1,3,5,7].
-
Instrucción de consulta
* | SELECT array_union(array[1,2,3,4,5],array[1,3,5,7]) La consulta devuelve
[1,2,3,4,5,7].
Función Cardinality
Devuelve el número de elementos en un arreglo.
Syntax
cardinality(x)
Parameters
|
Parámetro |
Descripción |
|
x |
El arreglo de entrada. |
Return value type
Devuelve un valor bigint.
Examples
Este ejemplo cuenta el número de elementos en el campo number.
-
Campo de muestra
number:[49,50,45,47,50] -
Instrucción de consulta
*| SELECT cardinality(cast(json_parse(number) as array(bigint))) La consulta devuelve
5, ya que el arreglo contiene 5 elementos.
Función concat
Concatena varios arreglos en uno solo.
Syntax
concat(x, y…)
Parameters
|
Parámetro |
Descripción |
|
x |
Debe ser un arreglo. |
|
y |
Debe ser un arreglo. |
Return value type
array
Examples
Concatene los arreglos ['red','blue'] y ['yellow','green'].
-
Instrucción de consulta
* | SELECT concat(array['red','blue'],array['yellow','green']) La consulta devuelve
["red","blue","yellow","green"].
Función contains
Comprueba si un arreglo contiene un elemento específico. Devuelve true si lo encuentra.
Syntax
contains(x, element)
Parameters
|
Parámetro |
Descripción |
|
x |
El arreglo que se va a comprobar. |
|
element |
El elemento que se busca en el arreglo. |
Return value type
boolean
Examples
Compruebe si el campo region contiene 'cn-beijing'.
-
Campo de muestra
region:["cn-hangzhou","cn-shanghai","cn-beijing"] -
Instrucción de consulta
*| SELECT contains(cast(json_parse(region) as array(varchar)),'cn-beijing') La consulta devuelve una columna llamada
_col0con el valortrue, lo cual indica que el arregloregioncontienecn-beijing.
Función element_at
Devuelve el elemento en el índice y de un arreglo.
Syntax
element_at(x, y)
Parameters
|
Parámetro |
Descripción |
|
x |
El arreglo del cual se obtendrá un elemento. |
|
y |
El índice bigint (con base 1) del elemento que se obtendrá del arreglo. |
Return value type
El valor devuelto tiene el mismo tipo de datos que los elementos del arreglo.
Examples
Este ejemplo obtiene el segundo elemento de un arreglo almacenado como cadena JSON en el campo number.
-
Campo de muestra
number:[49,50,45,47,50] -
Instrucción de consulta y análisis
* | SELECT element_at(cast(json_parse(number) AS array(varchar)), 2) La consulta devuelve una columna llamada
_col0con un valor de50.
Función Filter
La función filter filtra un arreglo mediante una expresión lambda y devuelve un nuevo arreglo que contiene solo los elementos para los cuales la expresión se evalúa como verdadera.
Syntax
filter(x, lambda_expression)
Parameters
|
Parámetro |
Descripción |
|
x |
El arreglo de entrada. |
|
lambda_expression |
Una expresión lambda. Para obtener más información, consulte lambda expression. |
Return value type
Devuelve un arreglo.
Examples
Devuelve los elementos mayores que 0 del arreglo [5,-6,null,7]. La expresión lambda es x -> x > 0.
-
Instrucción de consulta
* | SELECT filter(array[5,-6,null,7],x -> x > 0) La consulta devuelve
[5,7].
Función Flatten
Convierte un arreglo bidimensional en un arreglo unidimensional.
Syntax
flatten(x)
Parameters
|
Parámetro |
Descripción |
|
x |
El arreglo bidimensional que se va a aplanar. El valor debe ser un arreglo. |
Return value type
Devuelve un arreglo unidimensional.
Examples
Este ejemplo convierte un arreglo bidimensional en un arreglo unidimensional.
-
Instrucción de consulta
* | SELECT flatten(array[array[1,2,3,4],array[5,2,2,4]]) Resultados de la consulta y el análisis: La columna _col0 contiene
[1,2,3,4,5,2,2,4].
Función Reduce
La función reduce aplica una expresión lambda a un arreglo y agrega sus elementos en un solo valor.
Syntax
reduce(array, initialState, inputFunction, outputFunction)
Parameters
|
Parámetro |
Descripción |
|
array |
El arreglo de entrada de elementos bigint. |
|
initialState, inputFunction, outputFunction |
Define la lógica de reducción, que incluye un estado inicial, una función de entrada que procesa cada elemento y una función de salida que finaliza el resultado. Para obtener más información, consulte lambda expression. |
Return value type
bigint
Examples
Calcula la suma de los elementos en el arreglo [5, 20, 50].
-
Instrucción de consulta
* | SELECT reduce(array[5, 20, 50], 0, (s, x) -> s + x, s -> s) Resultado de la consulta:
75
Función Reverse
Invierte el orden de los elementos en un arreglo.
Syntax
reverse(x)
Parameters
|
Parámetro |
Descripción |
|
x |
El arreglo que se va a invertir. |
Return value type
Un arreglo con sus elementos en orden inverso.
Examples
Invierte los elementos en el arreglo [1,2,3,4,5].
-
Instrucción de consulta
* | SELECT reverse(array[1,2,3,4,5]) Resultados de la consulta:
[5,4,3,2,1].
Función Sequence
La función sequence devuelve un arreglo de valores consecutivos y crecientes dentro de un rango especificado.
Syntax
-
Usa un paso predeterminado de 1.
sequence(x, y) -
Usa un paso personalizado.
sequence(x, y, step)
Parameters
|
Parámetro |
Descripción |
|
x |
El valor inicial de la secuencia. Los tipos de datos compatibles son bigint y timestamp. Para el tipo timestamp, puede usar una marca de tiempo UNIX o una expresión de fecha y hora. |
|
y |
El valor final de la secuencia. Los tipos de datos compatibles son bigint y timestamp. Para el tipo timestamp, puede usar una marca de tiempo UNIX o una expresión de fecha y hora. |
|
step |
El valor del paso. Cuando x e y son expresiones de fecha y hora, el parámetro step debe tener uno de los siguientes formatos:
|
Return value type
array
Examples
-
Devuelva los números pares del 0 al 10.
-
Instrucción de consulta
* | SELECT sequence(0,10,2) La consulta devuelve
[0,2,4,6,8,10].
-
-
Devuelva las fechas del 23 de octubre de 2017 al 12 de agosto de 2021, con un intervalo de un año.
-
Instrucción de consulta
ww* | SELECT sequence(from_unixtime(1508737026),from_unixtime(1628734085),interval '1' year to month ) -
Resultado de la consulta
["2017-10-23 13:37:06.000","2018-10-23 13:37:06.000","2019-10-23 13:37:06.000","2020-10-23 13:37:06.000"]
-
-
Devuelva las marcas de tiempo UNIX entre 1628733298 y 1628734085 con un intervalo de 60 segundos.
-
Instrucción de consulta
* | SELECT sequence(1628733298,1628734085,60) En el resultado, el campo
_col0contiene el arreglo de marcas de tiempo[1628733298,1628733358,1628733418,1628733478,1628733538,1628733598,1628733658,1628733718,1628733778,1628733838,1628733898,1628733958,1628734018,1628734078].
-
Función Shuffle
Mezcla aleatoriamente los elementos de un arreglo.
Syntax
shuffle(x)
Parameters
|
Parámetro |
Descripción |
|
x |
Debe ser un arreglo. |
Return value type
Devuelve un arreglo.
Examples
Este ejemplo devuelve una permutación aleatoria del arreglo [1,2,3,4,5].
-
Instrucción de consulta y análisis
*| SELECT shuffle(array[1,2,3,4,5]) Resultados de la consulta y el análisis: La consulta devuelve una sola columna,
_col0, que contiene un arreglo reordenado aleatoriamente. Los valores de ejemplo incluyen[3,1,2,4,5],[5,1,2,4,3]y[2,5,3,1,4].
Función slice
Devuelve un subconjunto de un arreglo.
Syntax
slice(x, start, length)
Parameters
|
Parámetro |
Descripción |
|
x |
El arreglo de entrada. |
|
start |
El índice inicial del segmento (con base 1).
|
|
length |
El número de elementos que se incluirán en el subconjunto. |
Return value type
array
Examples
Este ejemplo devuelve un subconjunto de dos elementos del arreglo [1,2,4,5,6,7,7], comenzando en el tercer elemento.
-
Instrucción de consulta y análisis
* | SELECT slice(array[1,2,4,5,6,7,7],3,2) Resultados de la consulta y el análisis: La columna _col0 contiene
[4,5].
Función Transform
La función transform aplica una expresión lambda a cada elemento de un arreglo.
Syntax
transform(x, lambda_expression)
Parameters
|
Parámetro |
Descripción |
|
x |
Debe ser un arreglo. |
|
lambda_expression |
La expresión lambda que se aplicará. Para obtener más información, consulte lambda expression. |
Return value type
Arreglo.
Examples
Este ejemplo suma 1 a cada elemento en el arreglo [5,6].
-
Instrucción de consulta y análisis
* | SELECT transform(array[5,6],x -> x + 1) La consulta devuelve
[6,7].
Función zip
La función zip combina varios arreglos en un arreglo bidimensional. Agrupa los elementos con el mismo índice de los arreglos de entrada para formar arreglos anidados.
Syntax
zip(x, y...)
Parameters
|
Parámetro |
Descripción |
|
x |
Debe ser un arreglo. |
|
y |
Debe ser un arreglo. |
Return value type
Devuelve un arreglo bidimensional.
Examples
Este ejemplo combina los arreglos [1,2,3], ['1b',null,'3b'] y [1,2,3] en un arreglo bidimensional.
-
Instrucción de consulta y análisis
* | SELECT zip(array[1,2,3], array['1b',null,'3b'],array[1,2,3]) La columna _col0 en los resultados de la consulta y el análisis devuelve
[[1,"1b",1],[2,null,2],[3,"3b",3]]. La función agrupa los elementos de los arreglos de entrada según su índice compartido.
Función zip_with
La función zip_with combina dos arreglos al aplicar una expresión lambda a sus elementos correspondientes.
Syntax
zip_with(x, y, lambda_expression)
Parameters
|
Parámetro |
Descripción |
|
x |
El primer arreglo de entrada. |
|
y |
El segundo arreglo de entrada. |
|
lambda_expression |
Una expresión lambda que especifica cómo combinar los elementos. Para obtener más información, consulte lambda expression. |
Return value type
array
Examples
Este ejemplo usa la expresión lambda (x, y) -> x + y para sumar los elementos correspondientes de los arreglos [1,2] y [3,4]. La función devuelve los resultados en un nuevo arreglo.
-
Instrucción de consulta y análisis
SELECT zip_with(array[1,2], array[3,4],(x,y) -> x + y) Resultados de la consulta y el análisis: El valor en la columna
_col0es[4,6].