배열 함수
array
도입: v1.1
함수 인수를 사용해 배열을 생성합니다.
인수는 상수여야 하며, 공통 상위 타입을 공유해야 합니다.
어떤 타입의 배열을 생성할지 알 수 있도록 최소 하나의 인수를 전달해야 합니다.
따라서 이 함수를 사용해 빈 배열을 생성할 수 없습니다. 빈 배열을 생성하려면 emptyArray* 함수를 사용하십시오.
동일한 기능을 사용하려면 [ ] 연산자를 사용할 수 있습니다.
구문
인수
x1— 임의의 타입 T의 상수 값입니다. 이 인수만 제공되면 배열의 타입은 T가 됩니다. -[, x2, ..., xN]—x1과 공통 상위 타입을 공유하는 추가 상수 값 N개입니다.
반환 값
전달된 인수들의 가장 작은 공통 타입 T를 요소 타입으로 갖는 배열을 반환합니다. Array(T)
예시
올바른 사용 예
잘못된 사용법
arrayAUCPR
도입 버전: v20.4
precision-recall(PR) 곡선 아래의 면적을 계산합니다. precision-recall 곡선은 모든 임계값에서 y축에 precision, x축에 recall을 표시하여 그립니다. 결과 값은 0에서 1 사이이며, 값이 클수록 더 나은 모델 성능을 의미합니다. PR AUC는 불균형 데이터셋에서 특히 유용하며, 이러한 경우 ROC AUC와 비교했을 때 성능을 더 명확하게 비교할 수 있습니다. 자세한 내용은 여기, 여기, 여기를 참고하십시오.
구문
별칭(Aliases): arrayPRAUC
인수(Arguments)
cores— 예측 모델이 제공하는 점수입니다.Array((U)Int*)또는Array(Float*)labels— 샘플의 레이블입니다. 일반적으로 양성 샘플은 1, 음성 샘플은 0입니다.Array((U)Int*)또는Array(Enum)partial_offsets—- 선택 사항입니다. 전체 AUC 대신 PR 곡선 아래의 일부 영역(PR 공간의 수직 밴드에 해당)을 계산하기 위한, 세 개의 음이 아닌 정수로 구성된
Array(T)입니다. 이 옵션은 PR AUC를 분산 방식으로 계산할 때 유용합니다. 배열에는 다음 요소들이 포함되어야 합니다. [higher_partitions_tp,higher_partitions_fp,total_positives].higher_partitions_tp: 더 높은 점수를 가진 파티션에서의 양성 레이블 개수입니다.higher_partitions_fp: 더 높은 점수를 가진 파티션에서의 음성 레이블 개수입니다.total_positives: 전체 데이터셋에서의 양성 샘플 총 개수입니다.
arr_partial_offsets를 사용하는 경우 arr_scores와 arr_labels는 전체 데이터셋 중 점수 구간 하나에 해당하는 부분만을 포함하는 파티션이어야 합니다.
데이터셋은 인접한 파티션들로 나누어져야 하며, 각 파티션은 점수가 특정 구간에 속하는 데이터의 부분집합을 포함해야 합니다.
예를 들면 다음과 같습니다.
- 하나의 파티션은 [0, 0.5) 구간의 모든 점수를 포함할 수 있습니다.
- 다른 파티션은 [0.5, 1.0] 구간의 점수를 포함할 수 있습니다.
반환 값
정밀도-재현율(PR) 곡선 아래의 면적을 반환합니다. Float64
예시
사용 예시
arrayAll
도입된 버전: v1.1
람다 func(x [, y1, y2, ... yN])가 모든 요소에 대해 true를 반환하면 1을 반환합니다. 그렇지 않으면 0을 반환합니다.
구문
인수
func(x[, y1, ..., yN])— 소스 배열(x)과 조건 배열(y)의 요소에 적용되는 람다 함수입니다.Lambda functionsource_arr— 처리할 소스 배열입니다.Array(T)cond1_arr, ...— 선택 사항입니다. 람다 함수에 추가 인수를 제공하는 N개의 조건 배열입니다.Array(T)
반환 값
람다 함수가 모든 요소에 대해 true를 반환하면 1, 그렇지 않으면 0을 반환합니다. UInt8
예제
모든 요소가 일치하는 경우
모든 요소가 일치하는 것은 아닙니다
arrayAvg
도입 버전: v21.1
소스 배열 요소들의 평균을 반환합니다.
람다 FUNCTION func를 지정하면, 해당 람다 결과 요소들의 평균을 반환합니다.
구문
인수
func(x[, y1, ..., yN])— 선택 사항입니다. 소스 배열(x)과 조건 배열들(y)의 요소에 적용되는 람다 함수입니다.Lambda functionsource_arr— 처리할 소스 배열입니다.Array(T)[, cond1_arr, ... , condN_arr]— 선택 사항입니다. 람다 함수에 추가 인수를 제공하는 N개의 조건 배열입니다.Array(T)
반환 값
소스 배열 요소의 평균 또는 람다 함수를 사용하는 경우 람다 결과 요소의 평균을 반환합니다. Float64
예제
기본 예제
lambda 함수와 함께 사용하는 방법
arrayCompact
도입된 버전: v20.1
null 값을 포함하여 배열에서 연속된 중복 요소를 제거합니다. 결과 배열의 값 순서는 원본 배열에서의 순서를 유지합니다.
구문
인수
arr— 중복을 제거할 배열입니다.Array(T)
반환 값
중복된 값이 제거된 배열을 반환합니다. Array(T)
예시
사용 예시
arrayConcat
도입 버전: v1.1
인수로 전달된 배열을 결합합니다.
구문
인자
arr1 [, arr2, ... , arrN]— 연결할 N개의 배열.Array(T)
반환값
제공된 배열 인자들을 하나로 결합한 단일 배열을 반환합니다. Array(T)
예제
사용 예제
arrayCount
도입 버전: v1.1
func(arr1[i], ..., arrN[i])가 true를 반환하는 요소의 개수를 반환합니다.
func가 지정되지 않으면 배열에서 0이 아닌 요소의 개수를 반환합니다.
arrayCount는 고차 함수입니다.
구문
인자
func— 선택적입니다. 배열의 각 요소에 적용할 함수입니다.Lambda functionarr1, ..., arrN— N개의 배열입니다.Array(T)
반환 값
func이 true를 반환하는 요소의 개수를 반환합니다. func을(를) 지정하지 않으면 배열에서 0이 아닌 요소의 개수를 반환합니다. UInt32
예시
사용 예시
arrayCumSum
도입된 버전: v1.1
소스 배열의 각 요소에 대한 부분 합(누적 합)을 앞에서부터 계산한 결과를 배열로 반환합니다. lambda FUNCTION이 지정되면, 각 위치의 배열 요소에 이 lambda를 적용한 결과를 사용하여 합을 계산합니다.
구문
인수
func— 선택 사항입니다. 각 위치의 배열 요소에 적용할 람다 함수입니다.Lambda functionarr1— 숫자 값으로 이루어진 원본 배열입니다.Array(T)[arr2, ..., arrN]— 선택 사항입니다. 지정된 경우 람다 함수의 인수로 전달되는, 동일한 크기의 추가 배열입니다.Array(T)
반환 값
원본 배열 각 요소의 부분합으로 이루어진 배열을 반환합니다. 결과 타입은 입력 배열의 숫자 타입과 일치합니다. Array(T)
예제
기본 사용법
람다와 함께
arrayCumSumNonNegative
도입된 버전: v18.12
소스 배열의 요소들에 대한 부분합(누적합)으로 구성된 배열을 반환하며, 누적합이 음수가 되는 경우에는 0으로 대체합니다. 람다 FUNCTION이 지정된 경우, 각 위치의 배열 요소에 람다를 적용한 결과를 사용하여 합을 계산합니다.
구문
인수
func— 선택 사항입니다. 각 위치에 있는 배열 요소에 적용할 람다 함수입니다.Lambda functionarr1— 숫자 값을 담고 있는 원본 배열입니다.Array(T)[arr2, ..., arrN]— 선택 사항입니다. 지정된 경우, 람다 함수의 인수로 전달되는 동일한 크기의 추가 배열입니다.Array(T)
반환 값
원본 배열의 요소에 대한 부분합으로 구성된 배열을 반환하며, 누적합이 음수가 되는 경우 해당 값은 0으로 대체됩니다. 결과 타입은 입력 배열의 숫자 타입과 동일합니다. Array(T)
예시
기본 사용법
람다 사용 시
arrayDifference
도입된 버전: v1.1
배열에서 인접한 요소들 사이의 차이를 계산합니다.
결과 배열의 첫 번째 요소는 0이고, 두 번째는 arr[1] - arr[0], 세 번째는 arr[2] - arr[1]와 같이 계산됩니다.
결과 배열의 요소 타입은 뺄셈 연산에 대한 타입 추론 규칙에 따라 결정됩니다(예: UInt8 - UInt8 = Int16).
구문
인수
arr— 인접한 요소 간의 차이를 계산할 배열입니다.Array(T)
반환값
인접한 배열 요소 간의 차이로 이루어진 배열을 반환합니다. UInt*
예시
사용 예시
결과 타입이 Int64일 때 발생하는 오버플로우 예시
arrayDistinct
도입 버전: v1.1
배열에서 서로 다른 요소만을 포함하는 배열을 반환합니다.
구문
인수
arr— 서로 다른 요소를 추출할 배열입니다.Array(T)
반환 값
서로 다른 요소만 포함하는 배열을 반환합니다. Array(T)
예시
사용 예시
arrayDotProduct
도입 버전: v23.5
두 배열의 내적(dot product)을 반환합니다.
두 벡터의 크기는 같아야 합니다. Array와 Tuple에는 서로 다른 타입의 요소가 함께 포함될 수도 있습니다.
구문
인수
v1— 첫 번째 벡터.Array((U)Int* | Float* | Decimal)또는Tuple((U)Int* | Float* | Decimal)v2— 두 번째 벡터.Array((U)Int* | Float* | Decimal)또는Tuple((U)Int* | Float* | Decimal)
반환값
두 벡터의 내적(dot product)입니다.
반환 타입은 인수의 타입에 따라 결정됩니다. Array 또는 Tuple에 서로 다른 타입의 요소가 섞여 있는 경우 결과 타입은 상위 타입(supertype)이 됩니다.
예제
Array 예제
튜플 예제
arrayElement
도입 버전: v1.1
n이 임의의 정수 타입일 수 있을 때, 주어진 배열에서 인덱스 n에 해당하는 요소를 가져옵니다. 인덱스가 배열의 범위를 벗어나면 기본값(숫자의 경우 0, 문자열의 경우 빈 문자열 등)을 반환합니다. 단, 상수가 아닌 배열 인자와 상수 인덱스 0이 함께 사용되는 경우는 예외이며, 이때는 Array indices are 1-based 오류가 발생합니다.
ClickHouse의 배열은 1부터 시작하는 인덱스를 사용합니다.
음수 인덱스도 지원합니다. 이 경우 배열의 끝에서부터 센 인덱스를 사용하여 해당 요소를 선택합니다. 예를 들어 arr[-1]은 배열의 마지막 요소입니다.
연산자 [n]은 동일한 기능을 제공합니다.
구문
매개변수
반환 값
제공된 배열 매개변수로부터 하나로 결합된 단일 배열을 반환합니다. Array(T)
예시
사용 예시
음수 인덱스
[n] 표기법 사용
배열 범위를 벗어난 인덱스
arrayElementOrNull
도입 버전: v1.1
n이 어떤 정수형 타입이든 될 수 있는 인덱스일 때, 지정된 배열에서 인덱스 n에 있는 요소를 가져옵니다.
인덱스가 배열의 범위를 벗어나는 경우에는 기본값 대신 NULL을 반환합니다.
ClickHouse에서 배열 인덱스는 1부터 시작합니다.
음수 인덱스도 지원합니다. 이 경우 끝에서부터 번호를 매겨 해당 요소를 선택합니다. 예를 들어, arr[-1]은 배열의 마지막 요소입니다.
구문
인자
arrays— 임의 개수의 배열 인자입니다.Array
반환 값
제공된 배열 인자들을 하나로 결합한 단일 배열을 반환합니다. Array(T)
예시
사용 예시
음수 인덱스
배열 범위를 벗어난 인덱스
arrayEnumerate
도입 버전: v1.1
배열 [1, 2, 3, ..., length (arr)]을 반환합니다.
이 함수는 일반적으로 ARRAY JOIN 절과 함께 사용됩니다. ARRAY JOIN을 적용한 후 각 배열마다 한 번만 어떤 값을 계산할 수 있도록 해 줍니다.
이 함수는 고차 함수에서도 사용할 수 있습니다. 예를 들어, 조건을 만족하는 요소의 배열 인덱스를 구하는 데 사용할 수 있습니다.
구문
매개변수
arr— 열거할 배열입니다.Array
반환 값
배열 [1, 2, 3, ..., length (arr)]를 반환합니다. Array(UInt32)
예제
ARRAY JOIN을 사용한 기본 예제
arrayEnumerateDense
도입 버전: v18.12
원본 배열과 동일한 크기의 배열을 반환하며, 각 요소가 원본 배열에서 처음 나타나는 위치를 표시합니다.
구문
인수
arr— 열거할 배열입니다.Array(T)
반환 값
원본 배열 Array(T)에서 각 요소가 처음 등장하는 위치를 나타내는, arr와 동일한 크기의 배열을 반환합니다.
예제
사용 예제
arrayEnumerateDenseRanked
도입된 버전: v20.1
원본 배열과 동일한 크기의 배열을 반환하며, 각 요소가 원본 배열에서 처음 나타나는 위치를 표시합니다. 배열 내부를 얼마나 깊이 탐색할지 지정할 수 있어, 다차원 배열을 열거할 수 있습니다.
구문
인수
clear_depth— 지정한 수준의 요소를 개별적으로 번호를 매깁니다.max_arr_depth이하이어야 합니다.UInt*arr— 열거할 N차원 배열입니다.Array(T)max_array_depth— 유효한 최대 깊이입니다.arr의 깊이 이하여야 합니다.UInt*
반환 값
원본 배열에서 각 요소가 처음 나타나는 위치를 나타내는 배열을 반환합니다. Array
예시
기본 사용 방법
다차원 배열과 함께 사용하기
clear_depth를 증가시킨 예시
arrayEnumerateUniq
도입된 버전: v1.1
원본 배열과 동일한 크기의 배열을 반환하며, 각 요소에 대해 동일한 값을 가진 요소들 중에서 해당 요소의 위치를 나타냅니다.
이 함수는 ARRAY JOIN 및 배열 요소 집계를 사용할 때 유용합니다.
이 함수는 동일한 크기의 여러 배열을 인수로 받을 수 있습니다. 이 경우, 모든 배열에서 같은 위치에 있는 요소들로 이루어진 튜플을 기준으로 고유성이 판단됩니다.
구문
인자
arr1— 처리할 첫 번째 배열입니다.Array(T)arr2, ...— 선택 사항입니다. 튜플의 고유성을 위해 동일한 크기의 추가 배열입니다.Array(UInt32)
반환 값
각 요소가 동일한 값 또는 튜플을 가진 요소들 중에서의 위치(순번)를 나타내는 배열을 반환합니다. Array(T)
예시
기본 사용법
여러 개의 배열
ARRAY JOIN을 이용한 집계
arrayEnumerateUniqRanked
도입된 버전: v20.1
원본 배열과 동일한 차원의 배열(또는 다차원 배열)을 반환하며, 각 요소에 대해 동일한 값을 가진 요소들 사이에서 해당 요소의 위치(순서)를 나타냅니다. 배열 내부를 얼마나 깊이까지 탐색할지 지정하여 다차원 배열을 열거할 수 있도록 합니다.
구문
인자
clear_depth— 지정된 레벨의 요소를 별도로 구분하여 나열합니다.max_arr_depth이하의 양의 정수입니다.UInt*arr— 나열할 N차원 배열입니다.Array(T)max_array_depth— 최대 유효 깊이입니다.arr의 깊이 이하의 양의 정수입니다.UInt*
반환 값
arr와 동일한 크기의 N차원 배열을 반환하며, 각 요소는 동일한 값을 가진 요소들 사이에서 해당 요소의 위치를 나타냅니다. Array(T)
예시
예시 1
예제 2
예제 3
예제 4
arrayExcept
도입된 버전: v25.9
source에는 존재하지만 except에는 존재하지 않는 요소만을 포함하는 배열을 반환하며, 원래 순서를 유지합니다.
이 함수는 두 배열 간의 차집합 연산을 수행합니다. source의 각 요소에 대해, 해당 요소가 except에 존재하는지(정확한 비교 사용) 확인합니다. 존재하지 않으면 그 요소를 결과에 포함합니다.
이 연산에는 다음과 같은 특성이 있습니다:
source의 요소 순서는 유지됩니다.except에 존재하지 않는 경우source의 중복 요소는 그대로 유지됩니다.- NULL은 별도의 값으로 처리됩니다.
구문
인수
반환 값
입력 배열과 동일한 타입의 배열을 반환하며, source 중 except 에서 찾을 수 없는 요소만 포함합니다. Array(T)
예시
기본
with_nulls1
with_nulls2
문자열
arrayExists
도입 버전: v1.1
소스 배열에서 func(x[, y1, y2, ... yN])이 true 값을 반환하는 요소가 하나 이상 있으면 1을 반환합니다. 그렇지 않으면 0을 반환합니다.
구문
인수
func(x[, y1, ..., yN])— 원본 배열(x)과 조건 배열(y)의 요소에 대해 동작하는 Lambda 함수입니다.Lambda functionsource_arr— 처리할 원본 배열입니다.Array(T)[, cond1_arr, ... , condN_arr]— 선택 사항. Lambda 함수에 추가 인수로 제공되는 N개의 조건 배열입니다.Array(T)
반환 값
Lambda 함수가 하나 이상의 요소에 대해 true를 반환하면 1, 그렇지 않으면 0을 반환합니다. UInt8
예시
사용 예시
arrayFill
도입 버전: v20.1
arrayFill 함수는 소스 배열을 첫 번째 요소부터 마지막 요소까지 순차적으로 처리하면서,
소스 배열과 조건 배열의 요소를 사용해 각 위치에서 람다 조건식을 평가합니다.
람다 함수가 i번째 위치에서 false로 평가되면, 현재 배열 상태에서
i-1번째 위치의 요소로 해당 요소를 대체합니다. 첫 번째 요소는 어떤 조건과 관계없이 항상 유지됩니다.
문법
인수
func(x [, y1, ..., yN])— 소스 배열(x)과 조건 배열(y)의 요소를 대상으로 동작하는 람다 함수func(x [, y1, y2, ... yN]) → F(x [, y1, y2, ... yN]).Lambda functionsource_arr— 처리할 소스 배열.Lambda function[, cond1_arr, ... , condN_arr]— 선택 사항. 람다 함수에 추가 인수를 제공하는 N개의 조건 배열.Array(T)
반환값
배열 Array(T)를 반환합니다.
예시
단일 배열 예제
배열 두 개를 사용하는 예제
arrayFilter
도입 버전: v1.1
람다 함수가 true를 반환하는 원본 배열의 요소만을 포함하는 배열을 반환합니다.
구문
인수
func(x[, y1, ..., yN])— 원본 배열(x)과 조건 배열(y)의 요소를 대상으로 동작하는 lambda 함수입니다.Lambda functionsource_arr— 처리할 원본 배열입니다.Array(T)[, cond1_arr, ... , condN_arr]— 선택 사항입니다. lambda 함수에 전달할 추가 인수를 제공하는 N개의 조건 배열입니다.Array(T)
반환 값
원본 배열의 부분집합을 반환합니다. Array(T)
예시
예시 1
예시 2
arrayFirst
도입 버전: v1.1
func(x[, y1, y2, ... yN])이 참을 반환하는 소스 배열의 첫 번째 요소를 반환하며, 그런 요소가 없으면 기본값을 반환합니다.
문법
인수
func(x[, y1, ..., yN])— 소스 배열(x)과 조건 배열(y)의 요소에 적용되는 람다 함수입니다. Lambda function. -source_arr— 처리할 소스 배열입니다.Array(T). -[, cond1_arr, ... , condN_arr]— 선택 사항입니다. 람다 함수에 전달되는 추가 인수를 제공하는 N개의 조건 배열입니다.Array(T).
반환 값
λ가 참이 되는 소스 배열의 첫 번째 요소를 반환하며, 그러한 요소가 없으면 T의 기본값을 반환합니다.
예시
사용 예시
일치하는 항목 없음
arrayFirstIndex
도입 버전: v1.1
func(x[, y1, y2, ... yN])가 true를 반환하는 소스 배열의 첫 번째 요소의 인덱스를 반환하며, 해당하는 요소가 없으면 0을 반환합니다.
구문
인수
func(x[, y1, ..., yN])— 소스 배열(x)과 조건 배열(y)의 요소에 적용되는 람다 함수입니다. Lambda function. -source_arr— 처리할 소스 배열입니다.Array(T). -[, cond1_arr, ... , condN_arr]— 선택 사항. 람다 함수에 추가 인수를 제공하는 N개의 조건 배열입니다.Array(T).
반환값
func가 참이 되는 소스 배열의 첫 번째 요소의 인덱스를 반환하며, 그런 요소가 없으면 0을 반환합니다. UInt32
예시
사용 예시
일치하는 항목 없음
arrayFirstOrNull
도입 버전: v1.1
func(x[, y1, y2, ... yN])에 대해 true를 반환하는 첫 번째 요소를 소스 배열에서 반환하며, 그런 요소가 없으면 NULL을 반환합니다.
구문
인수
func(x[, y1, ..., yN])— 소스 배열(x)과 조건 배열(y)의 요소에 대해 동작하는 람다 함수입니다.Lambda functionsource_arr— 처리할 소스 배열입니다.Array(T)[, cond1_arr, ... , condN_arr]— 선택 사항입니다. 람다 함수에 추가 인수를 제공하는 N개의 조건 배열입니다.Array(T)
반환 값
func가 true인 소스 배열의 첫 번째 요소를 반환하며, 그런 요소가 없으면 NULL을 반환합니다.
예시
사용 예시
일치 항목 없음
arrayFlatten
도입 버전: v20.1
중첩 배열을 평탄화(flat)된 배열로 변환합니다.
기능:
- 중첩 배열의 깊이에 관계없이 적용됩니다.
- 이미 평탄화된 배열은 변경하지 않습니다.
평탄화된 배열에는 모든 원본 배열의 모든 요소가 포함됩니다.
구문
별칭: flatten
인수
arr— 다차원 배열입니다.Array(Array(T))
반환 값
다차원 배열을 평탄화한 배열을 반환합니다. Array(T)
예시
사용 예시
arrayFold
도입 버전: v23.10
크기가 같은 하나 이상의 배열에 람다 함수(lambda function)를 적용하고, 결과를 누산기(accumulator)에 누적합니다.
구문
인수
λ(x, x1 [, x2, x3, ... xN])— 람다 함수λ(acc, x1 [, x2, x3, ... xN]) → F(acc, x1 [, x2, x3, ... xN]). 이때F는acc와x의 배열 값에 적용되는 연산이며, 연산 결과로 얻은acc값이 반복해서 사용됩니다.Lambda functionarr1 [, arr2, arr3, ... arrN]— 연산을 수행할 N개의 배열입니다.Array(T)acc— Lambda 함수의 반환 타입과 동일한 타입의 누산기(accumulator) 값입니다.
반환 값
최종 acc 값을 반환합니다.
예시
사용 예시
피보나치 수열
여러 배열을 사용하는 예
arrayIntersect
도입 버전: v1.1
여러 배열을 입력으로 받아 모든 원본 배열에 공통으로 존재하는 요소들로 이루어진 배열을 반환합니다. 결과에는 중복되지 않는 값만 포함됩니다.
구문
인수
arrN— 새 배열을 생성할 때 사용하는 N개의 배열입니다.Array(T).
반환 값
N개의 모든 배열에 공통적으로 존재하는 서로 다른 요소로 구성된 배열을 반환합니다. Array(T)
예시
사용 예시
arrayJaccardIndex
도입: v23.7
두 배열의 자카드 인덱스(Jaccard index)를 반환합니다.
구문
인수
반환 값
arr_x와 arr_y의 Jaccard 지수를 반환합니다. Float64
예시
사용 예시
arrayJoin
도입 버전: v1.1
arrayJoin 함수는 배열을 포함하는 행을 받아 이를 펼쳐서, 배열의 각 요소마다 하나씩 여러 행을 생성합니다.
이는 ClickHouse의 일반 함수(Regular Functions)가 동일한 행 안에서 입력 값을 출력 값으로 매핑하는 것과,
집계 함수(Aggregate Functions)가 여러 행의 그룹을 받아 하나의 요약 행(또는 GROUP BY와 함께 사용되는 경우 요약 행 안의 단일 값)으로 "압축" 또는 "축소"하는 것과 대조됩니다.
이 함수가 적용된 컬럼을 제외한 나머지 컬럼의 값은 모두 그대로 복사됩니다. 함수가 적용되는 컬럼의 값만 해당하는 배열 값으로 대체됩니다.
구문
인수
arr— 전개할 배열입니다.Array(T)
반환 값
arr에서 전개된 행 집합을 반환합니다.
예시
기본 사용법
arrayJoin은 쿼리의 모든 부분에 영향을 미칩니다
여러 arrayJoin 함수 사용하기
최적화로 인해 발생하는 예기치 않은 결과
ARRAY JOIN 구문 사용
Tuple 사용하기
arrayLast
도입 버전: v1.1
람다 func(x [, y1, y2, ... yN])의 결과가 true인 소스 배열의 마지막 요소를 반환하며, 그러한 요소가 없으면 기본값을 반환합니다.
구문
인수
func(x[, y1, ..., yN])— 소스 배열(x)과 조건 배열(y)의 요소에 적용되는 람다 함수입니다. Lambda function. -source— 처리할 소스 배열입니다.Array(T). -[, cond1, ... , condN]— 선택 사항입니다. 람다 함수에 전달할 추가 인자를 제공하는 N개의 조건 배열입니다.Array(T).
반환 값
func이 true인 소스 배열 요소 중 마지막 요소를 반환하며, 그러한 요소가 없으면 T 타입의 기본값을 반환합니다.
예시
사용 예시
일치하는 항목 없음
arrayLastIndex
도입: v1.1
func(x[, y1, y2, ... yN])이 true를 반환하는 소스 배열에서 마지막 요소의 인덱스를 반환하며, 그렇지 않으면 '0'을 반환합니다.
구문
인수
func(x[, y1, ..., yN])— 소스 배열(x)의 요소와 조건 배열(y) 요소에 적용되는 lambda 함수입니다.Lambda functionsource_arr— 처리할 소스 배열입니다.Array(T)[, cond1_arr, ... , condN_arr]— 선택 사항입니다. lambda 함수에 추가 인수로 전달되는 N개의 조건 배열입니다.Array(T)
반환 값
func이 참이 되는 소스 배열의 마지막 요소의 인덱스를 반환하며, 그런 요소가 없으면 0을 반환합니다. UInt32
예시
사용 예시
일치하는 항목 없음
arrayLastOrNull
도입: v1.1
람다 func(x [, y1, y2, ... yN])가 true를 반환하는 원본 배열의 마지막 요소를 반환하며, 그런 요소가 없으면 NULL을 반환합니다.
문법
인자
func(x [, y1, ..., yN])— 소스 배열(x)과 조건 배열(y)의 요소에 대해 동작하는 람다 함수입니다. Lambda function. -source_arr— 처리할 소스 배열입니다.Array(T). -[, cond1_arr, ... , condN_arr]— 선택 사항입니다. 람다 함수에 추가 인자를 제공하는 N개의 조건 배열입니다.Array(T).
반환 값
λ가 참이 아닌 소스 배열의 마지막 요소를 반환하고, 그렇지 않으면 NULL을 반환합니다.
예시
사용 예시
일치하는 항목 없음
arrayLevenshteinDistance
도입 버전: v25.4
두 배열 간 Levenshtein 거리를 계산합니다.
구문
인수
반환 값
첫 번째 배열과 두 번째 배열 사이의 Levenshtein 거리입니다. Float64
예시
사용 예시
arrayLevenshteinDistanceWeighted
도입 버전: v25.4
각 요소에 대해 사용자 지정 가중치를 사용하여 두 배열 사이의 Levenshtein 거리(Levenshtein distance)를 계산합니다. 배열의 요소 수와 해당 가중치의 수는 일치해야 합니다.
구문
인수
from— 첫 번째 배열입니다.Array(T). -to— 두 번째 배열입니다.Array(T). -from_weights— 첫 번째 배열의 가중치입니다.Array((U)Int*|Float*)to_weights— 두 번째 배열의 가중치입니다.Array((U)Int*|Float*)
반환 값
각 요소에 대한 사용자 지정 가중치를 사용하여 첫 번째 배열과 두 번째 배열 사이의 Levenshtein 거리를 반환합니다. Float64
예시
사용 예시
arrayMap
도입 버전: v1.1
람다 함수를 각 요소에 적용하여 원본 배열에서 생성된 배열을 반환합니다.
구문
인자
func— 소스 배열(x)과 조건 배열(y)의 요소를 대상으로 동작하는 람다 함수입니다.Lambda functionarr— 처리할 N개의 배열입니다.Array(T)
반환 값
람다 함수의 결과로 구성된 배열을 반환합니다. Array(T)
예시
사용 예시
서로 다른 배열의 요소로 튜플 생성하기
arrayMax
도입된 버전: v21.1
원본 배열에서 최댓값 요소를 반환합니다.
람다 함수 func가 지정된 경우, 람다 결과 중 최댓값 요소를 반환합니다.
구문
인자
func(x[, y1, ..., yN])— 선택 사항입니다. 소스 배열(x) 및 조건 배열(y)의 요소를 대상으로 동작하는 람다 함수입니다.Lambda functionsource_arr— 처리할 소스 배열입니다.Array(T)[, cond1_arr, ... , condN_arr]— 선택 사항입니다. 람다 함수에 추가 인자를 제공하는 N개의 조건 배열입니다.Array(T)
반환 값
소스 배열에서 최대 요소를 반환하거나, 람다 함수가 지정된 경우 람다 결과의 최대 요소를 반환합니다.
예시
기본 예시
람다 함수와 함께 사용하는 방법
arrayMin
도입 버전: v21.1
원본 배열의 최소 요소를 반환합니다.
람다 함수 func가 지정되면, 람다 결과 중 최소 요소를 반환합니다.
구문
인수(Arguments)
func(x[, y1, ..., yN])— 선택 사항입니다. 소스 배열(x)과 조건 배열들(y)의 요소에 대해 동작하는 람다 함수입니다.Lambda functionsource_arr— 처리할 소스 배열입니다.Array(T)cond1_arr, ...— 선택 사항입니다. 람다 함수에 추가 인수를 제공하는 N개의 조건 배열입니다.Array(T)
반환 값
소스 배열에서 최소 요소를 반환하거나, 람다 함수가 지정된 경우 람다 결과에서 최소 요소를 반환합니다.
예제
기본 예제
람다 함수와 함께 사용하기
arrayNormalizedGini
도입된 버전: v25.1
정규화된 지니 계수(Gini coefficient)를 계산합니다.
구문
인수(Arguments)
반환 값(Returned value)
예측값의 Gini 계수, 정규화된 값의 Gini 계수, 그리고 정규화된 Gini 계수(= 앞의 두 Gini 계수의 비율)로 구성된 튜플입니다. Tuple(Float64, Float64, Float64)
예시(Examples)
사용 예시(Usage example)
arrayPartialReverseSort
도입 버전: v23.2
이 FUNCTION은 arrayReverseSort와 동일하지만, 정렬을 부분적으로 수행할 수 있도록 추가 인자 limit을 받습니다.
정렬된 원소만 유지하려면 arrayResize를 사용하십시오.
구문
인수
f(arr[, arr1, ... ,arrN])— 배열x의 요소에 적용할 람다 함수입니다.Lambda functionarr— 정렬할 배열입니다.Array(T)arr1, ... ,arrN—f가 여러 인수를 받는 경우의 추가 배열 N개입니다.Array(T)limit— 정렬이 수행되는 상한을 나타내는 인덱스 값입니다.(U)Int*
반환 값
원본 배열과 크기가 동일한 배열을 반환하며, 구간 [1..limit] 내의 요소는 내림차순으로 정렬되고 나머지 요소 (limit..N]의 순서는 정의되지 않습니다.
예시
simple_int
simple_string
retain_sorted
lambda_simple
lambda_complex
arrayPartialShuffle
도입 버전: v23.2
원본 배열과 동일한 크기의 배열을 반환하며, 구간 [1..limit] 내의 요소들은 원본 배열에서 무작위로 선택된 부분 집합입니다.
나머지 (limit..n] 구간에는 [1..limit] 구간에 포함되지 않은 요소들이 정의되지 않은 순서로 포함됩니다.
limit 값은 [1..n] 범위 내에 있어야 합니다. 이 범위를 벗어나는 값은 전체 arrayShuffle를 수행하는 것과 동일하게 처리됩니다:
이 함수는 상수를 materialize(실체화)하지 않습니다.
limit 값은 [1..N] 범위 내에 있어야 합니다. 이 범위를 벗어나는 값은 전체 arrayShuffle를 수행하는 것과 동일합니다.
구문
인수(Arguments)
arr— 셔플할 배열입니다.Array(T)seed— 선택 사항입니다. 난수 생성에 사용할 시드입니다. 제공되지 않으면 임의의 값이 사용됩니다.(U)Int*limit— 선택 사항입니다. 요소 교환 횟수를[1..N]범위 내에서 제한하는 값입니다.(U)Int*
반환 값
요소가 부분적으로 셔플된 배열입니다. Array(T)
예시
no_limit1
no_limit2
random_seed
explicit_seed
materialize
arrayPartialSort
도입 버전: v23.2
이 함수는 arraySort와 동일하지만, 추가 limit 인자를 통해 배열을 부분적으로 정렬할 수 있습니다.
정렬된 요소만 유지하려면 arrayResize를 사용하십시오.
구문
인수
f(arr[, arr1, ... ,arrN])— 배열x의 요소에 적용할 람다 함수입니다.Lambda functionarr— 정렬할 배열입니다.Array(T)arr1, ... ,arrN—f가 여러 인수를 받는 경우의 추가 배열 N개입니다.Array(T)limit— 정렬이 수행되는 인덱스의 상한값입니다.(U)Int*
반환 값
원본 배열과 동일한 크기의 배열을 반환하며, 구간 [1..limit]의 요소는 오름차순으로 정렬됩니다.
나머지 요소 (limit..N]의 순서는 정해져 있지 않습니다.
예시
simple_int
simple_string
retain_sorted
lambda_simple
lambda_complex
arrayPopBack
도입: v1.1
배열에서 마지막 요소를 제거합니다.
구문
인수
arr— 마지막 요소를 제거할 대상 배열입니다.Array(T)
반환 값
arr와 동일하지만 arr의 마지막 요소가 제거된 배열을 반환합니다. Array(T)
예시
사용 예시
arrayPopFront
도입 버전: v1.1
배열에서 첫 번째 요소를 제거합니다.
구문
인자
arr— 첫 번째 요소를 제거할 배열입니다.Array(T)
반환 값
arr와 동일하지만 arr의 첫 번째 요소가 제거된 배열을 반환합니다. Array(T)
예시
사용 예시
arrayProduct
도입 버전: v21.1
원본 배열의 요소들을 모두 곱한 값을 반환합니다.
람다 함수 func를 지정하면, 람다 함수 결과 요소들의 곱을 반환합니다.
구문
인수
func(x[, y1, ..., yN])— 선택 사항입니다. 소스 배열(x)과 조건 배열(y)의 요소에 대해 동작하는 lambda 함수입니다.Lambda functionsource_arr— 처리할 소스 배열입니다.Array(T)[, cond1_arr, ... , condN_arr]— 선택 사항입니다. lambda 함수에 전달할 추가 인수를 제공하는 N개의 조건 배열입니다.Array(T)
반환 값
소스 배열 요소들의 곱을 반환하거나, lambda 함수가 제공된 경우 lambda 결과 요소들의 곱을 반환합니다. Float64
예제
기본 예제
lambda 함수와 함께 사용하기
arrayPushBack
도입 버전: v1.1
배열 끝에 요소 하나를 추가합니다.
구문
인자
- 숫자로 이루어진 배열에는 숫자만, 문자열 배열에는 문자열만 추가할 수 있습니다.
- 숫자를 추가할 때 ClickHouse는 배열의 데이터 타입에 맞게
x의 타입을 자동으로 설정합니다. NULL일 수 있습니다. 이 함수는 배열에NULL요소를 추가하며, 배열 요소의 타입은 널 허용(Nullable)으로 변환됩니다.
ClickHouse의 데이터 타입에 대한 자세한 내용은 데이터 타입을 참조하십시오.
반환 값
arr와 동일하지만 배열의 끝에 값 x가 하나 더 추가된 배열을 반환합니다. Array(T)
예시
사용 예시
arrayPushFront
도입 버전: v1.1
배열의 맨 앞에 요소 하나를 추가합니다.
구문
인수
- 숫자 배열에는 숫자만, 문자열 배열에는 문자열만 추가할 수 있습니다.
- 숫자를 추가할 때 ClickHouse는 배열의 데이터 타입에 맞게
x의 타입을 자동으로 설정합니다. NULL일 수 있습니다. 이 함수는 배열에NULL요소를 추가하며, 배열 요소의 타입은 널 허용(Nullable)으로 변환됩니다.
ClickHouse의 데이터 타입에 대한 자세한 내용은 Data types를 참조하십시오.
반환 값
arr와 동일하지만 배열의 시작 부분에 값 x가 하나 더 추가된 배열 Array(T)을 반환합니다.
예시
사용 예시
arrayROCAUC
도입 버전: v20.4
수신자 조작 특성 곡선(ROC, Receiver Operating Characteristic) 아래 면적(AUC, Area Under the Curve)을 계산합니다. ROC 곡선은 모든 임곗값에 대해 참양성률(TPR, True Positive Rate)을 y축에, 거짓양성률(FPR, False Positive Rate)을 x축에 나타내어 생성합니다. 결과값은 0에서 1 사이의 범위를 가지며, 값이 클수록 모델 성능이 더 우수함을 의미합니다.
ROC AUC(일반적으로 AUC라고도 함)는 머신러닝에서 사용되는 개념입니다. 자세한 내용은 여기, 여기, 그리고 여기를 참조하십시오.
구문
별칭: arrayAUC
인수
scores— 예측 모델이 산출한 점수입니다.Array((U)Int*)또는Array(Float*)labels— 샘플의 레이블입니다. 일반적으로 양성 샘플은 1, 음성 샘플은 0입니다.Array((U)Int*)또는Enumscale— 선택 사항입니다. 정규화된 면적을 반환할지 여부를 결정합니다. false이면, 대신 TP (true positives)와 FP (false positives)를 축으로 하는 곡선 아래의 면적을 반환합니다. 기본값: true.Boolpartial_offsets—- 전체 AUC 대신 ROC 곡선 아래의 부분 면적(ROC 공간에서 수직 구간에 해당)을 계산하기 위한, 음이 아닌 정수 네 개로 이루어진 배열입니다. 이 옵션은 ROC AUC의 분산 계산에 유용합니다. 배열은 다음 요소들을 포함해야 합니다: [
higher_partitions_tp,higher_partitions_fp,total_positives,total_negatives]. 음이 아닌 Integers의 Array입니다. 선택 사항입니다.higher_partitions_tp: 더 높은 점수를 가진 파티션에서의 양성 레이블 개수입니다.higher_partitions_fp: 더 높은 점수를 가진 파티션에서의 음성 레이블 개수입니다.total_positives: 전체 데이터셋에서 양성 샘플의 총 개수입니다.total_negatives: 전체 데이터셋에서 음성 샘플의 총 개수입니다.
arr_partial_offsets를 사용할 때 arr_scores와 arr_labels에는 전체 데이터셋 중 점수 구간 하나에 해당하는 파티션만 포함되어야 합니다.
데이터셋은 인접한 파티션으로 나누어야 하며, 각 파티션에는 특정 점수 범위에 속하는 데이터 부분집합이 포함되어야 합니다.
예를 들면 다음과 같습니다.
- 하나의 파티션에는 [0, 0.5) 구간의 모든 점수가 포함될 수 있습니다.
- 다른 파티션에는 [0.5, 1.0] 구간의 점수가 포함될 수 있습니다.
반환 값
수신기 조작 특성(receiver operating characteristic, ROC) 곡선 아래의 면적을 반환합니다. Float64
예시
사용 예시
arrayRandomSample
도입 버전: v23.10
입력 배열에서 samples 개수만큼 무작위 요소를 포함하는 부분집합을 반환합니다. samples 값이 입력 배열의 크기를 초과하는 경우 샘플 크기는 배열의 크기로 제한됩니다. 이때 모든 배열 요소가 반환되지만, 순서는 보장되지 않습니다. 이 함수는 플랫(flat) 배열과 중첩 배열 모두를 처리할 수 있습니다.
구문
인수
반환값
입력 배열에서 무작위로 선택한 요소들로 구성된 배열입니다. Array(T)
예시
사용 예시
다차원 배열 활용하기
arrayReduce
도입 버전: v1.1
배열 요소에 집계 함수(aggregate function)를 적용하고 그 결과를 반환합니다.
집계 함수 이름은 작은따옴표로 둘러싼 문자열로 전달됩니다(예: 'max', 'sum').
매개변수형(파라메트릭) 집계 함수를 사용할 때는 함수 이름 뒤에 괄호 안에 매개변수를 지정합니다(예: 'uniqUpTo(6)').
구문
인수
agg_f— 상수여야 하는 집계 함수 이름입니다.Stringarr1 [, arr2, ... , arrN)]—agg_f의 인수에 해당하는 N개의 배열입니다.Array(T)
반환값
집계 함수의 결과를 반환합니다.
예시
사용 예시
여러 인수를 사용하는 집계 함수의 예
매개변수화 집계 함수 예시
arrayReduceInRanges
도입 버전: v20.4
지정된 범위의 배열 요소에 집계 함수(aggregate function)를 적용하고, 각 범위에 해당하는 결과를 담은 배열을 반환합니다.
이 함수는 arrayReduce(agg_func, arraySlice(arr1, index, length), ...)를 여러 번 호출한 것과 동일한 결과를 반환합니다.
구문
인수
agg_f— 사용할 집계 함수의 이름입니다.Stringranges— 집계를 수행할 구간입니다.(i, r)튜플의 배열로, 집계를 시작할 인덱스i와 집계를 수행할 구간r을 포함합니다.Array(T)또는Tuple(T)arr1 [, arr2, ... ,arrN)]— 집계 함수의 인수로 전달되는 N개의 배열입니다.Array(T)
반환 값
지정된 범위에 대해 집계 함수를 적용한 결과를 포함하는 배열을 반환합니다. Array(T)
예시
사용 예시
arrayRemove
도입 버전: v25.11
배열에서 지정한 값과 같은 모든 요소를 제거합니다. NULL 값은 서로 동일한 값으로 간주됩니다.
구문
별칭(Aliases): array_remove
인수(Arguments)
arr— Array(T),elem— T
반환 값(Returned value)
원본 배열 Array(T)의 부분 배열을 반환합니다.
예제(Examples)
예제 1
예제 2
arrayResize
도입된 버전: v1.1
배열의 길이를 변경합니다.
문법
인수
arr— 크기를 조정할 배열.Array(T)size—- 배열의 새로운 길이입니다.
size가 배열의 원래 길이보다 작으면 배열은 오른쪽부터 잘립니다.size가 배열의 원래 길이보다 크면 배열은 오른쪽으로extender값 또는 배열 요소 데이터 타입의 기본값으로 확장됩니다.
- 배열의 새로운 길이입니다.
extender— 배열을 확장할 때 사용할 값입니다.NULL일 수 있습니다.
반환 값
길이가 size인 배열입니다. Array(T)
예시
예시 1
예시 2
arrayReverse
도입: v1.1
주어진 배열의 요소 순서를 역순으로 변경합니다.
함수 reverse(arr)는 동일한 기능을 수행하지만, 배열 이외의 다른 데이터 타입에서도 동작합니다.
구문
인수
arr— 역순으로 뒤집을 배열입니다.Array(T)
반환 값
원본 배열과 동일한 크기이며 요소가 역순으로 배치된 배열을 반환합니다. Array(T)
예시
사용 예시
arrayReverseFill
도입 버전: v20.1
arrayReverseFill FUNCTION은 소스 배열을 마지막 요소에서 첫 번째 요소까지 순차적으로 처리하면서, 소스 배열과 조건 배열의 요소를 사용해 각 위치에서 lambda 조건을 평가합니다. 인덱스 i 위치에서 조건이 false로 평가되면, 함수는 해당 요소를 현재 배열 상태에서 인덱스 i+1 위치의 요소로 대체합니다. 마지막 요소는 어떤 조건과 관계없이 항상 유지됩니다.
문법
인수
func(x[, y1, ..., yN])— 소스 배열(x)과 조건 배열(y)의 요소를 대상으로 동작하는 람다 함수입니다.Lambda functionsource_arr— 처리할 소스 배열입니다.Array(T)[, cond1_arr, ... , condN_arr]— 선택 사항. 람다 함수에 전달할 추가 인수를 제공하는 N개의 조건 배열입니다.Array(T)
반환 값
람다 함수의 결과로 소스 배열의 요소가 대체된 배열을 반환합니다. Array(T)
예시
단일 배열 예제
두 개의 배열을 사용하는 예시
arrayReverseSort
도입된 버전: v1.1
배열의 요소를 내림차순으로 정렬합니다.
함수 f가 지정되면, 입력 배열의 각 요소에 함수를 적용한 결과를 기준으로 정렬한 뒤, 이렇게 정렬된 배열을 뒤집습니다.
f가 여러 인수를 받는 경우, arrayReverseSort 함수에는 여러 배열이 전달되며,
func의 인수는 이 배열들에 각각 대응합니다.
정렬할 배열에 -Inf, NULL, NaN, Inf가 포함된 경우 다음 순서로 정렬됩니다:
-InfInfNaNNULL
arrayReverseSort는 고차 함수입니다.
구문
인수
f(y1[, y2 ... yN])— 배열x의 요소에 적용할 람다 함수입니다. -arr— 정렬할 배열입니다.Array(T)-arr1, ..., yN— 선택 사항입니다.f가 여러 인수를 받는 경우 사용하는 N개의 추가 배열입니다.
반환 값
람다 함수가 제공되지 않으면 배열 x를 내림차순으로 정렬한 배열을 반환합니다. 람다 함수가 제공되면, 제공된 람다 함수의 로직에 따라 배열을 정렬한 뒤 그 순서를 반전한 배열을 반환합니다. Array(T).
예시
예시 1
예제 2
arrayReverseSplit
도입된 버전: v20.1
원본 배열을 여러 개의 배열로 분할합니다. func(x[, y1, ..., yN])이 0이 아닌 값을 반환하면, 해당 요소의 오른쪽에서 배열이 분할됩니다. 마지막 요소 뒤에서는 배열이 분할되지 않습니다.
Syntax
인수
func(x[, y1, ..., yN])— 소스 배열(x)과 조건 배열(y)의 요소를 대상으로 동작하는 람다 함수입니다.Lambda functionsource_arr— 처리할 소스 배열입니다.Lambda function[, cond1_arr, ... , condN_arr]— 선택 사항입니다. 람다 함수에 추가 인수를 제공하는 N개의 조건 배열입니다.Array(T)
반환 값
배열의 배열을 반환합니다. Array(Array(T))
예시
사용 예시
arrayRotateLeft
도입된 버전: v23.8
지정한 요소 개수만큼 배열을 왼쪽으로 회전합니다. n의 값이 음수인 경우, 그 절댓값만큼 오른쪽으로 회전하는 것으로 처리됩니다.
구문
인수
arr— 요소를 회전할 배열입니다.Array(T). -n— 회전할 요소의 개수입니다.(U)Int8/16/32/64.
반환 값
지정된 개수만큼 왼쪽으로 회전된 배열입니다. Array(T)
예시
사용 예
n이 음수인 경우
arrayRotateRight
도입 버전: v23.8
지정된 개수만큼 배열을 오른쪽으로 회전합니다. n의 값이 음수이면 회전 크기의 절댓값만큼 왼쪽으로 회전한 것으로 처리합니다.
구문
인수
arr— 요소를 회전할 배열.Array(T).n— 회전할 요소의 개수.(U)Int8/16/32/64.
반환 값
지정된 개수만큼 오른쪽으로 회전된 배열. Array(T)
예시
사용 예
음수 n 값
arrayShiftLeft
도입 버전: v23.8
지정된 개수만큼 배열을 왼쪽으로 시프트합니다. 새 요소는 제공된 인자 또는 배열 요소 타입의 기본값으로 채워집니다. 요소 개수 인자가 음수이면 배열을 오른쪽으로 시프트합니다.
구문
인자
arr— 요소를 이동할 배열입니다.Array(T). -n— 이동할 요소의 개수입니다.(U)Int8/16/32/64. -default— 선택 사항입니다. 새로 생성되는 요소의 기본값입니다.
반환 값
지정된 요소 개수만큼 요소를 왼쪽으로 이동한 배열입니다. Array(T)
예시
사용 예시
n이 음수인 경우
기본값 사용
arrayShiftRight
도입 버전: v23.8
배열을 지정된 개수만큼 오른쪽으로 이동합니다. 새로 채워지는 요소는 제공된 인자 또는 배열 요소 타입의 기본값으로 채워집니다. 요소 수가 음수이면 배열은 왼쪽으로 이동합니다.
구문
인수
arr— 요소를 이동할 배열입니다.Array(T)n— 오른쪽으로 이동시킬 요소의 개수입니다.(U)Int8/16/32/64default— 선택 사항입니다. 새로 생기는 요소의 기본값입니다.
반환 값
지정된 개수만큼 오른쪽으로 이동된 배열입니다. Array(T)
예시
사용 예시
n이 음수인 경우
기본값 사용하기
arrayShingles
도입 버전: v24.1
shingle(문자열에서의 n-그램과 유사)들로 구성된 배열을 생성합니다. 즉, 입력 배열에서 지정한 길이의 연속된 부분 배열(sub-array)을 연속적으로 생성합니다.
구문
인자
반환 값
생성된 shingle 배열입니다. Array(T)
예시
사용 예시
arrayShuffle
도입 버전: v23.2
원본 배열과 동일한 크기의 배열을 반환하며, 요소들은 무작위로 섞인 순서로 포함됩니다. 요소들은 가능한 모든 순열이 동일한 확률로 나타나도록 재배열됩니다.
이 함수는 상수를 실체화(materialize)하지 않습니다.
구문
인수
arr— 섞을 배열입니다.Array(T)seed (optional)— 선택 사항입니다. 난수 생성에 사용할 시드입니다. 제공하지 않으면 임의의 시드가 사용됩니다.(U)Int*
반환 값
요소가 섞인 배열입니다. Array(T)
예시
시드를 사용하지 않는 예시(결과가 매번 달라짐)
시드를 사용하지 않는 예시 (안정적인 결과)
arraySimilarity
도입 버전: v25.4
가중치가 적용된 레벤슈타인 거리(Levenshtein distance)를 기준으로 두 배열의 유사도를 0에서 1 사이 값으로 계산합니다.
구문
인수
from— 첫 번째 배열Array(T)to— 두 번째 배열Array(T)from_weights— 첫 번째 배열에 대한 가중치.Array((U)Int*|Float*)to_weights— 두 번째 배열에 대한 가중치.Array((U)Int*|Float*)
반환 값
가중 레벤슈타인 거리(Levenshtein distance)를 기반으로 두 배열의 유사도를 0 이상 1 이하의 값으로 반환합니다. 반환 타입은 Float64입니다.
예시
사용 예시
arraySlice
도입된 버전: v1.1
NULL 요소를 포함하여 배열의 일부 구간을 반환합니다.
구문
인자
arr— 슬라이스할 배열입니다.Array(T)offset— 배열의 양 끝을 기준으로 한 오프셋(offset)입니다. 양수 값은 왼쪽(처음)에서의 오프셋을, 음수 값은 오른쪽(끝)에서의 오프셋을 나타냅니다. 배열 항목의 번호는1부터 시작합니다.(U)Int*length— 필요한 슬라이스의 길이입니다. 음수 값을 지정하면 함수는 열린 구간 슬라이스[offset, array_length - length]를 반환합니다. 값을 생략하면 함수는 슬라이스[offset, 배열의 끝]을 반환합니다.(U)Int*
반환 값
지정된 offset부터 length개의 요소를 포함하는 배열 슬라이스를 반환합니다. Array(T)
예시
사용 예시
arraySort
도입 버전: v1.1
지정된 배열의 요소를 오름차순으로 정렬합니다.
람다 함수 f가 지정된 경우, 배열의 각 요소에 람다를 적용한 결과에 따라 정렬 순서가 결정됩니다.
람다가 여러 인수를 받는 경우, arraySort 함수는 f의 각 인수에 대응하는 여러 배열을 전달합니다.
정렬할 배열에 -Inf, NULL, NaN, Inf가 포함되어 있으면 다음 순서로 정렬됩니다:
-InfInfNaNNULL
arraySort는 고차 함수입니다.
구문
인수
f(y1[, y2 ... yN])— 배열x의 요소에 적용할 람다 함수입니다. -arr— 정렬할 배열입니다.Array(T)-arr1, ..., yN— 선택 사항입니다.f가 여러 인수를 받는 경우 사용할 N개의 추가 배열입니다.
반환 값
람다 함수가 제공되지 않으면 배열 arr을 오름차순으로 정렬한 결과를 반환하고, 람다 함수가 제공되면 해당 람다 함수의 로직에 따라 정렬된 배열을 반환합니다. Array(T).
예시
예시 1
예제 2
예제 3
arraySplit
도입 버전: v20.1
소스 배열을 여러 개의 배열로 분할합니다. func(x [, y1, ..., yN])이 0이 아닌 값을 반환하면 해당 요소의 왼쪽에서 배열이 분할됩니다. 첫 번째 요소 앞에서는 배열이 분할되지 않습니다.
구문
인수
func(x[, y1, ..., yN])— 원본 배열(x)과 조건 배열(y)의 요소에 적용되는 람다 함수입니다. Lambda function.
source_arr— 분할할 원본 배열입니다.Array(T).[, cond1_arr, ... , condN_arr]— 선택 사항입니다. 람다 함수에 전달할 추가 인자를 제공하는 N개의 조건 배열입니다.Array(T).
반환 값
배열을 요소로 갖는 배열을 반환합니다. Array(Array(T))
예시
사용 예시
arraySum
도입 버전: v21.1
소스 배열 요소들의 합을 반환합니다.
람다 FUNCTION func이 지정된 경우, 해당 람다 결과 요소들의 합을 반환합니다.
구문
인자
func(x[, y1, ..., yN])— 선택 사항입니다. 소스 배열(x)과 조건 배열(y)의 요소를 대상으로 동작하는 lambda 함수입니다.Lambda functionsource_arr— 처리할 소스 배열입니다.Array(T), cond1_arr, ... , condN_arr]— 선택 사항입니다. lambda 함수에 추가 인자를 제공하는 N개의 조건 배열입니다.Array(T)
반환 값
소스 배열의 요소 합계를 반환하거나, lambda 함수가 제공된 경우 lambda 결과 요소의 합계를 반환합니다.
예제
기본 예제
람다 FUNCTION 사용 방법
arraySymmetricDifference
도입 버전: v25.4
여러 배열을 입력으로 받아 모든 원본 배열에 모두 존재하지 않는 요소들로만 구성된 배열을 반환합니다. 결과에는 고유한 값만 포함됩니다.
2개를 초과하는 집합의 대칭 차집합은 수학적으로
입력 집합들 가운데 홀수 번 등장하는 모든 입력 요소들의 집합으로 정의됩니다.
반면, arraySymmetricDifference 함수는 단순히 모든 입력 집합에 공통으로 존재하지 않는 입력 요소들의 집합만을 반환합니다.
구문
인수(Arguments)
arrN— 새로운 배열을 생성할 N개의 배열입니다.Array(T).
반환 값(Returned value)
모든 소스 배열에 모두 존재하는 것은 아닌 서로 다른 요소들로 구성된 배열을 반환합니다. Array(T)
예시(Examples)
사용 예시(Usage example)
arrayUnion
도입 버전: v24.10
여러 배열을 인수로 받아, 원본 배열들 중 하나에 존재하는 모든 요소를 포함하는 배열을 반환합니다. 결과 배열에는 중복되지 않는 고유한 값만 포함됩니다.
구문
인수
arrN— 새로운 배열을 생성할 N개의 배열입니다.Array(T)
반환 값
원본 배열들에서 서로 다른 요소만 포함하는 배열을 반환합니다. Array(T)
예시
사용 예시
arrayUniq
도입된 버전: v1.1
인수가 하나만 전달되면 배열에서 서로 다른 요소의 개수를 셉니다. 여러 인수가 전달되면 여러 배열에서 동일한 위치의 요소들로 이루어진 튜플(tuple) 중 서로 다른 튜플의 개수를 셉니다.
예를 들어 SELECT arrayUniq([1,2], [3,4], [5,6])은 다음과 같은 튜플을 만듭니다:
- 위치 1: (1,3,5)
- 위치 2: (2,4,6)
그 다음 고유한 튜플의 개수를 셉니다. 이 경우 2입니다.
전달되는 모든 배열의 길이는 동일해야 합니다.
배열에서 고유한 요소 목록을 얻으려면 arrayReduce('groupUniqArray', arr)를 사용할 수 있습니다.
구문
인수
arr1— 고유한 요소의 개수를 계산할 배열.Array(T)[, arr2, ..., arrN]— 선택 사항. 여러 배열에서 동일한 인덱스 위치에 있는 요소들로 이루어진 고유 튜플의 개수를 계산하기 위해 사용하는 추가 배열들.Array(T)
반환 값
인수가 하나일 때는 고유한 요소의 개수를 반환합니다. 인수가 여러 개일 때는 여러 배열에서 동일한 인덱스 위치의 요소들로 구성된 고유 튜플의 개수를 반환합니다.
UInt32
예시
단일 인수
다중 인자
arrayWithConstant
도입된 버전: v20.1
상수 x로 채워진 길이 length의 배열을 생성합니다.
구문
인자
length— 배열 요소의 개수.(U)Int*x— 배열의N개 요소에 사용할 값으로, 임의의 타입일 수 있습니다.
반환 값
값이 x인 N개 요소로 구성된 Array를 반환합니다. Array(T)
예시
사용 예시
arrayZip
도입된 버전: v20.1
여러 배열을 하나의 배열로 결합합니다. 결과 배열에는 인수에 지정된 순서대로, 각 원본 배열에서 동일한 위치(인덱스)의 요소들을 튜플로 묶은 값들이 포함됩니다.
구문
인자
arr1, arr2, ... , arrN— 하나의 배열로 결합할 N개의 배열입니다.Array(T)
반환 값
원본 배열의 요소들을 튜플로 묶어서 구성한 배열을 반환합니다. 튜플의 데이터 타입은 입력 배열의 타입과 동일하며, 배열이 전달된 순서를 그대로 따릅니다. Array(T)
예시
사용 예시
arrayZipUnaligned
도입 버전: v20.1
여러 배열을 하나의 배열로 결합하며, 길이가 서로 다른 배열도 허용합니다. 결과 배열에는 인수로 전달된 순서에 따라 각 원본 배열에서 같은 인덱스의 요소들이 튜플로 묶여 포함됩니다.
구문
인수
arr1, arr2, ..., arrN— 하나의 배열로 결합할 N개의 배열입니다.Array(T)
반환 값
원본 배열의 요소를 튜플 단위로 그룹화한 배열을 반환합니다. 튜플의 데이터 타입은 입력 배열의 타입과 동일하며, 배열이 전달된 순서를 그대로 따릅니다. Array(T) 또는 Tuple(T1, T2, ...)
예시
사용 예시
countEqual
도입된 버전: v1.1
배열에서 값이 x인 요소의 개수를 반환합니다. arrayCount(elem -> elem = x, arr)와 동일합니다.
NULL 요소는 별도의 값으로 처리됩니다.
문법
인수
arr— 검색할 배열입니다.Array(T)x— 배열에서 개수를 계산할 값입니다. 임의의 타입입니다.
반환 값
배열에서 x와 같은 요소의 개수를 반환합니다. UInt64
예시
사용 예시
empty
도입된 버전: v1.1
입력 배열이 비어 있는지 확인합니다.
배열에 요소가 하나도 포함되어 있지 않으면 비어 있는 것으로 간주합니다.
optimize_functions_to_subcolumns 설정을 활성화하여 최적화할 수 있습니다. optimize_functions_to_subcolumns = 1인 경우 함수는 전체 배열 컬럼을 읽고 처리하는 대신 size0 서브컬럼만 읽습니다. 쿼리 SELECT empty(arr) FROM TABLE;는 SELECT arr.size0 = 0 FROM TABLE;로 변환됩니다.
이 함수는 String 또는 UUID에 대해서도 동작합니다.
구문
인수
arr— 입력 배열.Array(T)
반환 값
빈 배열이면 1, 비어 있지 않은 배열이면 0을 반환합니다. UInt8
예시
사용 예시
emptyArrayDate
도입 버전: v1.1
비어 있는 Date 형식 배열을 반환합니다.
구문
인수
- 없음.
반환값
빈 Date 배열입니다. Array(T)
예
사용 예
emptyArrayDateTime
도입 버전: v1.1
빈 DateTime 배열을 반환합니다.
구문
인수
- 없음.
반환값
빈 DateTime 배열. Array(T)
예시
사용 예시
emptyArrayFloat32
도입 버전: v1.1
빈 Float32 배열을 반환합니다.
구문
인수
- 없음
반환값
비어 있는 Float32 배열입니다. Array(T)
예시
사용 예시
emptyArrayFloat64
도입: v1.1
빈 Float64 타입 배열을 반환합니다.
구문
인수
- 없음.
반환 값
빈 Float64 배열. Array(T)
예제
사용 예제
emptyArrayInt16
v1.1에서 도입됨
빈 Int16 배열을 반환합니다.
구문
인수
- 없음.
반환값
빈 Int16 배열입니다. Array(T)
예시
사용 예시
emptyArrayInt32
도입된 버전: v1.1
빈 Int32 배열을 반환합니다.
구문
인수
- 없음.
반환값
비어 있는 Int32 배열입니다. Array(T)
예제
사용 예제
emptyArrayInt64
도입 버전: v1.1
빈 Int64 배열을 반환합니다.
구문
인수
- 없음.
반환 값
빈 Int64 배열입니다. Array(T)
예제
사용 예제
emptyArrayInt8
도입 버전: v1.1
빈 Int8 배열을 반환합니다.
구문
인수
- 없음.
반환값
비어 있는 Int8 배열입니다. Array(T)
예시
사용 예시
emptyArrayString
도입된 버전: v1.1
빈 String 배열을 반환합니다.
구문
인수
- 없음.
반환값
빈 String 배열을 반환합니다. Array(T)
예시
사용 예
emptyArrayToSingle
도입된 버전: v1.1
빈 배열을 인수로 받아 기본값과 동일한 단일 요소 배열을 반환합니다.
구문
인수
arr— 빈 배열입니다.Array(T)
반환 값
배열의 기본 타입 값 하나를 포함하는 배열입니다. Array(T)
예시
기본 예제
emptyArrayUInt16
도입 버전: v1.1
비어 있는 UInt16 배열을 반환합니다.
구문
인수(Arguments)
- 없음.
반환 값(Returned value)
빈 UInt16 배열을 반환합니다. Array(T)
예시(Examples)
사용 예시(Usage example)
emptyArrayUInt32
도입된 버전: v1.1
빈 UInt32 배열을 반환합니다.
구문
인수
- 없음.
반환 값
비어 있는 UInt32 배열. Array(T)
예제
사용 예제
emptyArrayUInt64
도입 버전: v1.1
빈 UInt64 타입 배열을 반환합니다.
구문
인수(Arguments)
- 없습니다.
반환 값(Returned value)
빈 UInt64 배열입니다. Array(T)
예시(Examples)
사용 예시(Usage example)
emptyArrayUInt8
도입: v1.1
빈 UInt8 배열을 반환합니다.
구문
인수
- 없음.
반환 값
비어 있는 UInt8 배열입니다. Array(T)
예시
사용 예
has
도입 버전: v1.1
배열에 지정한 요소가 포함되어 있는지 여부를 반환합니다.
첫 번째 인수가 상수 배열이고 두 번째 인수가 컬럼 또는 표현식인 경우 has(constant_array, column)는 column IN (constant_array)처럼 동작하며, 최적화를 위해 기본 키 및 데이터 스키핑 인덱스를 사용할 수 있습니다. 예를 들어 has([1, 10, 100], id)는 id가 PRIMARY KEY의 일부인 경우 기본 키 인덱스를 활용할 수 있습니다.
이 최적화는 컬럼이 단조(monotonic) 함수로 감싸져 있는 경우에도 적용됩니다(예: has([...], toDate(ts))).
구문
인수
arr— 소스 배열.Array(T)x— 배열에서 검색할 값.
반환 값
배열에 지정한 요소가 포함되어 있으면 1, 그렇지 않으면 0을 반환합니다. UInt8
예제
기본 사용법
찾을 수 없습니다
hasAll
도입 버전: v1.1
한 배열이 다른 배열의 부분집합인지 확인합니다.
- 빈 배열은 모든 배열의 부분집합으로 간주됩니다.
Null은 하나의 값으로 처리됩니다.- 두 배열에서 값의 순서는 중요하지 않습니다.
구문
인수
set— 임의의 타입 요소들로 이루어진 배열입니다.Array(T)subset—set과 공통 상위 타입을 공유하며,set의 부분집합인지 테스트할 요소들을 포함하는 임의의 타입 배열입니다.Array(T)
반환 값
set이subset의 모든 요소를 포함하면1.- 그렇지 않으면
0.
set과 subset 요소가 공통 상위 타입을 공유하지 않으면 NO_COMMON_TYPE 예외를 발생시킵니다.
예시
빈 배열
NULL 값을 포함한 배열
서로 다른 타입의 값이 포함된 배열
String 값을 포함한 배열
공통 타입이 없는 배열
중첩 배열
hasAny
도입 버전: v1.1
두 배열에 하나 이상의 공통 요소가 있는지 확인합니다.
Null은 하나의 값으로 취급됩니다.- 두 배열에서 값의 순서는 중요하지 않습니다.
구문
인수
반환 값
arr_x와arr_y에 적어도 하나의 동일한 요소가 있으면1.- 그렇지 않으면
0.
두 배열의 요소 중 공통 상위 타입을 공유하지 않는 요소가 하나라도 있으면 NO_COMMON_TYPE 예외가 발생합니다.
예시
한 배열이 비어 있는 경우
NULL 값이 포함된 배열
서로 다른 타입의 값을 담은 배열
공통 타입이 없는 배열
중첩 배열
hasSubstr
도입된 버전: v20.6
array2의 모든 요소가 array1 안에 정확히 같은 순서로 나타나는지 확인합니다.
따라서 array1 = prefix + array2 + suffix인 경우에만, 그리고 그 경우에 한해 함수는 1을 반환합니다.
다시 말해, 이 함수는 hasAll 함수와 같이 array2의 모든 요소가 array1에 포함되어 있는지 확인합니다.
여기에 더해, array1과 array2 모두에서 요소들이 동일한 순서로 나타나는지도 확인합니다.
array2가 비어 있으면 함수는1을 반환합니다.Null은 하나의 값으로 처리됩니다. 즉,hasSubstr([1, 2, NULL, 3, 4], [2,3])은0을 반환합니다. 그러나hasSubstr([1, 2, NULL, 3, 4], [2,NULL,3])은1을 반환합니다.- 두 배열 모두에서 값의 순서가 중요합니다.
두 배열의 요소 중 공통 상위 타입을 공유하지 않는 것이 하나라도 있으면 NO_COMMON_TYPE 예외를 발생시킵니다.
구문
인수
반환 값
배열 arr1이 배열 arr2를 포함하면 1을 반환합니다. 그렇지 않으면 0을 반환합니다. UInt8
예시
두 배열이 모두 비어 있는 경우
NULL 값을 포함한 배열
서로 다른 타입의 값이 섞인 배열
문자열 배열
유효한 순서가 있는 배열
순서가 올바르지 않은 배열
중첩 배열
공통 타입이 없는 배열
indexOf
도입된 버전: v1.1
배열에 값 'x'인 첫 번째 요소가 존재하는 경우, 해당 요소의 인덱스를 반환합니다(1부터 시작).
배열에 찾는 값이 없으면 함수는 0을 반환합니다.
NULL로 설정된 요소는 일반 값처럼 처리됩니다.
구문
인수
반환 값
arr에 x가 존재하면 첫 번째 x의 인덱스(1부터 시작)를 반환합니다. 존재하지 않으면 0을 반환합니다. UInt64
예제
기본 예제
NULL 값을 포함한 배열
indexOfAssumeSorted
도입 버전: v24.12
배열에 값 'x'가 포함되어 있으면, 해당 값과 같은 첫 번째 요소의 인덱스를 반환합니다(1부터 시작합니다).
배열에 찾는 값이 없으면 함수는 0을 반환합니다.
indexOf 함수와 달리, 이 함수는 배열이 오름차순으로 정렬되어 있다고 가정합니다.
배열이 정렬되어 있지 않으면 결과는 정의되지 않습니다.
구문
인수
반환 값
arr에 x가 존재하면 처음 나타나는 x의 인덱스(1부터 시작)를 반환합니다. 존재하지 않으면 0을 반환합니다. UInt64
예시
기본 예시
length
도입된 버전: v1.1
문자열 또는 배열의 길이를 계산합니다.
- String 또는 FixedString 인수: 문자열의 바이트 수를 계산합니다.
- Array 인수: 배열의 요소 개수를 계산합니다.
- FixedString 인수에 적용되는 경우, 이 함수는 상수 식입니다.
문자열의 바이트 수는 Unicode "code points"의 개수와 같지 않으며, Unicode "grapheme clusters"(일반적으로 "문자"라고 부르는 것)의 개수와도 같지 않고, 화면에 표시되는 문자열 너비와도 같지 않습니다.
문자열에 ASCII NULL 바이트가 포함되어 있어도 허용되며, 이들도 길이에 포함되어 계산됩니다.
Syntax
별칭(Aliases): OCTET_LENGTH
인자(Arguments)
x—String/FixedString인 경우 바이트 수를,Array인 경우 요소 수를 계산할 값입니다.String또는FixedString또는Array(T)
반환 값(Returned value)
String/FixedString x의 바이트 수 또는 배열 x의 요소 수를 UInt64 형으로 반환합니다.
예시(Examples)
String 예시
배열 예제
constexpr 예제
유니코드 예제
ascii_vs_utf8 예시
notEmpty
도입 버전: v1.1
입력 배열이 비어 있지 않은지 확인합니다.
배열에 최소 하나의 요소가 포함되어 있으면 비어 있지 않은 것으로 간주합니다.
optimize_functions_to_subcolumns 설정을 활성화하여 최적화할 수 있습니다. optimize_functions_to_subcolumns = 1인 경우, 함수는 전체 배열 컬럼을 읽고 처리하는 대신 size0 서브컬럼만 읽습니다. 쿼리 SELECT notEmpty(arr) FROM table는 SELECT arr.size0 != 0 FROM TABLE로 변환됩니다.
이 함수는 String 또는 UUID 타입에도 사용할 수 있습니다.
구문
인수
arr— 입력 배열.Array(T)
반환 값
비어 있지 않은 배열이면 1, 비어 있는 배열이면 0을 반환합니다. UInt8
예제
사용 예제
range
도입된 버전: v1.1
start부터 end - 1까지 step 간격으로 숫자 배열을 반환합니다.
지원되는 타입은 다음과 같습니다.
-
UInt8/16/32/64 -
Int8/16/32/64 -
모든 인수
start,end,step은 위에서 지원되는 타입 중 하나여야 합니다. 반환되는 배열 요소의 타입은 인수들의 상위(super) 타입이 됩니다. -
함수가 반환하는 배열의 전체 길이가 설정
function_range_max_elements_in_block에 지정된 요소 개수보다 많으면 예외가 발생합니다. -
어느 인수든
Nullable(nothing)타입이면NULL을 반환합니다. 어느 인수든NULL값(Nullable(T)타입)을 가지면 예외가 발생합니다.
구문
인수
start— 선택입니다. 배열의 첫 번째 요소입니다.step을 사용하는 경우 필수입니다. 기본값:0. -end— 필수입니다. 배열을 생성할 때 사용하는 상한 값이며, 이 값은 포함되지 않습니다. -step— 선택입니다. 배열의 각 요소 사이의 증가 간격을 결정합니다. 기본값:1.
반환 값
start부터 end - 1까지 step 간격으로 증가하는 숫자 배열입니다. Array(T)
예시
사용 예제
replicate
도입 버전: v1.1
단일 값만 포함하는 배열을 생성합니다.
구문
인수
반환 값
배열 arr와 길이가 같고 값 x로 채워진 배열을 반환합니다. Array(T)
예시
사용 예시
reverse
도입된 버전: v1.1
입력 배열의 요소 순서 또는 입력 문자열의 문자 순서를 역순으로 반환합니다.
구문
인수
반환 값
요소 또는 문자의 순서를 뒤집은 배열 또는 문자열을 반환합니다.
예시
배열 순서 뒤집기
문자열 뒤집기
거리 함수
모든 지원 거리 함수는 거리 함수 문서에서 설명되어 있습니다.