Tous les produits
Search
Centre de documentation

Simple Log Service:Fonctions et opérateurs de tableau

Dernière mise à jour :Aug 18, 2026

Cette rubrique décrit la syntaxe de base et fournit des exemples d'utilisation des fonctions et opérateurs de tableau.

Log Service prend en charge les fonctions et opérateurs de tableau suivants.

Important

Si vous souhaitez utiliser des chaînes de caractères dans les instructions d'analyse, vous devez les entourer de guillemets simples (''). Les chaînes non entourées de guillemets ou placées entre guillemets doubles ("") désignent des noms de champ ou de colonne. Par exemple,

'status'

désigne la chaîne de caractères « status », tandis que

status

ou

"status"

fait référence au champ de journal « status ».

Nom de la fonction

Syntaxe

Description

SQL

SPL

opérateur d'indice

[x]

Renvoie l'élément situé à l'indice x d'un tableau. Cette opération équivaut à la fonction element_at.

×

fonction array_agg

array_agg(x)

Renvoie un tableau contenant toutes les valeurs de x.

×

fonction array_distinct

array_distinct(x)

Supprime les éléments en double d'un tableau.

fonction array_except

array_except(x, y)

Renvoie la différence entre deux tableaux.

fonction array_intersect

array_intersect(x, y)

Renvoie l'intersection de deux tableaux.

fonction array_join

array_join(x, delimiter)

Concatène les éléments d'un tableau en une chaîne de caractères à l'aide du délimiteur spécifié. Les éléments nuls sont ignorés.

Important

La fonction array_join renvoie un résultat dont la taille est limitée à 1 Ko. Les données dépassant cette limite sont tronquées.

array_join(x, delimiter, null_replacement)

Concatène les éléments d'un tableau en une chaîne de caractères à l'aide du délimiteur spécifié. Les éléments nuls sont remplacés par la valeur null_replacement.

Important

La fonction array_join renvoie un résultat dont la taille est limitée à 1 Ko. Les données dépassant cette limite sont tronquées.

fonction array_max

array_max(x)

Renvoie la valeur maximale contenue dans un tableau.

fonction array_min

array_min(x)

Renvoie la valeur minimale contenue dans un tableau.

fonction array_position

array_position(x, element)

Renvoie l'indice (base 1) d'un élément spécifié. Renvoie 0 si l'élément n'existe pas.

fonction array_remove

array_remove(x, element)

Supprime un élément spécifié d'un tableau.

fonction array_sort

array_sort(x)

Trie les éléments d'un tableau par ordre croissant. Les éléments nuls sont placés à la fin.

fonction array_transpose

array_transpose(x)

Transpose un tableau bidimensionnel (tableau de tableaux) en inversant ses lignes et ses colonnes.

×

fonction array_union

array_union(x, y)

Renvoie l'union de deux tableaux.

×

fonction cardinality

cardinality(x)

Renvoie le nombre d'éléments contenus dans un tableau.

fonction concat

concat(x, y…)

Concatène plusieurs tableaux en un seul.

×

fonction contains

contains(x, element)

Renvoie true si le tableau contient l'élément spécifié, et false dans le cas contraire.

×

fonction element_at

element_at(x, y)

Renvoie l'élément situé à l'indice y d'un tableau.

×

fonction filter

filter(x, lambda_expression)

Filtre un tableau à l'aide d'une expression lambda et ne conserve que les éléments satisfaisant cette expression.

fonction flatten

flatten(x)

Convertit un tableau bidimensionnel en un tableau unidimensionnel.

×

fonction reduce

reduce(x, lambda_expression)

Réduit un tableau à une seule valeur en appliquant une expression lambda à ses éléments.

fonction reverse

reverse(x)

Inverse l'ordre des éléments d'un tableau.

fonction sequence

sequence(x, y)

Renvoie un tableau de valeurs consécutives et croissantes dans une plage spécifiée. Le pas par défaut est 1.

sequence(x, y, step)

Renvoie un tableau de valeurs consécutives et croissantes dans une plage spécifiée, avec un pas personnalisé.

