groupArrayInsertAt
groupArrayInsertAt
지정된 위치에 값을 삽입한 배열을 만드는 집계 함수예요. 여러 값이 같은 위치에 삽입되면 동작 방식이 스레드 수에 따라 달라집니다.
출처: 문서
본문
도입 버전: v1.1.0
지정된 위치에 값을 배열에 삽입합니다.
한 쿼리에서 여러 값이 같은 위치에 삽입되면 이 함수는 다음과 같이 동작합니다:
- 쿼리가 단일 스레드로 실행되면, 삽입된 값 중 첫 번째 값이 사용됩니다.
- 쿼리가 여러 스레드로 실행되면, 결과 값은 삽입된 값들 중 하나로 결정되지 않습니다(불확정).
구문 (Syntax)
groupArrayInsertAt(default_x, size)([x, pos])
파라미터 (Parameters)
default_x— 선택 사항. 빈 위치를 채우기 위한 기본값.Anysize— 선택 사항. 결과 배열의 길이. 이 파라미터를 사용할 때는 기본값default_x를 반드시 지정해야 합니다.UInt32
인자 (Arguments)
반환 값
값이 삽입된 배열을 반환합니다. Array
예제
파라미터 없이 사용한 기본 예제
SELECT groupArrayInsertAt(toString(number), number * 2) FROM numbers(5);
┌─groupArrayInsertAt(toString(number), multiply(number, 2))─┐
│ ['0','','1','','2','','3','','4'] │
└───────────────────────────────────────────────────────────┘
기본값 파라미터와 함께 사용
SELECT groupArrayInsertAt('-')(toString(number), number * 2) FROM numbers(5);
┌─groupArrayInsertAt('-')(toString(number), multiply(number, 2))─┐
│ ['0','-','1','-','2','-','3','-','4'] │
└────────────────────────────────────────────────────────────────┘
기본값과 크기 파라미터와 함께 사용
SELECT groupArrayInsertAt('-', 5)(toString(number), number * 2) FROM numbers(5);
┌─groupArrayInsertAt('-', 5)(toString(number), multiply(number, 2))─┐
│ ['0','-','1','-','2'] │
└───────────────────────────────────────────────────────────────────┘
같은 위치에 대한 멀티스레드 삽입
SELECT groupArrayInsertAt(number, 0) FROM numbers_mt(10) SETTINGS max_block_size = 1;
┌─groupArrayInsertAt(number, 0)─┐
│ [0] │
└───────────────────────────────┘