Les arguments doivent être des constantes et avoir des types qui ont le plus petit type commun. Au moins un argument doit être passé, sinon il n’est pas clair quel type de tableau créer. Qui est, vous ne pouvez pas utiliser cette fonction pour créer un tableau vide (pour ce faire, utilisez la ‘emptyArray\*’ la fonction décrite ci-dessus).
Récupérer l’élément avec l’index `n` à partir du tableau `arr`. `n` doit être n’importe quel type entier.
Les index dans un tableau commencent à partir d’un.
Les index négatifs sont pris en charge. Dans ce cas, il sélectionne l’élément correspondant numérotées à partir de la fin. Exemple, `arr[-1]` est le dernier élément du tableau.
Si l’index est en dehors des limites d’un tableau, il renvoie une valeur (0 pour les nombres, une chaîne vide pour les cordes, etc.), sauf pour le cas avec un tableau non constant et un index constant 0 (dans ce cas, il y aura une erreur `Array indices are 1-based`).
Cette fonction est normalement utilisée avec ARRAY JOIN. Il permet de compter quelque chose une seule fois pour chaque tableau après l’application de la jointure de tableau. Exemple:
Dans cet exemple, Reaches est le nombre de conversions (les chaînes reçues après l’application de la jointure de tableau), et Hits est le nombre de pages vues (chaînes avant la jointure de tableau). Dans ce cas particulier, vous pouvez obtenir le même résultat dans une voie plus facile:
Cette fonction peut également être utilisée dans les fonctions d’ordre supérieur. Par exemple, vous pouvez l’utiliser pour obtenir les indices de tableau pour les éléments qui correspondent à une condition.
Dans cet exemple, chaque ID d’objectif a un calcul du nombre de conversions (chaque élément de la structure de données imbriquées objectifs est un objectif atteint, que nous appelons une conversion) et le nombre de sessions. Sans array JOIN, nous aurions compté le nombre de sessions comme sum(signe). Mais dans ce cas particulier, les lignes ont été multipliées par la structure des objectifs imbriqués, donc pour compter chaque session une fois après cela, nous appliquons une condition à la valeur de arrayEnumerateUniq(Goals.ID) fonction.
La fonction arrayEnumerateUniq peut prendre plusieurs tableaux de la même taille que les arguments. Dans ce cas, l’unicité est considérée pour les tuples d’éléments dans les mêmes positions dans tous les tableaux.
Ceci est nécessaire lors de L’utilisation de Array JOIN avec une structure de données imbriquée et une agrégation supplémentaire entre plusieurs éléments de cette structure.
-`single_value`– A single value. Only numbers can be added to an array with numbers, and only strings can be added to an array of strings. When adding numbers, ClickHouse automatically sets the `single_value` type pour le type de données du tableau. Pour plus d’informations sur les types de données dans ClickHouse, voir “[Types de données](../../sql-reference/data-types/index.md#data_types)”. Peut être `NULL`. La fonction ajoute un `NULL` tableau, et le type d’éléments de tableau convertit en `Nullable`.
-`single_value`– A single value. Only numbers can be added to an array with numbers, and only strings can be added to an array of strings. When adding numbers, ClickHouse automatically sets the `single_value` type pour le type de données du tableau. Pour plus d’informations sur les types de données dans ClickHouse, voir “[Types de données](../../sql-reference/data-types/index.md#data_types)”. Peut être `NULL`. La fonction ajoute un `NULL` tableau, et le type d’éléments de tableau convertit en `Nullable`.
- Si `size` est plus grande que la taille initiale du tableau, le tableau est étendu vers la droite avec `extender` valeurs ou valeurs par défaut pour le type de données des éléments du tableau.
-`extender` — Value for extending an array. Can be `NULL`.
-`offset`– Indent from the edge of the array. A positive value indicates an offset on the left, and a negative value is an indent on the right. Numbering of the array items begins with 1.
-`length` - La longueur de la nécessaire tranche. Si vous spécifiez une valeur négative, la fonction renvoie un ouvert tranche `[offset, array_length - length)`. Si vous omettez la valeur, la fonction renvoie la tranche `[offset, the_end_of_array]`.
**Exemple**
``` sql
SELECT arraySlice([1, 2, NULL, 4, 5], 2, 3) AS res
```
``` text
┌─res────────┐
│ [2,NULL,4] │
└────────────┘
```
Éléments de tableau définis sur `NULL` sont traités comme des valeurs normales.
Trie les éléments de la `arr` tableau dans l’ordre croissant. Si l’`func` fonction est spécifiée, l’ordre de tri est déterminé par le résultat de la `func` fonction appliquée aux éléments du tableau. Si `func` accepte plusieurs arguments, le `arraySort` la fonction est passé plusieurs tableaux que les arguments de `func` correspond à. Des exemples détaillés sont présentés à la fin de `arraySort` Description.
Notez que `arraySort` est un [fonction d’ordre supérieur](higher-order-functions.md). Vous pouvez passer d’une fonction lambda comme premier argument. Dans ce cas, l’ordre de classement est déterminé par le résultat de la fonction lambda appliquée aux éléments de la matrice.
For each element of the source array, the lambda function returns the sorting key, that is, \[1 –\> -1, 2 –\> -2, 3 –\> -3\]. Since the `arraySort` fonction trie les touches dans l’ordre croissant, le résultat est \[3, 2, 1\]. Ainsi, l’`(x) –> -x` fonction lambda définit le [l’ordre décroissant](#array_functions-reverse-sort) dans un tri.
La fonction lambda peut accepter plusieurs arguments. Dans ce cas, vous avez besoin de passer l’`arraySort` fonction plusieurs tableaux de longueur identique à laquelle correspondront les arguments de la fonction lambda. Le tableau résultant sera composé d’éléments du premier tableau d’entrée; les éléments du(des) Tableau (s) d’entrée suivant (s) spécifient les clés de tri. Exemple:
Ici, les éléments qui sont passés dans le deuxième tableau (\[2, 1\]) définissent une clé de tri pour l’élément correspondant à partir du tableau source (\[‘hello’, ‘world’\]), qui est, \[‘hello’–\> 2, ‘world’–\> 1\]. Since the lambda function doesn’t use `x`, les valeurs réelles du tableau source n’affectent pas l’ordre dans le résultat. Si, ‘hello’ sera le deuxième élément du résultat, et ‘world’ sera le premier.
Trie les éléments de la `arr` tableau dans l’ordre décroissant. Si l’`func` la fonction est spécifiée, `arr` est trié en fonction du résultat de la `func` fonction appliquée aux éléments du tableau, puis le tableau trié est inversé. Si `func` accepte plusieurs arguments, le `arrayReverseSort` la fonction est passé plusieurs tableaux que les arguments de `func` correspond à. Des exemples détaillés sont présentés à la fin de `arrayReverseSort` Description.
Notez que l’`arrayReverseSort` est un [fonction d’ordre supérieur](higher-order-functions.md). Vous pouvez passer d’une fonction lambda comme premier argument. Exemple est montré ci-dessous.
SELECT arrayReverseSort((x) -> -x, [1, 2, 3]) as res;
```
``` text
┌─res─────┐
│ [1,2,3] │
└─────────┘
```
Le tableau est trié de la façon suivante:
1. Dans un premier temps, le tableau source (\[1, 2, 3\]) est trié en fonction du résultat de la fonction lambda appliquée aux éléments du tableau. Le résultat est un tableau \[3, 2, 1\].
La fonction lambda peut accepter plusieurs arguments. Dans ce cas, vous avez besoin de passer l’`arrayReverseSort` fonction plusieurs tableaux de longueur identique à laquelle correspondront les arguments de la fonction lambda. Le tableau résultant sera composé d’éléments du premier tableau d’entrée; les éléments du(des) Tableau (s) d’entrée suivant (s) spécifient les clés de tri. Exemple:
SELECT arrayReverseSort((x, y) -> y, ['hello', 'world'], [2, 1]) as res;
```
``` text
┌─res───────────────┐
│ ['hello','world'] │
└───────────────────┘
```
Dans cet exemple, le tableau est trié de la façon suivante:
1. Au début, le tableau source (\[‘hello’, ‘world’\]) est triée selon le résultat de la fonction lambda appliquée aux éléments de tableaux. Les éléments qui sont passés dans le deuxième tableau (\[2, 1\]), définissent les clés de tri pour les éléments correspondants du tableau source. Le résultat est un tableau \[‘world’, ‘hello’\].
Calcule la différence entre les éléments de tableau adjacents. Renvoie un tableau où le premier élément sera 0, le second est la différence entre `a[1] - a[0]`, etc. The type of elements in the resulting array is determined by the type inference rules for subtraction (e.g.`UInt8` - `UInt8` = `Int16`).
Prend plusieurs tableaux, retourne un tableau avec des éléments présents dans tous les tableaux source. L’ordre des éléments dans le tableau résultant est le même que dans le premier tableau.
Applique une fonction d’agrégation aux éléments du tableau et renvoie son résultat. Le nom de la fonction d’agrégation est passé sous forme de chaîne entre guillemets simples `'max'`, `'sum'`. Lorsque vous utilisez des fonctions d’agrégat paramétriques, le paramètre est indiqué après le nom de la fonction entre parenthèses `'uniqUpTo(6)'`.
Applique une fonction d’agrégation d’éléments de tableau dans des plages et retourne un tableau contenant le résultat correspondant à chaque gamme. La fonction retourne le même résultat que plusieurs `arrayReduce(agg_func, arraySlice(arr1, index, length), ...)`.
-`agg_func` — The name of an aggregate function which should be a constant [chaîne](../../sql-reference/data-types/string.md).
-`ranges` — The ranges to aggretate which should be an [tableau](../../sql-reference/data-types/array.md) de [tuple](../../sql-reference/data-types/tuple.md) qui contient l’indice et la longueur de chaque plage.
-`arr` — Any number of [tableau](../../sql-reference/data-types/array.md) tapez les colonnes comme paramètres de la fonction d’agrégation.
Calculer AUC (zone sous la courbe, qui est un concept dans l’apprentissage automatique, voir plus de détails: https://en.wikipedia.org/wiki/Receiver\_operating\_characteristic\#Area\_under\_the\_curve).