fonction shuffle

shuffle(x)

Mélange aléatoirement les éléments d'un tableau.

fonction slice

slice(x, start, length)

Renvoie un sous-ensemble d'un tableau.

fonction transform

transform(x, lambda_expression)

Transforme chaque élément d'un tableau à l'aide d'une expression lambda.

fonction zip

zip(x, y...)

Fusionne plusieurs tableaux en un seul tableau bidimensionnel. Les éléments situés au même indice dans les tableaux d'entrée forment un nouveau sous-tableau.

fonction zip_with

zip_with(x, y, lambda_expression)

Fusionne deux tableaux en un seul en appliquant une expression lambda à chaque paire d'éléments correspondants.

×

Opérateur d'indice

L'opérateur d'indice renvoie l'élément situé à l'indice x d'un tableau. Il équivaut à la fonction element_at.

Syntaxe

[x]

Paramètres

Paramètre

Description

x

L'indice (base 1) de l'élément à extraire du tableau. La valeur doit être de type bigint.

Type de valeur de retour

La valeur de retour possède le même type de données que les éléments du tableau.

Exemples

Cet exemple renvoie le premier élément du champ number.

  • Champ d'exemple

    number:[49,50,45,47,50]
  • Instruction de requête

    * | SELECT cast(json_parse(number) as array(bigint)) [1]
  • La requête renvoie 49.

Fonction array_agg

La fonction array_agg renvoie un tableau contenant toutes les valeurs de x.

Syntaxe

array_agg (x)

Paramètres

Paramètre

Description

x

Le paramètre peut être de n'importe quel type de données.

Type de valeur de retour

array

Exemples

Renvoie les valeurs du champ status sous forme de tableau.

  • Instruction de requête

    * | SELECT array_agg(status) AS array
  • Résultats de la requête : le champ array contient un tableau de codes de statut HTTP (tels que 200, 202, 204, 303, 304, 401, 402 et 501).

Fonction array_distinct

Supprime les éléments en double d'un tableau.

Syntaxe

array_distinct(x)

Paramètres

Paramètre

Description

x

Doit être un tableau.

Type de valeur de retour

array

Exemples

Supprime les éléments en double du champ number.

  • Champ d'exemple

    number:[49,50,45,47,50]
  • Instruction de requête

    *| SELECT array_distinct(cast(json_parse(number) as array(bigint)))
  • Le résultat de la requête est [49,50,45,47]. L'élément en double 50 a été supprimé du tableau d'origine.

Fonction array_except

La fonction array_except renvoie la différence entre deux tableaux.

Syntax

array_except(x, y)

Parameters

Parameter

Description

x

Doit être un tableau.

y

Doit être un tableau.

Return value type

array

Examples

Calculez la différence entre les tableaux [1,2,3,4,5] et [1,3,5,7].

  • Instruction de requête

    * | SELECT array_except(array[1,2,3,4,5],array[1,3,5,7])
  • La requête renvoie [2,4].

Fonction array_intersect

Calcule l'intersection de deux tableaux.

Syntax

array_intersect(x, y)

Parameters

Parameter

Description

x

Un tableau.

y

Un tableau.

Return value type

array

Examples

Calcule l'intersection des tableaux [1,2,3,4,5] et [1,3,5,7].

  • Instruction de requête et d'analyse

    * | SELECT array_intersect(array[1,2,3,4,5],array[1,3,5,7])
  • Le résultat de la requête et de l'analyse est [1,3,5].

Fonction array_join

Concatène les éléments d'un tableau en une chaîne à l'aide d'un délimiteur spécifié.

Syntax

  • Concatène les éléments d'un tableau en une chaîne à l'aide d'un délimiteur. Les éléments null sont ignorés.

    array_join(x, delimiter)
  • Concatène les éléments d'un tableau en une chaîne à l'aide d'un délimiteur. Elle remplace les éléments null par null_replacement.

    array_join(x, delimiter,null_replacement)

Parameters

Parameter

Description

x

Le tableau d'entrée.

delimiter

