이 드라이버는 현재 활발히 개발되고 있습니다. 일부 ODBC 기능은 아직 완전히 구현되지 않았을 수 있습니다. 현재 버전은 필수 연결 기능과 핵심 ODBC 기능 제공에
중점을 두고 있으며, 추가 기능은 향후 릴리스에서 제공될 예정입니다.피드백은 매우 소중하며 새 기능과 개선 사항의 우선순위를 정하는 데 도움이 됩니다. 제한 사항, 누락된 기능 또는 예상치 못한 동작을 발견한 경우
다음 이슈 추적기를 통해 의견이나 기능 요청을 공유하십시오.
https://github.com/ClickHouse/clickhouse-odbc/issues
Windows 설치
테스트
$reader.GetValue(0)을 실행하면 ClickHouse
서버 version이 표시됩니다.
구성 매개변수
Url: ClickHouse 서버의 전체 HTTP(S) 엔드포인트를 지정합니다. 프로토콜, 호스트, 포트 및 선택적 경로를 포함합니다.Username: ClickHouse 서버 인증에 사용하는 사용자 이름입니다.Password: 지정된 사용자 이름에 연결된 비밀번호입니다. 제공하지 않으면 드라이버는 비밀번호 인증 없이 연결합니다.Database: 연결에 사용할 기본 데이터베이스입니다.Timeout: 요청을 중단하기 전에 드라이버가 서버 응답을 기다리는 최대 시간(초)입니다.ClientName: 클라이언트 메타데이터의 일부로 ClickHouse 서버에 전송되는 사용자 지정 식별자입니다. 추적하거나 서로 다른 애플리케이션의 트래픽을 구분하는 데 유용합니다. 이 매개변수는 드라이버가 생성하는 HTTP 요청의 User-Agent 헤더 일부가 됩니다.Compression: 요청 및 응답 payload에 대한 HTTP 압축을 활성화하거나 비활성화합니다. 활성화하면 대규모 결과 집합의 대역폭 사용량을 줄이고 성능을 개선할 수 있습니다.SqlCompatibilitySettings: ClickHouse가 기존 관계형 데이터베이스처럼 동작하도록 하는 쿼리 설정을 활성화합니다. 예를 들어 Power BI와 같은 타사 도구가 쿼리를 자동으로 생성할 때 유용합니다. 이러한 도구는 일반적으로 일부 ClickHouse 전용 동작을 인식하지 못하므로 오류 또는 예기치 않은 결과를 초래하는 쿼리를 생성할 수 있습니다. 자세한 내용은 SqlCompatibilitySettings 구성 매개변수에서 사용하는 ClickHouse 설정 을 참조하십시오.
- WSL 인스턴스에 로컬로 설치된 ClickHouse 서버
- ClickHouse Cloud 인스턴스
Microsoft Power BI 통합
- ClickHouse Connector(권장) 내부적으로 ODBC를 사용하지만 DirectQuery 모드를 지원합니다. 이 모드에서는 Power BI가 SQL 쿼리를 자동으로 생성하고 각 시각화 또는 필터 작업에 필요한 데이터만 가져옵니다.
- ODBC Connector Import 모드만 지원합니다. Power BI는 사용자가 제공한 쿼리를 실행하거나 전체 테이블을 선택한 후, 전체 결과 집합을 Power BI로 가져옵니다. 이후 갱신 시에는 전체 데이터셋을 다시 가져옵니다.
SQL 호환성 설정
SqlCompatibilitySettings를 제공합니다.
SqlCompatibilitySettings 구성 매개변수로 활성화되는 ClickHouse 설정
value 컬럼이 널 허용인 경우 이 쿼리는 다음 메시지와 함께 실패합니다.
cast_keep_nullable을 활성화하면 CAST가 인수의 널 허용 여부를 유지하도록 동작이 변경됩니다. 이 설정을 사용하면 이러한 유형의 변환에서 ClickHouse의 동작이 다른 데이터베이스 및 SQL 표준에 더욱 가까워집니다.
prefer_column_name_to_alias
ClickHouse에서는 같은 SELECT 목록에 있는 표현식을 별칭으로 참조할 수 있습니다. 예를 들어, 다음 쿼리는
반복을 줄여 더 쉽게 작성할 수 있습니다:
SELECT 목록에서 이와 같은 방식으로 별칭을 해석하지 않으므로
이러한 쿼리에서 오류가 발생합니다. 별칭의 이름이 컬럼 이름과 같을 때 문제가 가장 두드러집니다. 예시:
avg(value)는 어떤 value를 집계해야 할까요? 기본적으로 ClickHouse는 별칭을 우선하므로 사실상
중첩 집계가 되며, 이는 대부분의 도구가 기대하는 동작이 아닙니다.
이 문제는 단독으로는 드물게 발생하지만, 일부 BI 도구는 컬럼 별칭을 재사용하는 서브쿼리가 포함된 쿼리를 생성합니다. 예를
들어 Power BI는 다음과 유사한 쿼리를 자주 생성합니다:
C1을 참조하면 다음과 같은 오류가 발생할 수 있습니다:
C1을
서브쿼리의 컬럼으로 처리합니다. ClickHouse에서도 유사한 동작을 유지하고 이러한 쿼리를 오류 없이 실행할 수 있도록 ODBC 드라이버는
prefer_column_name_to_alias를 활성화합니다.
대부분의 경우 이러한 설정을 활성화해도 문제없습니다. 하지만 readonly 설정이 1인 사용자는
SELECT 쿼리에서도 어떤 설정도 변경할 수 없습니다. 이러한 사용자에게 SqlCompatibilitySettings를 활성화하면
오류가 발생합니다. 다음 섹션에서는 이 구성 매개변수를 읽기 전용 사용자에게도 적용하는 방법을 설명합니다.
읽기 전용 사용자에게 SQL 호환성 설정 적용하기
SqlCompatibilitySettings 매개변수를 활성화한 상태로 ODBC 드라이버를 통해 ClickHouse에 연결하면, readonly 설정이 1인 사용자는 드라이버가 쿼리 설정을 수정하려고 시도하므로 오류가 발생합니다:
SELECT 쿼리에 대해서도 설정을 변경할 수 없으므로 이 문제가 발생합니다.
해결 방법은 여러 가지가 있습니다.
옵션 1. readonly를 2로 설정
가장 간단한 방법입니다. readonly를 2로 설정하면 사용자를 읽기 전용
모드로 유지하면서도 설정을 변경할 수 있습니다.
readonly를 2로 설정하는 것이 이 문제를 해결하는 가장 쉽고 권장되는 방법입니다. 이 방법이
효과가 없으면 두 번째 옵션을 사용하십시오.
옵션 2. ODBC 드라이버가 설정하는 값에 맞게 사용자 설정을 변경합니다.
이 방법도 간단합니다. ODBC 드라이버가 설정하려는 값과 일치하도록 사용자 설정을 업데이트하십시오.