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.
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 |
|
[x] |
Renvoie l'élément situé à l'indice x d'un tableau. Cette opération équivaut à la fonction |
√ |
× |
|
|
array_agg(x) |
Renvoie un tableau contenant toutes les valeurs de x. |
√ |
× |
|
|
array_distinct(x) |
Supprime les éléments en double d'un tableau. |
√ |
√ |
|
|
array_except(x, y) |
Renvoie la différence entre deux tableaux. |
√ |
√ |
|
|
array_intersect(x, y) |
Renvoie l'intersection de deux tableaux. |
√ |
√ |
|
|
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. |
√ |
√ |
|
|
array_max(x) |
Renvoie la valeur maximale contenue dans un tableau. |
√ |
√ |
|
|
array_min(x) |
Renvoie la valeur minimale contenue dans un tableau. |
√ |
√ |
|
|
array_position(x, element) |
Renvoie l'indice (base 1) d'un élément spécifié. Renvoie 0 si l'élément n'existe pas. |
√ |
√ |
|
|
array_remove(x, element) |
Supprime un élément spécifié d'un tableau. |
√ |
√ |
|
|
array_sort(x) |
Trie les éléments d'un tableau par ordre croissant. Les éléments nuls sont placés à la fin. |
√ |
√ |
|
|
array_transpose(x) |
Transpose un tableau bidimensionnel (tableau de tableaux) en inversant ses lignes et ses colonnes. |
√ |
× |
|
|
array_union(x, y) |
Renvoie l'union de deux tableaux. |
√ |
× |
|
|
cardinality(x) |
Renvoie le nombre d'éléments contenus dans un tableau. |
√ |
√ |
|
|
concat(x, y…) |
Concatène plusieurs tableaux en un seul. |
√ |
× |
|
|
contains(x, element) |
Renvoie |
√ |
× |
|
|
element_at(x, y) |
Renvoie l'élément situé à l'indice y d'un tableau. |
√ |
× |
|
|
filter(x, lambda_expression) |
Filtre un tableau à l'aide d'une expression lambda et ne conserve que les éléments satisfaisant cette expression. |
√ |
√ |
|
|
flatten(x) |
Convertit un tableau bidimensionnel en un tableau unidimensionnel. |
√ |
× |
|
|
reduce(x, lambda_expression) |
Réduit un tableau à une seule valeur en appliquant une expression lambda à ses éléments. |
√ |
√ |
|
|
reverse(x) |
Inverse l'ordre des éléments d'un tableau. |
√ |
√ |
|
|
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é. |
√ |
√ |
|
|
shuffle(x) |
Mélange aléatoirement les éléments d'un tableau. |
√ |
√ |
|
|
slice(x, start, length) |
Renvoie un sous-ensemble d'un tableau. |
√ |
√ |
|
|
transform(x, lambda_expression) |
Transforme chaque élément d'un tableau à l'aide d'une expression lambda. |
√ |
√ |
|
|
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. |
√ |
√ |
|
|
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 |
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ément45se trouve à l'index2dans 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 |
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
_col0avec la valeurtrue, ce qui indique que le tableauregioncontientcn-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
_col0avec la valeur50.
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 :
|
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
_col0contient 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.
|
|
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
_col0est[4,6].