La chaîne utilisée pour séparer les éléments du tableau.

null_replacement

La chaîne utilisée pour remplacer les éléments null.

Return value type

varchar.

Examples

Cet exemple concatène les éléments du tableau [null, 'Log', 'Service'] en une chaîne en utilisant un espace comme délimiteur. Il remplace l'élément null par 'Alicloud'.

  • Requête

    * | SELECT array_join(array[null,'Log','Service'],' ','Alicloud')
  • Résultats : la valeur de la colonne _col0 est Alicloud Log Service.

Fonction Array_max

Renvoie la valeur maximale d'un tableau.

Syntax

array_max(x) 

Parameters

Parameter

Description

x

L'entrée doit être un tableau.

Important

Si le tableau contient un élément null, la fonction renvoie null.

Return value type

La valeur renvoyée possède le même type de données que les éléments du tableau.

Examples

Cet exemple recherche la valeur maximale dans un tableau de nombres.

  • Champ d'exemple

    number:[49,50,45,47,50]
  • Instruction de requête

    *| SELECT array_max(try_cast(json_parse(number) as array(bigint))) AS max_number
  • Résultats de la requête : la valeur max_number est 50.

Fonction Array_min

Renvoie la valeur minimale d'un tableau.

Syntax

array_min(x) 

Parameters

Parameter

Description

x

Le tableau d'entrée.

Important

Si le tableau contient un élément null, la fonction renvoie null.

Return value type

La valeur renvoyée possède le même type de données que les éléments du tableau.

Examples

Recherchez la valeur minimale dans un tableau de nombres.

  • Champ d'exemple

    number:[49,50,45,47,50]
  • Instruction de requête

    *| SELECT array_min(try_cast(json_parse(number) as array(bigint))) AS min_number
  • La requête renvoie 45.

Fonction Array_position

La fonction array_position renvoie l'index (à partir de 1) d'un élément dans un tableau. Elle renvoie 0 si l'élément n'est pas trouvé.

Syntax

array_position(x, element)

Parameters

Parameter

Description

x

Le tableau à rechercher.

element

L'élément à trouver dans le tableau.

Remarque

Si l'élément à trouver est null, la fonction renvoie null.

Return value type

Renvoie une valeur bigint.

Examples

Recherche l'index de 45 dans le tableau [49,45,47].

  • Instruction de requête et d'analyse

    * | SELECT array_position(array[49,45,47],45)
  • Le résultat est 2, ce qui indique que l'élément 45 se trouve à l'index 2 dans le tableau.

Fonction array_remove

La fonction array_remove supprime toutes les occurrences d'un élément spécifié d'un tableau.

Syntax

array_remove(x, element)

Parameters

Parameter

Description

x

Le tableau d'entrée.

element

L'élément à supprimer du tableau.

Remarque

Si l'élément est null, la fonction renvoie null.

Return value type

Renvoie un tableau.

Examples

Supprime 45 du tableau [49,45,47].

  • Instruction de requête et d'analyse

    * | SELECT array_remove(array[49,45,47],45)
  • Le résultat est [49,47].

Fonction array_sort

La fonction array_sort trie les éléments d'un tableau par ordre croissant, en plaçant les éléments null à la fin.

Syntax

array_sort(x)

Parameters

Parameter

Description

x

Le tableau à trier.

Return value type

Renvoie un tableau.

Examples

Triez le tableau ['b', 'd', null, 'c', 'a'] par ordre croissant.

  • Instruction de requête

    * | SELECT array_sort(array['b','d',null,'c','a'])
  • Le résultat est ["a","b","c","d",null]. Les éléments sont triés par ordre alphabétique croissant et la valeur null est placée à la fin.

Fonction array_transpose

La fonction array_transpose transpose un tableau bidimensionnel (une matrice). Elle crée un nouveau tableau bidimensionnel en regroupant les éléments partageant le même index dans les tableaux internes.

Syntax

array_transpose(x)

Parameters

Parameter

Description

x

L'entrée est un tableau bidimensionnel de type array(double).

Return value type

array(double)

Examples

