groupArrayInsertAt

groupArrayInsertAt

지정된 위치에 값을 삽입한 배열을 만드는 집계 함수예요. 여러 값이 같은 위치에 삽입되면 동작 방식이 스레드 수에 따라 달라집니다.

출처: 문서

본문

도입 버전: v1.1.0

지정된 위치에 값을 배열에 삽입합니다.

한 쿼리에서 여러 값이 같은 위치에 삽입되면 이 함수는 다음과 같이 동작합니다:

  • 쿼리가 단일 스레드로 실행되면, 삽입된 값 중 첫 번째 값이 사용됩니다.
  • 쿼리가 여러 스레드로 실행되면, 결과 값은 삽입된 값들 중 하나로 결정되지 않습니다(불확정).

구문 (Syntax)

groupArrayInsertAt(default_x, size)([x, pos])

파라미터 (Parameters)

  • default_x — 선택 사항. 빈 위치를 채우기 위한 기본값. Any
  • size — 선택 사항. 결과 배열의 길이. 이 파라미터를 사용할 때는 기본값 default_x를 반드시 지정해야 합니다. UInt32

인자 (Arguments)

  • x — 삽입할 값. Any
  • pos — 지정된 요소 x가 삽입될 위치. 배열의 인덱스 번호는 0부터 시작합니다. UInt32

반환 값

값이 삽입된 배열을 반환합니다. 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]                           │
└───────────────────────────────┘

더 알아보기 (Learn more)