ClickHouse 데이터 계보: 구체화된 뷰를 통해 열 추적

클릭하우스 데이터 계보 이는 ClickHouse 파이프라인을 통해 컬럼이 흐르는 방식을 보여주는 지도입니다. 어떤 Kafka 엔진 테이블, MergeTree 테이블, 구체화된 뷰 SELECT 문이 각 다운스트림 컬럼에 데이터를 제공하는지, 그리고 어떤 함수와 집계 상태가 데이터를 변환하는지를 보여줍니다. ClickHouse 구체화된 뷰는 전적으로 SQL로 정의되므로 정확한 데이터 계보는 해당 SQL을 분석하여 얻을 수 있습니다. Gudu SQLFlow 이 기능은 ClickHouse 전용 방언 파서를 사용하여 수행되며, 대화형 열 수준 계보도를 반환합니다.

지금 바로 시도해 보세요: 붙여넣으세요 구체화된 뷰 생성 진술을 무료 SQLFlow 시각화 도구ClickHouse 방언을 선택하면 몇 초 만에 MV 체인의 열 수준 계보도를 얻을 수 있습니다.

ClickHouse 데이터 계보가 구체화된 뷰의 문제점인 이유는 무엇일까요?

대부분의 데이터 웨어하우스에서 변환 로직은 예약된 배치 작업에 존재합니다. ClickHouse에서는 구체화된 뷰(MV)에 존재합니다. ClickHouse MV는 삽입 트리거 역할을 합니다. 소스 테이블에 기록되는 모든 블록은 MV의 SELECT 문을 통해 대상 테이블에 삽입됩니다. 프로덕션 파이프라인은 이러한 MV들을 연결하여 구성됩니다. Kafka 엔진 테이블에서 MV로 데이터가 전달되고, MV는 원시 행을 MergeTree 테이블에 저장합니다. 다른 MV들은 해당 테이블을 읽어 SummingMergeTree 또는 AggregatingMergeTree 롤업을 생성하고, 대시보드는 이러한 롤업을 쿼리합니다.

그 설계는 빠르지만, 데이터 흐름이 여러 작은 영역에 분산됩니다. 구체화된 뷰 생성 대시보드 수치가 잘못되었거나 누군가 Kafka 토픽에서 열을 삭제하려는 경우, 수동으로 체인을 재구성해야 합니다. 즉, 쿼리를 실행해야 합니다. 시스템 테이블각 뮤직비디오를 읽어보세요 테이블 쿼리 생성모든 것을 따르세요 에게 절을 따라가면서 리프 노드에 도달할 때까지 반복합니다. 각 단계는 고유한 표현식, 필터 및 GROUP BY를 사용하는 SELECT 문이므로 단일 열을 정확하게 추적하려면 테이블 이름을 검색하는 것이 아니라 실제로 SQL 구문을 분석해야 합니다.