La fonction regroupe les éléments situés au même index dans chaque tableau interne pour former de nouveaux tableaux internes. Par exemple, à partir des tableaux [0,1,2,3], [10,19,18,17] et [9,8,7], la fonction prend les premiers éléments (0, 10 et 9) et les regroupe dans le nouveau tableau interne [0.0,10.0,9.0].

  • Instruction de requête et d'analyse

    * | SELECT array_transpose(array[array[0,1,2,3],array[10,19,18,17],array[9,8,7]])
  • Résultats de la requête et de l'analyse : la valeur dans la colonne _col0 est [[0.0,10.0,9.0],[1.0,19.0,8.0],[2.0,18.0,7.0],[3.0,17.0]].

Fonction array_union

Renvoie un tableau contenant les éléments de l'union de deux tableaux, sans doublons.

Syntax

array_union(x, y)

Parameters

Parameter

Description

x

Doit être un tableau.

y

Doit être un tableau.

Return value type

array

Examples

Cet exemple calcule l'union des tableaux [1,2,3,4,5] et [1,3,5,7].

  • Instruction de requête

    * | SELECT array_union(array[1,2,3,4,5],array[1,3,5,7])
  • La requête renvoie [1,2,3,4,5,7].

Fonction Cardinality

Renvoie le nombre d'éléments dans un tableau.

Syntax

cardinality(x)

Parameters

Parameter

Description

x

Le tableau d'entrée.

Return value type

Renvoie une valeur bigint.

Examples

Cet exemple compte le nombre d'éléments dans le champ number.

  • Champ d'exemple

    number:[49,50,45,47,50]
  • Instruction de requête

    *| SELECT cardinality(cast(json_parse(number) as array(bigint)))
  • La requête renvoie 5, car le tableau contient 5 éléments.

Fonction concat

Concatène plusieurs tableaux en un seul tableau.

Syntax

concat(x, y…)

Parameters

Parameter

Description

x

Doit être un tableau.

y

Doit être un tableau.

Return value type

array

Examples

Concaténez les tableaux ['red','blue'] et ['yellow','green'].

  • Instruction de requête

    * | SELECT concat(array['red','blue'],array['yellow','green'])
  • La requête renvoie ["red","blue","yellow","green"].

Fonction contains

Vérifie si un tableau contient un élément spécifié. Renvoie true si l'élément est trouvé.

Syntax

contains(x, element)

Parameters

Parameter

Description

x

Le tableau à vérifier.

element

L'élément à rechercher dans le tableau.

Return value type

boolean

Examples

Vérifie si le champ region contient 'cn-beijing'.

  • Champ d'exemple

    region:["cn-hangzhou","cn-shanghai","cn-beijing"]
  • Instruction de requête

    *| SELECT contains(cast(json_parse(region) as array(varchar)),'cn-beijing')
  • La requête renvoie une colonne nommée _col0 avec la valeur true, ce qui indique que le tableau region contient cn-beijing.

Fonction element_at

Renvoie l'élément situé à l'index y d'un tableau.

Syntax

element_at(x, y)

Parameters

Parameter

Description

x

Le tableau dont il faut extraire un élément.

y

L'index (bigint) de l'élément à récupérer dans le tableau. La numérotation commence à 1.

Return value type

La valeur renvoyée est du même type de données que les éléments du tableau.

Examples

Cet exemple récupère le deuxième élément d'un tableau stocké sous forme de chaîne JSON dans le champ number.

  • Exemple de champ

    number:[49,50,45,47,50]
  • Instruction de requête et d'analyse

    * |
    SELECT
      element_at(cast(json_parse(number) AS array(varchar)), 2)
  • La requête renvoie une colonne nommée _col0 avec la valeur 50.

Fonction filter

La fonction filter filtre un tableau selon une expression lambda et renvoie un nouveau tableau contenant uniquement les éléments pour lesquels l'expression est vraie.

Syntax

filter(x, lambda_expression)

Parameters

Parameter

Description

x

Le tableau d'entrée.

lambda_expression

