이 드라이버는 현재 활발히 개발되고 있습니다. 일부 ODBC 기능은 아직 완전히 구현되지 않았을 수 있습니다. 현재 버전은
필수적인 연결성과 핵심 ODBC 기능을 제공하는 데 중점을 두고 있으며, 추가 기능은 향후
릴리스에서 제공될 예정입니다.피드백은 매우 중요하며, 새로운 기능과 개선 사항의 우선순위를 정하는 데 큰 도움이 됩니다. 제약 사항,
누락된 기능, 또는 예상치 못한 동작을 발견한 경우 아래 이슈 트래커를 통해 관찰한 내용이나 기능 요청을
공유해 주십시오.
https://github.com/ClickHouse/clickhouse-odbc/issues
Windows에 설치하기
테스트
$reader.GetValue(0)를 실행하면 ClickHouse
서버 버전이 표시되어야 합니다.
구성 매개변수
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 드라이버가 설정하려는 값과 미리 일치하게 하십시오.