SQLFlow는 바로 그 단계를 자동화합니다. SQLFlow의 ClickHouse 파서는 39개의 방언별 파서 중 하나이며(일반적인 ANSI 문법이 아님), 따라서 ClickHouse 전용 구문(엔진 절, 집계 함수 컬럼, -상태 조합자, 함수 등 현재까지 그리고 유니크 — 생략되는 것이 아니라 이해되는 것입니다.

예시: Kafka에서 AggregatingMergeTree로 열을 추적하는 방법

다음은 일반적인 2단계 ClickHouse 데이터 수집 체인입니다. 첫 번째는 Kafka 엔진 테이블이고, 두 번째는 원시 이벤트를 MergeTree에 저장하는 MV이며, 세 번째는 AggregatingMergeTree 테이블에 사전 집계된 롤업을 유지하는 두 번째 MV입니다.

CREATE TABLE events_kafka ( event_time DateTime, user_id UInt64, event_type LowCardinality(String), revenue Decimal(18, 2) ) ENGINE = Kafka SETTINGS kafka_broker_list = 'kafka:9092', kafka_topic_list = 'events', kafka_format = 'JSONEachRow'; CREATE TABLE events_raw ( event_time DateTime, user_id UInt64, event_type LowCardinality(String), revenue Decimal(18, 2) ) ENGINE = MergeTree ORDER BY (event_type, event_time); CREATE MATERIALIZED VIEW mv_events_raw TO events_raw AS SELECT event_time, user_id, event_type, revenue FROM events_kafka; CREATE TABLE revenue_daily ( day Date, event_type LowCardinality(String), total_revenue AggregateFunction(sum, Decimal(18, 2)), buyers AggregateFunction(uniq, UInt64) ) ENGINE = AggregatingMergeTree ORDER BY (day, event_type); CREATE MATERIALIZED VIEW mv_revenue_daily TO revenue_daily AS SELECT toDate(event_time) AS day, event_type, sumState(revenue) AS total_revenue, uniqState(user_id) AS buyers FROM events_raw WHERE event_type = 'purchase' GROUP BY day, event_type;

이 네 개의 명령문을 SQLFlow에 입력하면 전체 쿼리 체인이 해석됩니다. 롤업 테이블의 경우 출력 열별로 다음과 같은 정보가 보고됩니다.

  • 일일 수익.총 수익 ~에서 유래합니다 이벤트_raw.수익 ~을 통해 sumState()이는 다시 다음으로부터 유래합니다. 이벤트_카프카.수익 ~을 통해 mv_events_raw — Kafka에서 Rollup으로 이어지는 전체 경로를 하나의 다이어그램으로 보여줍니다.
  • 일일 수익.일 ~에서 유래하다 이벤트_raw.이벤트_시간 ~을 통해 toDate()적용된 함수는 버려지지 않고 가장자리에 기록됩니다.
  • 일일 수익.구매자 ~에서 유래하다 이벤트_raw.user_id ~을 통해 uniqState().
  • 이벤트_raw.이벤트_유형 영향 모든 롤업 컬럼은 간접적으로 생성됩니다. 왜냐하면 WHERE event_type = 'purchase' 필터와 그룹화 기준 — SQLFlow는 이러한 연결을 직접적인 데이터 흐름 연결과 구별되는 간접 연결로 표시합니다.

마지막 요점은 ClickHouse에서 다른 검색 엔진보다 훨씬 중요합니다. 롤업의 정확성은 출력에 나타나지 않는 필터 열에 따라 달라지는 경우가 많습니다. 누군가 이름을 바꾸면 이벤트 유형 Kafka 토픽에서 테이블 수준 계보는 "롤업이 events_raw에 의존합니다"라고 표시하는데, 이는 참이지만 쓸모가 없습니다. 간접 에지를 포함한 열 수준 계보는 다음과 같습니다.총수익 그리고 구매자 "둘 다 정확히 이 열로 필터링됩니다." 이것이 바로 변경 사항을 배포하기 전에 실제로 필요한 답변입니다. 대부분의 계보 도구는 간접 계보를 전혀 모델링하지 않지만, SQLFlow는 다이어그램에서 별도로 켜고 끌 수 있는 레이어로 제공합니다.

SQLFlow가 ClickHouse SQL에서 추출하는 내용

  • 컬럼 수준 계보: 각 출력 열에 대해 해당 열에 데이터를 제공하는 정확한 소스 열과 경로상의 함수, 형변환, 서브쿼리, 조인 및 집합 연산자를 표시합니다. 열 참조는 CTE, 서브쿼리, 뷰 등을 통해 해결됩니다. 선택하다 * 확장.
  • 직접 혈통 vs. 간접 혈통: 순수 데이터 흐름 엣지는 영향 엣지(사용되는 열)와 분리되어 유지됩니다. 어디, 그룹화 기준(및 참여 조건) 각 레이어는 독립적으로 전환할 수 있습니다.
  • 멀티홉 MV 체인: 각 MV의 SELECT 문이 파싱되고 대상 테이블이 연결되기 때문에, 연결된 구체화된 뷰는 수집 테이블에서 최종 롤업까지 하나의 연속적인 그래프로 해석됩니다.
  • 인터랙티브 다이어그램과 구조화된 데이터: 다이어그램을 자세히 살펴보거나, 계보를 JSON, CSV 또는 PNG 형식으로 내보내거나, REST API를 통해 프로그래밍 방식으로 가져올 수 있습니다.

ClickHouse SQL을 SQLFlow로 가져오는 방법

  1. 붙여넣거나 업로드하세요. DDL 및 MV 정의를 복사합니다(예: 테이블 쿼리 생성 값들 중 시스템 테이블브라우저에 입력하거나 마이그레이션 파일을 업로드하세요. 이것이 하나의 파이프라인을 감사하는 가장 빠른 방법입니다.
  2. JDBC를 통해 연결하세요. SQLFlow는 JDBC를 통해 실시간 데이터베이스에서 메타데이터를 가져올 수 있으므로 테이블 및 뷰 정의는 오래된 파일이 아닌 서버에서 직접 가져옵니다.
  3. 추출을 자동화합니다. 그래빗/SQLFlow-ingester 이 유틸리티는 반복 가능한 전체 자산 스캔을 위해 정해진 일정에 따라 메타데이터를 추출합니다.

SQLFlow는 모든 모드에서 SQL 코드에 대한 정적 분석만 수행합니다. 테이블에서 행을 읽지는 않으며, 온프레미스 에디션 (Docker/Kubernetes, 에어갭 환경과 호환) SQL 텍스트조차도 네트워크를 벗어나지 않습니다. 이는 ClickHouse 클러스터가 SaaS로 전송할 수 없는 이벤트 데이터를 처리하는 경우에 특히 중요합니다.

ClickHouse에서 계보를 얻는 방법 비교

접근하다잘한다ClickHouse MV 체인용 Gap
독서 시스템 테이블 손으로무료, 항상 최신 상태 유지, 별도의 도구 필요 없음당신은 파서가 됩니다. 여러 단계를 거치는 체인과 열별 경로를 수동으로 재구성해야 하고, 그렇게 되면 머릿속에서 정보가 흐릿해집니다.
오픈소스 파서(sqllineage, sqlglot)자체 툴 내에서 개별 쿼리에 대한 계보 검사를 스크립팅합니다.이것들은 라이브러리이지, 계보 산물이 아닙니다. 연결된 MV 문을 다이어그램과 간접 계보 분리를 통해 탐색 가능한 열 수준 그래프 하나로 조립하는 것은 사용자가 직접 작성하고 유지 관리해야 하는 코드입니다.
카탈로그 우선 플랫폼전체 스택에 걸친 거버넌스 워크플로, 소유권, 비즈니스 용어집계보 깊이는 각 방언별 SQL 구문 분석 방식에 따라 달라집니다. 특수 구문 분석기는 일반적으로 열 수준의 ClickHouse 계보를 더 깊이 분석합니다.
Gudu SQLFlow전용 방언 파서를 사용한 열 수준의 ClickHouse 계보도(직접/간접 구분 및 다이어그램 포함)상용 도구이며, 정적 분석 기능을 기본으로 설계하여 런타임 작업 원격 측정 데이터가 아닌 SQL 로직을 매핑합니다.

이러한 접근 방식은 다음과 같은 특징을 결합합니다. 엔터프라이즈 SQLFlow 배포는 데이터 계보를 DataHub, Microsoft Purview 및 OpenMetadata로 내보내므로 SQLFlow는 이미 실행 중인 카탈로그의 구문 분석 엔진 역할을 할 수 있습니다. 대규모 환경에서는 100개 이상의 데이터베이스와 백만 개 이상의 열을 포함하는 환경을 일괄 스캔하고, 증분 스캔 및 영구적인 계보 저장소(ClickHouse를 비롯한 스택의 다른 구성 요소)를 활용합니다.

ClickHouse는 거의 혼자 살지 않습니다.

ClickHouse의 실시간 서버는 일반적으로 페더레이션 레이어, 로컬 분석, 배치 웨어하우스와 같은 다른 엔진들과 함께 사용됩니다. SQLFlow는 이 모든 엔진을 동일한 엔진인 일반 SQL 파서(General SQL Parser)로 파싱합니다. 이 파서는 2000년대 중반부터 상용으로 개발되었으며, 약 13,600개의 방언별 테스트 픽스처를 통해 검증되었습니다. 따라서 엔진 경계를 넘어 데이터 계보는 열 수준으로 유지됩니다. 스택에 이러한 구성 요소가 포함된 경우 관련 가이드를 참조하세요. 트리노 데이터 계보 연합 쿼리 계층의 경우 DuckDB 데이터 계보 진행 중 분석을 위해 또는 검색을 통해 확인하세요. 데이터 계보 지식 기반.

자주 묻는 질문

SQLFlow는 연결된 ClickHouse 구체화된 뷰를 통해 계보를 추적할 수 있습니까?

예. 각 구체화된 뷰의 SELECT 문이 파싱되고 대상 테이블이 그래프에 연결되므로, Kafka 엔진 테이블이 구체화된 뷰에 데이터를 제공하고, 이 뷰가 병합 트리 테이블에 데이터를 제공하고, 다시 다른 구체화된 뷰에 데이터를 제공하여 집계 병합 트리에 데이터를 제공하는 경우, 모든 연결은 하나의 연속적인 열 수준 경로로 해석됩니다.

SQLFlow는 ClickHouse 고유의 SQL 구문을 이해합니까?

네. ClickHouse는 SQLFlow의 39개 방언별 파서 중 하나입니다. 일반적인 ANSI 파서가 아니라 ClickHouse 전용 문법이기 때문에 엔진 절이나 집계 함수 상태 열과 같은 ClickHouse 구문은 건너뛰지 않고 파싱됩니다.

SQLFlow가 ClickHouse 데이터에 접근해야 하나요?

아니요. SQLFlow는 SQL 코드에 대한 정적 분석을 수행하며, 선택적으로 JDBC를 통해 가져온 스키마 메타데이터도 분석합니다. 테이블에서 행을 직접 읽어오지는 않으며, 온프레미스 버전은 SQL 텍스트조차도 네트워크 내부에 보관합니다.

ClickHouse 롤업에서 "간접 계보"란 무엇을 의미합니까?

구체화된 뷰의 WHERE 필터 또는 GROUP BY에 사용된 열은 롤업 출력에 나타나지 않지만, 어떤 행이 집계될지를 결정합니다. SQLFlow는 이러한 관계를 직접적인 데이터 흐름과 구분된 간접적인 계보로 기록하고, 다이어그램에서 각 계층을 켜고 끌 수 있도록 합니다.

ClickHouse 리니지 분석을 위한 SQLFlow 비용은 얼마인가요?

SQLFlow 클라우드는 무료 티어를 제공하며, 프리미엄 티어는 월 $49.99입니다. SQLFlow 온프레미스는 월 $500 또는 선택한 데이터베이스 유형당 일회성 결제 시 $4,800이며, 두 대의 서버에 설치할 수 있습니다. 자세한 내용은 해당 웹사이트를 참조하십시오. 가격 페이지.

지금 바로 ClickHouse MV 체인을 매핑하세요

무료 시각화 도구에 CREATE MATERIALIZED VIEW 문을 붙여넣고 Kafka에서 Rollup까지의 전체 계보를 확인하거나, 전체 환경을 스캔하는 것에 대해 문의해 주세요.