groupArrayInsertAt
Introduzido em: v1.1.0
Insere um valor no array na posição especificada.
Se, em uma consulta, vários valores forem inseridos na mesma posição, a função se comporta da seguinte forma:
- Se uma consulta for executada em uma única thread, será usado o primeiro dos valores inseridos.
- Se uma consulta for executada em múltiplas threads, o valor resultante será um dos valores inseridos, de maneira indeterminada.
Sintaxe
groupArrayInsertAt(default_x, size)([x, pos])Parâmetros
default_x— Opcional. Valor padrão para preencher posições vazias.Anysize— Opcional. Tamanho do array resultante. Ao usar este parâmetro, o valor padrãodefault_xdeve ser especificado.UInt32
Argumentos
x— Valor a ser inserido.Anypos— Posição em que o elemento especificadoxdeve ser inserido. A numeração dos índices no array começa em zero.UInt32
Valor retornado
Retorna um array com os valores inseridos. Array
Exemplos
Uso básico sem parâmetros
SELECT groupArrayInsertAt(toString(number), number * 2) FROM numbers(5);┌─groupArrayInsertAt(toString(number), multiply(number, 2))─┐
│ ['0','','1','','2','','3','','4'] │
└───────────────────────────────────────────────────────────┘Uso com o parâmetro de valor padrão
SELECT groupArrayInsertAt('-')(toString(number), number * 2) FROM numbers(5);┌─groupArrayInsertAt('-')(toString(number), multiply(number, 2))─┐
│ ['0','-','1','-','2','-','3','-','4'] │
└────────────────────────────────────────────────────────────────┘Uso com os parâmetros valor padrão e tamanho
SELECT groupArrayInsertAt('-', 5)(toString(number), number * 2) FROM numbers(5);┌─groupArrayInsertAt('-', 5)(toString(number), multiply(number, 2))─┐
│ ['0','-','1','-','2'] │
└───────────────────────────────────────────────────────────────────┘Inserção multithread na mesma posição
SELECT groupArrayInsertAt(number, 0) FROM numbers_mt(10) SETTINGS max_block_size = 1;┌─groupArrayInsertAt(number, 0)─┐
│ [0] │
└───────────────────────────────┘