このドライバは現在も活発に開発が進められています。一部の ODBC 機能は、まだ完全には実装されていない可能性があります。現行バージョンは
基本的な接続機能と中核となる ODBC 機能の提供に重点を置いており、追加機能は今後の
リリースで対応予定です。皆様からのフィードバックは非常に重要であり、新機能や改善の優先順位付けに役立ちます。
制限事項、不足している機能、または予期しない動作に遭遇した場合は、以下の issue tracker から
ご意見や機能要望をお寄せください。
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: リクエストおよびレスポンスのペイロードに対する HTTP 圧縮を有効または無効にします。有効にすると、 帯域幅の使用量を削減し、大きな結果セットでのパフォーマンスを向上させることができます。SqlCompatibilitySettings: ClickHouse が従来のリレーショナル データベースにより近い動作をするようにするクエリ設定を有効にします。これは、たとえば Power BI のようなサードパーティ製ツールによってクエリが自動生成される場合に便利です。これらの ツールは通常、ClickHouse 固有の一部の動作を認識していないため、エラーや想定外の結果につながるクエリを生成することがあります。詳しくは、SqlCompatibilitySettings 設定パラメータで使用される ClickHouse settings を参照してください。
- WSL インスタンスにローカルインストールされた ClickHouse サーバー
- ClickHouse Cloud のインスタンス。
Microsoft Power BI インテグレーション
- ClickHouse Connector (推奨) 内部では ODBC を使用しますが、DirectQuery モードをサポートしています。このモードでは、Power BI が自動的に SQL クエリを生成し、 各可視化やフィルタ操作に必要なデータだけを取得します。
- ODBC コネクタ Import モードのみをサポートします。Power BI は、ユーザーが指定したクエリを実行するか (またはテーブル全体を選択して) 、 結果セット全体を Power BI にインポートします。以降の更新では、データセット全体が再インポートされます。
SQL 互換性設定
SqlCompatibilitySettings が用意されており、これを使用すると特定のクエリ設定を有効にして、ClickHouse の動作を標準 SQL により近づけることができます。
SqlCompatibilitySettings 構成パラメータによって有効になる ClickHouse の設定
valueカラムがNULLを許容している場合、このクエリは次のメッセージで失敗します:
cast_keep_nullable を有効にすると、CAST の動作が変わり、引数の Nullable 属性が保持されるようになります。これにより、
この種の変換における 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 compatibility settings を有効にする
SqlCompatibilitySettings パラメーターを有効にして ODBC ドライバ経由で ClickHouse に接続すると、ドライバがクエリ設定の変更を試みるため、
readonly 設定が 1 のユーザーではエラーが発生します:
SELECT クエリであっても設定の変更が許可されていないために発生します。
これを解決する方法はいくつかあります。
オプション 1. readonly を 2 に設定する
これが最も簡単な方法です。readonly を 2 に設定すると、ユーザーを read-only
モードのままにしつつ、設定を変更できるようになります。
readonly を 2 に設定することです。これで
うまくいかない場合は、2 つ目の方法を使用してください。
方法 2. ODBC ドライバ が設定しようとする設定に合わせて、ユーザー設定を変更する。
これも簡単です。ODBC ドライバ が設定しようとする内容にあらかじめ合うように、ユーザー設定を更新します。