CoalescingMergeTree 테이블 엔진
이 테이블 엔진은 OSS와 Cloud 모두에서 버전 25.6 이상부터 사용할 수 있습니다.
이 엔진은 MergeTree를 기반으로 합니다. 핵심 차이점은 데이터 파트가 병합되는 방식에 있습니다. CoalescingMergeTree 테이블에서는 ClickHouse가 동일한 기본 키(더 정확히는 동일한 정렬 키)를 가진 모든 행을 하나의 행으로 대체하며, 이 행에는 각 컬럼에 대해 가장 최신의 NULL이 아닌 값이 저장됩니다.
이를 통해 컬럼 단위 업서트(upsert)가 가능해지므로, 전체 행이 아니라 특정 컬럼만 업데이트할 수 있습니다.
CoalescingMergeTree는 키가 아닌 컬럼에서 널 허용 타입과 함께 사용하도록 설계되었습니다. 컬럼이 널 허용이 아니면 동작은 ReplacingMergeTree와 동일합니다.
테이블 생성
요청 매개변수에 대한 설명은 요청 설명을 참조하십시오.
CoalescingMergeTree 매개변수
컬럼
columns - 선택 사항입니다. 값을 병합할 컬럼 이름들의 튜플입니다. 지정된 컬럼은 파티션 키나 정렬 키에 포함되면 안 됩니다. columns가 지정되지 않으면 ClickHouse는 정렬 키에 포함되지 않은 모든 컬럼의 값을 병합합니다.
쿼리 절
CoalescingMergeTree 테이블을 생성할 때는 MergeTree 테이블을 생성할 때와 동일한 절이 필요합니다.
사용이 중단된 테이블 생성 방법
새 프로젝트에서는 이 방법을 사용하지 말고, 가능하다면 기존 프로젝트도 위에서 설명한 방법으로 전환하십시오.
columns를 제외한 모든 매개변수는 MergeTree에서와 동일한 의미를 가집니다.
columns— 합산할 컬럼들의 이름을 포함하는 튜플입니다. 선택적 매개변수입니다. 설명은 위의 본문을 참조하십시오.
사용 예시
다음과 같은 테이블이 있다고 가정합니다.
데이터를 삽입합니다:
결과는 다음과 같습니다:
정확한 최종 결과를 위한 권장 쿼리:
FINAL 수정자를 사용하면 ClickHouse가 쿼리 시점에 머지 로직을 적용하여 각 컬럼에 대해 올바르게 병합된 「최신」 값을 반환합니다. 이는 CoalescingMergeTree 테이블에서 쿼리할 때 가장 안전하고 정확한 방법입니다.
GROUP BY를 사용하는 방식은 기반이 되는 파트가 아직 완전히 병합되지 않은 경우 잘못된 결과를 반환할 수 있습니다.