Une expression lambda. Pour plus d'informations, consultez la rubrique lambda expression.

Return value type

Renvoie un tableau.

Examples

Renvoie les éléments supérieurs à 0 du tableau [5,-6,null,7]. L'expression lambda utilisée est x -> x > 0.

  • Instruction de requête

    * | SELECT filter(array[5,-6,null,7],x -> x > 0)
  • La requête renvoie [5,7].

Fonction flatten

Aplatit un tableau bidimensionnel en un tableau unidimensionnel.

Syntax

flatten(x)

Parameters

Parameter

Description

x

Le tableau bidimensionnel à aplatir. La valeur doit être un tableau.

Return value type

Renvoie un tableau unidimensionnel.

Examples

Cet exemple aplatit un tableau bidimensionnel en un tableau unidimensionnel.

  • Instruction de requête

    * | SELECT flatten(array[array[1,2,3,4],array[5,2,2,4]])
  • Résultats de la requête et de l'analyse : la colonne _col0 contient [1,2,3,4,5,2,2,4].

Fonction reduce

La fonction reduce applique une expression lambda à un tableau afin d'agréger ses éléments en une seule valeur.

Syntax

reduce(array, initialState, inputFunction, outputFunction)

Parameters

Parameter

Description

array

Le tableau d'entrée composé d'éléments bigint.

initialState, inputFunction, outputFunction

Définit la logique de réduction, qui comprend un état initial, une fonction d'entrée traitant chaque élément et une fonction de sortie finalisant le résultat. Pour plus d'informations, consultez la rubrique lambda expression.

Return value type

bigint

Examples

Calcule la somme des éléments du tableau [5, 20, 50].

  • Instruction de requête

    * | SELECT reduce(array[5, 20, 50], 0, (s, x) -> s + x, s -> s)
  • Résultat de la requête : 75

Fonction reverse

Inverse l'ordre des éléments d'un tableau.

Syntax

reverse(x)

Parameters

Parameter

Description

x

Le tableau à inverser.

Return value type

Un tableau dont les éléments sont dans l'ordre inverse.

Examples

Inverse les éléments du tableau [1,2,3,4,5].

  • Instruction de requête

    * | SELECT reverse(array[1,2,3,4,5])
  • Résultats de la requête : [5,4,3,2,1].

Fonction sequence

La fonction sequence renvoie un tableau de valeurs consécutives et croissantes dans une plage spécifiée.

Syntax

  • Utilise un pas par défaut de 1.

    sequence(x, y)
  • Utilise un pas personnalisé.

    sequence(x, y, step)

Parameters

Parameter

Description

x

La valeur de début de la séquence. Les types de données pris en charge sont bigint et timestamp. Pour le type timestamp, vous pouvez utiliser un horodatage UNIX ou une expression de date et d'heure.

y

La valeur de fin de la séquence. Les types de données pris en charge sont bigint et timestamp. Pour le type timestamp, vous pouvez utiliser un horodatage UNIX ou une expression de date et d'heure.

step

La valeur du pas.

Lorsque x et y sont des expressions de date et d'heure, le paramètre step doit respecter l'un des formats suivants :

  • interval ' n' year to month : l'intervalle correspond à n années.

  • interval 'n' day to second : l'intervalle correspond à n jours.

Return value type

array

Examples

  • Renvoyer les nombres pairs de 0 à 10.

    • Instruction de requête

      * | SELECT sequence(0,10,2)
    • La requête renvoie [0,2,4,6,8,10].

  • Renvoyer les dates du 23 octobre 2017 au 12 août 2021, avec un intervalle d'un an.

    • Instruction de requête

      ww* | SELECT  sequence(from_unixtime(1508737026),from_unixtime(1628734085),interval '1' year to month )
    • Résultat de la requête

      ["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"]
  • Renvoyer les horodatages UNIX compris entre 1628733298 et 1628734085, avec un intervalle de 60 secondes.

    • Instruction de requête

      * | SELECT  sequence(1628733298,1628734085,60)
    • Dans le résultat, le champ _col0 contient le tableau d'horodatages [1628733298,1628733358,1628733418,1628733478,1628733538,1628733598,1628733658,1628733718,1628733778,1628733838,1628733898,1628733958,1628734018,1628734078].

