Este tópico descreve a sintaxe básica e apresenta exemplos de funções e operadores de array.
O Log Service oferece suporte às seguintes funções e operadores de array.
Para usar strings em instruções analíticas, coloque-as entre aspas simples (''). Strings sem aspas ou entre aspas duplas ("") indicam nomes de campos ou colunas. Por exemplo,
'status'
indica a string status, enquanto
status
ou
"status"
indica o campo de log status.
|
Nome da função |
Sintaxe |
Descrição |
SQL |
SPL |
|
[x] |
Retorna o elemento no índice x de um array. Equivale à função |
√ |
× |
|
|
array_agg(x) |
Retorna um array com todos os valores de x. |
√ |
× |
|
|
array_distinct(x) |
Remove elementos duplicados de um array. |
√ |
√ |
|
|
array_except(x, y) |
Retorna a diferença entre dois arrays. |
√ |
√ |
|
|
array_intersect(x, y) |
Retorna a interseção de dois arrays. |
√ |
√ |
|
|
array_join(x, delimiter) |
Une os elementos de um array em uma string usando o delimitador especificado. Ignora elementos nulos. Importante
A função array_join retorna um resultado de até 1 KB. Dados que excedem esse limite são truncados. |
√ |
√ |
|
|
array_join(x, delimiter, null_replacement) |
Une os elementos de um array em uma string usando o delimitador especificado. Substitui elementos nulos pelo valor null_replacement. Importante
A função array_join retorna um resultado de até 1 KB. Dados que excedem esse limite são truncados. |
√ |
√ |
|
|
array_max(x) |
Retorna o valor máximo em um array. |
√ |
√ |
|
|
array_min(x) |
Retorna o valor mínimo em um array. |
√ |
√ |
|
|
array_position(x, element) |
Retorna o índice base 1 de um elemento especificado. Retorna 0 se o elemento não existir. |
√ |
√ |
|
|
array_remove(x, element) |
Remove um elemento especificado de um array. |
√ |
√ |
|
|
array_sort(x) |
Ordena os elementos de um array em ordem crescente. Posiciona elementos nulos ao final. |
√ |
√ |
|
|
array_transpose(x) |
Transpõe um array bidimensional (um array de arrays) trocando linhas por colunas. |
√ |
× |
|
|
array_union(x, y) |
Retorna a união de dois arrays. |
√ |
× |
|
|
cardinality(x) |
Retorna o número de elementos em um array. |
√ |
√ |
|
|
concat(x, y…) |
Concatena vários arrays em um único array. |
√ |
× |
|
|
contains(x, element) |
Retorna |
√ |
× |
|
|
element_at(x, y) |
Retorna o elemento no índice y de um array. |
√ |
× |
|
|
filter(x, lambda_expression) |
Filtra um array usando uma expressão lambda e retorna apenas os elementos que satisfazem a expressão. |
√ |
√ |
|
|
flatten(x) |
Converte um array bidimensional em unidimensional. |
√ |
× |
|
|
reduce(x, lambda_expression) |
Reduz um array a um único valor aplicando uma expressão lambda aos seus elementos. |
√ |
√ |
|
|
reverse(x) |
Inverte a ordem dos elementos em um array. |
√ |
√ |
|
|
sequence(x, y) |
Retorna um array de valores consecutivos e crescentes dentro de um intervalo especificado. O incremento padrão é 1. |
√ |
√ |
|
|
sequence(x, y, step) |
Retorna um array de valores consecutivos e crescentes dentro de um intervalo especificado, com incremento personalizado. |
√ |
√ |
|
|
shuffle(x) |
Embaralha os elementos de um array. |
√ |
√ |
|
|
slice(x, start, length) |
Retorna um subconjunto de um array. |
√ |
√ |
|
|
transform(x, lambda_expression) |
Transforma cada elemento de um array usando uma expressão lambda. |
√ |
√ |
|
|
zip(x, y...) |
Mescla vários arrays em um único array bidimensional. Elementos no mesmo índice dos arrays de entrada formam um novo subarray. |
√ |
√ |
|
|
zip_with(x, y, lambda_expression) |
Mescla dois arrays em um único array aplicando uma expressão lambda a cada par de elementos correspondentes. |
√ |
× |
Operador de subscrito
O operador de subscrito retorna o elemento no índice x de um array. Ele equivale à função element_at.
Syntax
[x]
Parameters
|
Parâmetro |
Descrição |
|
x |
Índice base 1 do elemento a recuperar de um array. O valor deve ser do tipo |
Return value type
O valor retornado tem o mesmo tipo de dados dos elementos do array.
Examples
Este exemplo retorna o primeiro elemento do campo number.
-
Campo de exemplo
number:[49,50,45,47,50] -
Instrução de consulta
* | SELECT cast(json_parse(number) as array(bigint)) [1] A consulta retorna
49.
Função array_agg
A função array_agg retorna um array com todos os valores de x.
Syntax
array_agg (x)
Parameters
|
Parâmetro |
Descrição |
|
x |
O parâmetro pode ser de qualquer tipo de dados. |
Return value type
array
Examples
Retorna os valores do campo status como um array.
-
Instrução de consulta
* | SELECT array_agg(status) AS array Resultados da consulta: O campo array contém um array de códigos de status HTTP (como 200, 202, 204, 303, 304, 401, 402 e 501).
Função array_distinct
Remove elementos duplicados de um array.
Syntax
array_distinct(x)
Parameters
|
Parâmetro |
Descrição |
|
x |
Deve ser um array. |
Return value type
array
Examples
Remove elementos duplicados do campo number.
-
Campo de exemplo
number:[49,50,45,47,50] -
Instrução de consulta
*| SELECT array_distinct(cast(json_parse(number) as array(bigint))) O resultado da consulta é
[49,50,45,47]. O elemento duplicado 50 foi removido do array original.
Função array_except
A função array_except retorna a diferença entre dois arrays.
Syntax
array_except(x, y)
Parameters
|
Parâmetro |
Descrição |
|
x |
Deve ser um array. |
|
y |
Deve ser um array. |
Return value type
array
Examples
Calcule a diferença entre os arrays [1,2,3,4,5] e [1,3,5,7].
-
Instrução de consulta
* | SELECT array_except(array[1,2,3,4,5],array[1,3,5,7]) A consulta retorna
[2,4].
Função array_intersect
Calcula a interseção de dois arrays.
Syntax
array_intersect(x, y)
Parameters
|
Parâmetro |
Descrição |
|
x |
Um array. |
|
y |
Um array. |
Return value type
array
Examples
Calcula a interseção dos arrays [1,2,3,4,5] e [1,3,5,7].
-
Instrução de consulta e análise
* | SELECT array_intersect(array[1,2,3,4,5],array[1,3,5,7]) O resultado da consulta e análise é
[1,3,5].
Função array_join
Concatena elementos de array em uma string usando um delimitador especificado.
Syntax
-
Concatena elementos de array em uma string usando um delimitador. Ignora elementos nulos.
array_join(x, delimiter) -
Concatena elementos de array em uma string usando um delimitador. Substitui elementos nulos por null_replacement.
array_join(x, delimiter,null_replacement)
Parameters
|
Parâmetro |
Descrição |
|
x |
Array de entrada. |
|
delimiter |
String usada para separar os elementos do array. |
|
null_replacement |
String usada para substituir elementos nulos. |
Return value type
varchar.
Examples
Este exemplo concatena os elementos do array [null, 'Log', 'Service'] em uma string usando espaço como delimitador. O elemento nulo é substituído por 'Alicloud'.
-
Consulta
* | SELECT array_join(array[null,'Log','Service'],' ','Alicloud') Resultados: O valor da coluna _col0 é
Alicloud Log Service.
Função array_max
Retorna o valor máximo em um array.
Syntax
array_max(x)
Parameters
|
Parâmetro |
Descrição |
|
x |
A entrada deve ser um array. Importante
Se o array contiver um elemento nulo, a função retorna null. |
Return value type
O valor retornado tem o mesmo tipo de dados dos elementos do array.
Examples
Este exemplo encontra o valor máximo em um array de números.
-
Campo de exemplo
number:[49,50,45,47,50] -
Instrução de consulta
*| SELECT array_max(try_cast(json_parse(number) as array(bigint))) AS max_number Resultados da consulta: O valor de max_number é 50.
Função array_min
Retorna o valor mínimo em um array.
Syntax
array_min(x)
Parameters
|
Parâmetro |
Descrição |
|
x |
Array de entrada. Importante
Se o array contiver um elemento nulo, a função retorna null. |
Return value type
O valor retornado tem o mesmo tipo de dados dos elementos do array.
Examples
Encontre o valor mínimo em um array de números.
-
Campo de exemplo
number:[49,50,45,47,50] -
Instrução de consulta
*| SELECT array_min(try_cast(json_parse(number) as array(bigint))) AS min_number A consulta retorna 45.
Função array_position
A função array_position retorna o índice base 1 de um elemento em um array. Retorna 0 se o elemento não for encontrado.
Syntax
array_position(x, element)
Parameters
|
Parâmetro |
Descrição |
|
x |
Array onde pesquisar. |
|
element |
Elemento a encontrar no array. Nota
Se o elemento a ser encontrado for nulo, a função retorna null. |
Return value type
Retorna um valor bigint.
Examples
Encontra o índice de 45 no array [49,45,47].
-
Instrução de consulta e análise
* | SELECT array_position(array[49,45,47],45) O resultado é
2, indicando que o elemento45está no índice2do array.
Função array_remove
A função array_remove remove todas as ocorrências de um elemento especificado de um array.
Syntax
array_remove(x, element)
Parameters
|
Parâmetro |
Descrição |
|
x |
Array de entrada. |
|
element |
Elemento a remover do array. Nota
Se o elemento for nulo, a função retorna null. |
Return value type
Retorna um array.
Examples
Remove 45 do array [49,45,47].
-
Instrução de consulta e análise
* | SELECT array_remove(array[49,45,47],45) O resultado é
[49,47].
Função array_sort
A função array_sort ordena os elementos de um array em ordem crescente e posiciona quaisquer elementos nulos ao final.
Syntax
array_sort(x)
Parameters
|
Parâmetro |
Descrição |
|
x |
Array a ordenar. |
Return value type
Retorna um array.
Examples
Ordene o array ['b', 'd', null, 'c', 'a'] em ordem crescente.
-
Instrução de consulta
* | SELECT array_sort(array['b','d',null,'c','a']) O resultado é
["a","b","c","d",null]. Os elementos são ordenados alfabeticamente em ordem crescente e o valor nulo é posicionado ao final.
Função array_transpose
A função array_transpose transpõe um array bidimensional (uma matriz). Ela cria um novo array bidimensional agrupando elementos que compartilham o mesmo índice nos arrays internos.
Syntax
array_transpose(x)
Parameters
|
Parâmetro |
Descrição |
|
x |
Entrada deve ser um array bidimensional do tipo |
Return value type
array(double)
Examples
A função agrupa elementos no mesmo índice em cada array interno para formar novos arrays internos. Por exemplo, a partir dos arrays [0,1,2,3], [10,19,18,17] e [9,8,7], a função pega os primeiros elementos (0, 10 e 9) e os agrupa no novo array interno [0.0,10.0,9.0].
-
Instrução de consulta e análise
* | SELECT array_transpose(array[array[0,1,2,3],array[10,19,18,17],array[9,8,7]]) Resultados da consulta e análise: O valor na coluna _col0 é
[[0.0,10.0,9.0],[1.0,19.0,8.0],[2.0,18.0,7.0],[3.0,17.0]].
Função array_union
Retorna um array com os elementos da união de dois arrays, sem duplicatas.
Syntax
array_union(x, y)
Parameters
|
Parâmetro |
Descrição |
|
x |
Deve ser um array. |
|
y |
Deve ser um array. |
Return value type
array
Examples
Este exemplo calcula a união dos arrays [1,2,3,4,5] e [1,3,5,7].
-
Instrução de consulta
* | SELECT array_union(array[1,2,3,4,5],array[1,3,5,7]) A consulta retorna
[1,2,3,4,5,7].
Função cardinality
Retorna o número de elementos em um array.
Syntax
cardinality(x)
Parameters
|
Parâmetro |
Descrição |
|
x |
Array de entrada. |
Return value type
Retorna um valor bigint.
Examples
Este exemplo conta o número de elementos no campo number.
-
Campo de exemplo
number:[49,50,45,47,50] -
Instrução de consulta
*| SELECT cardinality(cast(json_parse(number) as array(bigint))) A consulta retorna
5, pois o array contém 5 elementos.
Função concat
Concatena vários arrays em um único array.
Syntax
concat(x, y…)
Parameters
|
Parâmetro |
Descrição |
|
x |
Deve ser um array. |
|
y |
Deve ser um array. |
Return value type
array
Examples
Concatene os arrays ['red','blue'] e ['yellow','green'].
-
Instrução de consulta
* | SELECT concat(array['red','blue'],array['yellow','green']) A consulta retorna
["red","blue","yellow","green"].
Função contains
Verifica se um array contém um elemento especificado. Retorna true se encontrado.
Syntax
contains(x, element)
Parameters
|
Parâmetro |
Descrição |
|
x |
Array a verificar. |
|
element |
Elemento a pesquisar no array. |
Return value type
boolean
Examples
Verifica se o campo region contém 'cn-beijing'.
-
Campo de exemplo
region:["cn-hangzhou","cn-shanghai","cn-beijing"] -
Instrução de consulta
*| SELECT contains(cast(json_parse(region) as array(varchar)),'cn-beijing') A consulta retorna uma coluna chamada
_col0com o valortrue, indicando que o arrayregioncontémcn-beijing.
Função element_at
Retorna o elemento no índice y de um array.
Syntax
element_at(x, y)
Parameters
|
Parâmetro |
Descrição |
|
x |
Array do qual recuperar um elemento. |
|
y |
Índice base 1 do tipo bigint do elemento a recuperar do array. |
Return value type
O valor retornado tem o mesmo tipo de dados dos elementos no array.
Examples
Este exemplo recupera o segundo elemento de um array armazenado como string JSON no campo number.
-
Campo de exemplo
number:[49,50,45,47,50] -
Instrução de consulta e análise
* | SELECT element_at(cast(json_parse(number) AS array(varchar)), 2) A consulta retorna uma coluna chamada
_col0com o valor50.
Função filter
A função filter filtra um array com base em uma expressão lambda e retorna um novo array contendo apenas os elementos para os quais a expressão é avaliada como verdadeira.
Syntax
filter(x, lambda_expression)
Parameters
|
Parâmetro |
Descrição |
|
x |
Array de entrada. |
|
lambda_expression |
Expressão lambda. Para mais informações, consulte expressão lambda. |
Return value type
Retorna um array.
Examples
Retorna os elementos maiores que 0 do array [5,-6,null,7]. A expressão lambda é x -> x > 0.
-
Instrução de consulta
* | SELECT filter(array[5,-6,null,7],x -> x > 0) A consulta retorna
[5,7].
Função flatten
Achata um array bidimensional em um array unidimensional.
Syntax
flatten(x)
Parameters
|
Parâmetro |
Descrição |
|
x |
Array bidimensional a achatar. O valor deve ser um array. |
Return value type
Retorna um array unidimensional.
Examples
Este exemplo achata um array bidimensional em um array unidimensional.
-
Instrução de consulta
* | SELECT flatten(array[array[1,2,3,4],array[5,2,2,4]]) Resultados da consulta e análise: A coluna _col0 contém
[1,2,3,4,5,2,2,4].
Função reduce
A função reduce aplica uma expressão lambda a um array e agrega seus elementos em um único valor.
Syntax
reduce(array, initialState, inputFunction, outputFunction)
Parameters
|
Parâmetro |
Descrição |
|
array |
Array de entrada de elementos bigint. |
|
initialState, inputFunction, outputFunction |
Define a lógica de redução, incluindo estado inicial, função de entrada que processa cada elemento e função de saída que finaliza o resultado. Para mais informações, consulte expressão lambda. |
Return value type
bigint
Examples
Calcula a soma dos elementos no array [5, 20, 50].
-
Instrução de consulta
* | SELECT reduce(array[5, 20, 50], 0, (s, x) -> s + x, s -> s) Resultado da consulta:
75
Função reverse
Inverte a ordem dos elementos em um array.
Syntax
reverse(x)
Parameters
|
Parâmetro |
Descrição |
|
x |
Array a inverter. |
Return value type
Array com elementos em ordem inversa.
Examples
Inverte os elementos no array [1,2,3,4,5].
-
Instrução de consulta
* | SELECT reverse(array[1,2,3,4,5]) Resultados da consulta:
[5,4,3,2,1].
Função sequence
A função sequence retorna um array de valores consecutivos e incrementais dentro de um intervalo especificado.
Syntax
-
Usa incremento padrão de 1.
sequence(x, y) -
Usa incremento personalizado.
sequence(x, y, step)
Parameters
|
Parâmetro |
Descrição |
|
x |
Valor inicial da sequência. Tipos de dados suportados: bigint e timestamp. Para timestamp, use um timestamp UNIX ou expressão de data e hora. |
|
y |
Valor final da sequência. Tipos de dados suportados: bigint e timestamp. Para timestamp, use um timestamp UNIX ou expressão de data e hora. |
|
step |
Valor do incremento. Quando x e y são expressões de data e hora, o parâmetro step deve estar em um dos seguintes formatos:
|
Return value type
array
Examples
-
Retorne números pares de 0 a 10.
-
Instrução de consulta
* | SELECT sequence(0,10,2) A consulta retorna
[0,2,4,6,8,10].
-
-
Retorne as datas de 23 de outubro de 2017 a 12 de agosto de 2021, com intervalo de um ano.
-
Instrução de consulta
ww* | SELECT sequence(from_unixtime(1508737026),from_unixtime(1628734085),interval '1' year to month ) -
Resultado da 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"]
-
-
Retorne os timestamps UNIX entre 1628733298 e 1628734085 com intervalo de 60 segundos.
-
Instrução de consulta
* | SELECT sequence(1628733298,1628734085,60) No resultado, o campo
_col0contém o array de timestamps[1628733298,1628733358,1628733418,1628733478,1628733538,1628733598,1628733658,1628733718,1628733778,1628733838,1628733898,1628733958,1628734018,1628734078].
-
Função shuffle
Embaralha aleatoriamente os elementos de um array.
Syntax
shuffle(x)
Parameters
|
Parâmetro |
Descrição |
|
x |
Deve ser um array. |
Return value type
Retorna um array.
Examples
Este exemplo retorna uma permutação aleatória do array [1,2,3,4,5].
-
Instrução de consulta e análise
*| SELECT shuffle(array[1,2,3,4,5]) Resultados da consulta e análise: A consulta retorna uma única coluna,
_col0, contendo um array reordenado aleatoriamente. Exemplos de valores incluem[3,1,2,4,5],[5,1,2,4,3]e[2,5,3,1,4].
Função slice
Retorna um subconjunto de um array.
Syntax
slice(x, start, length)
Parameters
|
Parâmetro |
Descrição |
|
x |
Array de entrada. |
|
start |
Índice inicial base 1 do fatiamento.
|
|
length |
Número de elementos a incluir no subconjunto. |
Return value type
array
Examples
Este exemplo retorna um subconjunto de dois elementos do array [1,2,4,5,6,7,7], começando no terceiro elemento.
-
Instrução de consulta e análise
* | SELECT slice(array[1,2,4,5,6,7,7],3,2) Resultados da consulta e análise: A coluna _col0 contém
[4,5].
Função transform
A função transform aplica uma expressão lambda a cada elemento de um array.
Syntax
transform(x, lambda_expression)
Parameters
|
Parâmetro |
Descrição |
|
x |
Deve ser um array. |
|
lambda_expression |
Expressão lambda a aplicar. Para mais informações, consulte expressão lambda. |
Return value type
Array.
Examples
Este exemplo adiciona 1 a cada elemento no array [5,6].
-
Instrução de consulta e análise
* | SELECT transform(array[5,6],x -> x + 1) A consulta retorna
[6,7].
Função zip
A função zip mescla vários arrays em um array bidimensional. Ela agrupa elementos com o mesmo índice dos arrays de entrada para formar arrays aninhados.
Syntax
zip(x, y...)
Parameters
|
Parâmetro |
Descrição |
|
x |
Deve ser um array. |
|
y |
Deve ser um array. |
Return value type
Retorna um array bidimensional.
Examples
Este exemplo mescla os arrays [1,2,3], ['1b',null,'3b'] e [1,2,3] em um array bidimensional.
-
Instrução de consulta e análise
* | SELECT zip(array[1,2,3], array['1b',null,'3b'],array[1,2,3]) A coluna _col0 nos resultados da consulta e análise retorna
[[1,"1b",1],[2,null,2],[3,"3b",3]]. A função agrupa elementos dos arrays de entrada pelo índice compartilhado.
Função zip_with
A função zip_with mescla dois arrays aplicando uma expressão lambda aos elementos correspondentes.
Syntax
zip_with(x, y, lambda_expression)
Parameters
|
Parâmetro |
Descrição |
|
x |
Primeiro array de entrada. |
|
y |
Segundo array de entrada. |
|
lambda_expression |
Expressão lambda que especifica como combinar os elementos. Para mais informações, consulte expressão lambda. |
Return value type
array
Examples
Este exemplo usa a expressão lambda (x, y) -> x + y para somar os elementos correspondentes dos arrays [1,2] e [3,4]. A função retorna os resultados em um novo array.
-
Instrução de consulta e análise
SELECT zip_with(array[1,2], array[3,4],(x,y) -> x + y) Resultados da consulta e análise: O valor na coluna
_col0é[4,6].