Skip to main content

사용해야 하는 경우

이 기능은 이름 규칙이 비슷하고 컬럼도 유사하지만 복제되지 않은 테이블이 있을 때 유용합니다. 예를 들어, 쿼리 로그 테이블의 항목을 찾기 위해 system 데이터베이스를 검색하는 경우가 있습니다. query_log 테이블은 복제되지 않으며, 특정 노드에서 실행된 쿼리만 기록됩니다. 또한 데이터가 다른 테이블로 넘어갈 수도 있습니다. 예를 들어 데이터가 query_log_0, query_log_1 등에 삽입될 수 있습니다. 한 노드가 다른 노드보다 다른 시점에 롤오버될 수 있으므로, 정확히 같은 이름이 아닌 테이블에서도 찾고 있는 데이터를 검색할 수 있어야 합니다. 즉, 본질적으로는 다음과 같은 작업이 필요하지만, 이를 ClickHouse 구문으로 작성해야 합니다: SELECT column1, column2 FROM my_db.my_table_* 이를 위해 clusterAllReplicas()를 사용해 모든 노드를 검색하고, merge() 테이블 함수를 사용해 정규식 패턴으로 여러 테이블을 검색할 수 있습니다. 다음 예시는 query_log 접두사를 가진 모든 테이블을 쿼리하는 방법을 보여줍니다:
선택한 컬럼은 쿼리 대상인 각 테이블에 모두 있어야 하며, 그렇지 않으면 다음과 같은 오류가 발생할 수 있습니다:
또는 서로 다른 테이블에 없을 수 있는 컬럼을 제외할 때 EXCEPT 절을 사용할 수 있습니다. 예시:
마지막 수정일 2026년 7월 3일