Fonction shuffle

Mélange aléatoirement les éléments d'un tableau.

Syntax

shuffle(x)

Parameters

Parameter

Description

x

Doit être un tableau.

Return value type

Renvoie un tableau.

Examples

Cet exemple renvoie une permutation aléatoire du tableau [1,2,3,4,5].

  • Instruction de requête et d'analyse

    *| SELECT shuffle(array[1,2,3,4,5])
  • Résultats de la requête et de l'analyse : la requête renvoie une seule colonne, _col0, contenant un tableau réordonné aléatoirement. Voici quelques exemples de valeurs possibles : [3,1,2,4,5], [5,1,2,4,3] et [2,5,3,1,4].

Fonction slice

Renvoie un sous-ensemble d'un tableau.

Syntax

slice(x, start, length)

Parameters

Parameter

Description

x

Le tableau d'entrée.

start

L'index de départ de la tranche. La numérotation commence à 1.

  • Si start est négatif, l'index est compté à partir de la fin du tableau.

  • Si start est positif, l'index est compté à partir du début du tableau.

length

Le nombre d'éléments à inclure dans le sous-ensemble.

Return value type

array

Examples

Cet exemple renvoie un sous-ensemble de deux éléments du tableau [1,2,4,5,6,7,7], en commençant au troisième élément.

  • Instruction de requête et d'analyse

    * | SELECT slice(array[1,2,4,5,6,7,7],3,2)
  • Résultats de la requête et de l'analyse : la colonne _col0 contient [4,5].

Fonction transform

La fonction transform applique une expression lambda à chaque élément d'un tableau.

Syntax

transform(x, lambda_expression)

Parameters

Parameter

Description

x

Doit être un tableau.

lambda_expression

L'expression lambda à appliquer. Pour plus d'informations, consultez la rubrique lambda expression.

Return value type

Tableau.

Examples

Cet exemple ajoute 1 à chaque élément du tableau [5,6].

  • Instruction de requête et d'analyse

    * | SELECT transform(array[5,6],x -> x + 1)
  • La requête renvoie [6,7].

Fonction zip

La fonction zip fusionne plusieurs tableaux en un tableau bidimensionnel. Elle regroupe les éléments ayant le même index dans les tableaux d'entrée pour former des tableaux imbriqués.

Syntax

zip(x, y...) 

Parameters

Parameter

Description

x

Doit être un tableau.

y

Doit être un tableau.

Return value type

Renvoie un tableau bidimensionnel.

Examples

Cet exemple fusionne les tableaux [1,2,3], ['1b',null,'3b'] et [1,2,3] en un tableau bidimensionnel.

  • Instruction de requête et d'analyse

    * | SELECT zip(array[1,2,3], array['1b',null,'3b'],array[1,2,3])
  • La colonne _col0 des résultats de la requête et de l'analyse renvoie [[1,"1b",1],[2,null,2],[3,"3b",3]]. La fonction regroupe les éléments des tableaux d'entrée selon leur index commun.

Fonction zip_with

La fonction zip_with fusionne deux tableaux en appliquant une expression lambda à leurs éléments correspondants.

Syntax

zip_with(x, y, lambda_expression)

Parameters

Parameter

Description

x

Le premier tableau d'entrée.

y

Le deuxième tableau d'entrée.

lambda_expression

Une expression lambda spécifiant comment combiner les éléments. Pour plus d'informations, consultez la rubrique lambda expression.

Return value type

array

Examples

Cet exemple utilise l'expression lambda (x, y) -> x + y pour additionner les éléments correspondants des tableaux [1,2] et [3,4]. La fonction renvoie les résultats dans un nouveau tableau.

  • Instruction de requête et d'analyse

    SELECT zip_with(array[1,2], array[3,4],(x,y) -> x + y)
  • Résultats de la requête et de l'analyse : la valeur de la colonne _col0 est [4,6].