Todos los productos
Search
Centro de documentos

Simple Log Service:Funciones y operadores de arreglos

Última actualización: Sep 02, 2026

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.

Importante

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

subscript operator

[x]

Devuelve el elemento en el índice x de un arreglo. Esto equivale a la función element_at.

√

×

array_agg function

array_agg(x)

Devuelve un arreglo con todos los valores de x.

√

×

array_distinct function

array_distinct(x)

Elimina los elementos duplicados de un arreglo.

√

√

array_except function

array_except(x, y)

Devuelve la diferencia entre dos arreglos.

√

√

array_intersect function

array_intersect(x, y)

Devuelve la intersección de dos arreglos.

√

√

array_join function

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 function

array_max(x)

Devuelve el valor máximo de un arreglo.

√

√

array_min function

array_min(x)

Devuelve el valor mínimo de un arreglo.

√

√

array_position function

array_position(x, element)

Devuelve el índice basado en 1 de un elemento especificado. Devuelve 0 si el elemento no existe.

√

√

array_remove function

array_remove(x, element)

Elimina un elemento especificado de un arreglo.

√

√

array_sort function

array_sort(x)

Ordena los elementos de un arreglo en orden ascendente. Los elementos nulos se colocan al final.

√

√

array_transpose function

array_transpose(x)

Transpone un arreglo bidimensional (un arreglo de arreglos) al intercambiar sus filas y columnas.

√

×

array_union function

array_union(x, y)

Devuelve la unión de dos arreglos.

√

×

cardinality function

cardinality(x)

Devuelve el número de elementos de un arreglo.

√

√

concat function

concat(x, y…)

Concatena varios arreglos en uno solo.

√

×

contains function

contains(x, element)

Devuelve true si el arreglo contiene el elemento especificado y false en caso contrario.

√

×

element_at function

element_at(x, y)

Devuelve el elemento en el índice y de un arreglo.

√

×

filter function

filter(x, lambda_expression)

Filtra un arreglo mediante una expresión lambda y devuelve solo los elementos que cumplen con la expresión.

√

√

flatten function

flatten(x)

Convierte un arreglo bidimensional en un arreglo unidimensional.

√

×

reduce function

reduce(x, lambda_expression)

Reduce un arreglo a un único valor al aplicar una expresión lambda a sus elementos.

√

√

reverse function

reverse(x)

Invierte el orden de los elementos de un arreglo.

√

√

sequence function

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 function

shuffle(x)

Mezcla aleatoriamente los elementos de un arreglo.

√

√

slice function

slice(x, start, length)

Devuelve un subconjunto de un arreglo.

√

√

transform function

transform(x, lambda_expression)

Transforma cada elemento de un arreglo mediante una expresión lambda.

√

√

zip function

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 function

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 bigint.

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 elemento 45 se encuentra en el índice 2 del 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 array(double).

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 _col0 con el valor true, lo cual indica que el arreglo region contiene cn-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 _col0 con un valor de 50.

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:

  • interval ' n' year to month: El intervalo es de n años.

  • interval 'n' day to second: El intervalo es de n días.

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 _col0 contiene 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).

  • Si start es negativo, el índice se cuenta desde el final del arreglo.

  • Si start es positivo, el índice se cuenta desde el inicio del arreglo.

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 _col0 es [4,6].