Passer au contenu principal

groupArrayInsertAt

Introduit dans : v1.1.0 Insère une valeur dans le tableau à la position spécifiée. Si, dans une même requête, plusieurs valeurs sont insérées à la même position, la fonction se comporte de la manière suivante :
  • Si une requête est exécutée dans un seul thread, la première des valeurs insérées est utilisée.
  • Si une requête est exécutée sur plusieurs threads, la valeur obtenue est l’une des valeurs insérées, de manière indéterminée.
Syntaxe
groupArrayInsertAt(default_x, size)([x, pos])
Paramètres
  • default_x — Facultatif. Valeur par défaut utilisée pour remplacer les emplacements vides. Any
  • size — Facultatif. Longueur du tableau résultant. Lors de l’utilisation de ce paramètre, la valeur par défaut default_x doit être spécifiée. UInt32
Arguments
  • x — Valeur à insérer. Any
  • pos — Position à laquelle l’élément spécifié x doit être inséré. Les indices du tableau commencent à zéro. UInt32
Valeur renvoyée Renvoie un tableau contenant les valeurs insérées. Array Exemples Utilisation de base sans paramètres
Query
SELECT groupArrayInsertAt(toString(number), number * 2) FROM numbers(5);
Response
┌─groupArrayInsertAt(toString(number), multiply(number, 2))─┐
│ ['0','','1','','2','','3','','4']                         │
└───────────────────────────────────────────────────────────┘
Utilisation du paramètre de valeur par défaut
Query
SELECT groupArrayInsertAt('-')(toString(number), number * 2) FROM numbers(5);
Response
┌─groupArrayInsertAt('-')(toString(number), multiply(number, 2))─┐
│ ['0','-','1','-','2','-','3','-','4']                          │
└────────────────────────────────────────────────────────────────┘
Utilisation avec des paramètres de taille et de valeur par défaut
Query
SELECT groupArrayInsertAt('-', 5)(toString(number), number * 2) FROM numbers(5);
Response
┌─groupArrayInsertAt('-', 5)(toString(number), multiply(number, 2))─┐
│ ['0','-','1','-','2']                                             │
└───────────────────────────────────────────────────────────────────┘
Insertion multithreadée à la même position
Query
SELECT groupArrayInsertAt(number, 0) FROM numbers_mt(10) SETTINGS max_block_size = 1;
Response
┌─groupArrayInsertAt(number, 0)─┐
│ [7]                           │
└───────────────────────────────┘
Dernière modification le 25 juin 2026