Tableau Online
Tableau Onlineは、公式のMySQLデータソースを使用して、MySQLインターフェース経由でClickHouse CloudまたはオンプレミスのClickHouseセットアップに接続できます。
ClickHouse Cloud セットアップ
- ClickHouse Cloud Serviceを作成した後、認証情報画面でMySQLタブを選択します。
- この特定のサービスに対してMySQLインターフェースを有効にするためにスイッチを切り替えます。これにより、そのサービスでポート
3306
が公開され、ユニークなMySQLユーザー名を含むMySQL接続画面が表示されます。パスワードはサービスのデフォルトユーザーのパスワードと同じになります。
代わりに、既存のサービスに対してMySQLインターフェースを有効にするには: - サービスが
Running
状態であることを確認し、MySQLインターフェースを有効にするサービスの「接続文字列を表示」ボタンをクリックします。 - この特定のサービスに対してMySQLインターフェースを有効にするためにスイッチを切り替えます。これにより、デフォルトのパスワードを入力するよう求められます。
- パスワードを入力すると、このサービスのMySQL接続文字列が表示されます。
ClickHouse Cloudで複数のMySQLユーザーを作成する
デフォルトでは、mysql4<subdomain>
という組み込みユーザーがあり、これはdefault
ユーザーと同じパスワードを使用します。<subdomain>
部分はあなたのClickHouse Cloudホスト名の最初のセグメントです。このフォーマットは、安全な接続を実装しているがTLSハンドシェイクでSNI情報を提供しないツール(MySQLコンソールクライアントがその一例)で作業するために必要です。この場合、ユーザー名に追加のヒントを含めずには内部ルーティングを行うことができません。
これにより、MySQLインターフェースで使用する新しいユーザーを作成する際には、mysql4<subdomain>_<username>
のフォーマットを使用することを強くお勧めします。ここで、<subdomain>
はあなたのCloudサービスを識別するためのヒントであり、<username>
は選択した任意のサフィックスです。
ClickHouse Cloudホスト名がfoobar.us-east1.aws.clickhouse.cloud
の場合、<subdomain>
部分はfoobar
に相当し、カスタムMySQLユーザー名はmysql4foobar_team1
のようになります。
MySQLインターフェースを使用するために追加のユーザーを作成することができます。例えば、追加の設定を適用する必要がある場合などです。
オプション - カスタムユーザーに適用する設定プロフィールを作成します。たとえば、後で作成するユーザーで接続するときにデフォルトで適用される追加設定を持つ
my_custom_profile
:CREATE SETTINGS PROFILE my_custom_profile SETTINGS prefer_column_name_to_alias=1;
prefer_column_name_to_alias
は単なる例として使用されます。ここに他の設定を使用することもできます。以下のフォーマットを使用してユーザーを作成します:
mysql4<subdomain>_<username>
(上記参照)。パスワードはダブルSHA1形式である必要があります。例:CREATE USER mysql4foobar_team1 IDENTIFIED WITH double_sha1_password BY 'YourPassword42$';
または、このユーザーにカスタムプロフィールを使用したい場合:
CREATE USER mysql4foobar_team1 IDENTIFIED WITH double_sha1_password BY 'YourPassword42$' SETTINGS PROFILE 'my_custom_profile';
ここで、
my_custom_profile
は前に作成したプロフィールの名前です。新しいユーザーに必要なアクセス権を付与して、目的のテーブルまたはデータベースと対話できるようにします。権限を付与する例として、たとえば
system.query_log
のみのアクセスを付与したい場合:GRANT SELECT ON system.query_log TO mysql4foobar_team1;
作成したユーザーを使用して、MySQLインターフェースでClickHouse Cloudサービスに接続します。
ClickHouse Cloudでの複数のMySQLユーザーのトラブルシューティング
新しいMySQLユーザーを作成し、MySQL CLIクライアントで接続しているときに以下のエラーが表示された場合:
ERROR 2013 (HY000): Lost connection to MySQL server at 'reading authorization packet', system error: 54
この場合、ユーザー名がmysql4<subdomain>_<username>
形式に従っていることを確認してください。上記で説明されています。
オンプレミスのClickHouse サーバーセットアップ
ClickHouseサーバーにMySQLインターフェースを有効にする方法については公式ドキュメントを参照してください。
サーバーの config.xml
にエントリを追加することに加えて、
<clickhouse>
<mysql_port>9004</mysql_port>
</clickhouse>
MySQLインターフェースを利用するユーザーには、二重SHA1パスワード暗号化を使用することが必要です。
シェルから二重SHA1で暗号化されたランダムパスワードを生成するには以下を実行してください:
PASSWORD=$(base64 < /dev/urandom | head -c16); echo "$PASSWORD"; echo -n "$PASSWORD" | sha1sum | tr -d '-' | xxd -r -p | sha1sum | tr -d '-'
出力は以下のようになります:
LZOQYnqQN4L/T6L0
fbc958cc745a82188a51f30de69eebfc67c40ee4
最初の行は生成されたパスワードで、2行目はClickHouseの設定に使用するハッシュです。
以下は生成されたハッシュを使用するmysql_user
の設定例です:
/etc/clickhouse-server/users.d/mysql_user.xml
<users>
<mysql_user>
<password_double_sha1_hex>fbc958cc745a82188a51f30de69eebfc67c40ee4</password_double_sha1_hex>
<networks>
<ip>::/0</ip>
</networks>
<profile>default</profile>
<quota>default</quota>
</mysql_user>
</users>
password_double_sha1_hex
エントリを自分で生成した二重SHA1ハッシュに置き換えてください。
さらに、BIツールがMySQLコネクタを使用する際にデータベーススキーマを適切に調査できるように、SHOW [FULL] COLUMNS
クエリの結果でMySQLネイティブタイプを表示するために、use_mysql_types_in_show_columns
を使用することを推奨します。
例えば:
/etc/clickhouse-server/users.d/mysql_user.xml
<profiles>
<default>
<use_mysql_types_in_show_columns>1</use_mysql_types_in_show_columns>
</default>
</profiles>
または、デフォルト以外の異なるプロファイルに割り当てることもできます。
mysql
バイナリが利用可能であれば、コマンドラインから接続をテストできます。以下は、サンプルのユーザー名 (mysql_user
) とパスワード (LZOQYnqQN4L/T6L0
) を使用したコマンドです:
mysql --protocol tcp -h localhost -u mysql_user -P 9004 --password=LZOQYnqQN4L/T6L0
mysql> show databases;
+--------------------+
| name |
+--------------------+
| INFORMATION_SCHEMA |
| default |
| information_schema |
| system |
+--------------------+
4行取得しました (0.00 sec)
4行読み込み、603.00 B、0.00156秒で、2564行/秒、377.48 KiB/秒
最後に、ClickHouseサーバーを希望するIPアドレスでリッスンするように設定します。例えば、config.xml
の中で、すべてのアドレスでリッスンするために以下をアンコメントしてください:
<listen_host>::</listen_host>
Tableau OnlineからClickHouseに接続する(SSLなしオンプレミスの場合)
Tableau Cloudサイトにログインし、新しい公開データソースを追加します。

利用可能なコネクタのリストから「MySQL」を選択します。

ClickHouseのセットアップ中に収集した接続情報を指定します。

Tableau Onlineはデータベースを調べ、利用可能なテーブルのリストを提供します。目的のテーブルを右側のキャンバスにドラッグします。さらに、「今すぐ更新」をクリックしてデータをプレビューしたり、調査したフィールドのタイプや名前を微調整することもできます。

その後、右上の「Publish As」をクリックすれば、新しく作成したデータセットをTableau Onlineで通常通り使用できるようになります。
注:Tableau OnlineをTableau Desktopと組み合わせて使用し、ClickHouseデータセットを共有する場合は、こちらに表示されるセットアップガイドに従い、デフォルトのMySQLコネクタを使用するTableau Desktopを使用することを確認してください。こちらのデータソースドロップダウンでMySQLを選択した場合のみ表示されます。また、M1 Macをお使いの方は、こちらのトラブルシューティングスレッドでドライバインストールの方法を確認してください。
Tableau OnlineからClickHouseに接続する(CloudまたはオンプレミスセットアップでSSL使用)
Tableau OnlineのMySQL接続設定ウィザードではSSL証明書を提供することができないため、接続設定はTableau Desktopを使用して行い、それをTableau Onlineにエクスポートする必要があります。このプロセスは比較的簡単です。
WindowsまたはMacマシンでTableau Desktopを実行し、「接続」->「サーバーに接続」->「MySQL」を選択します。 おそらく、最初にマシンにMySQLドライバをインストールする必要があります。こちらのデータソースドロップダウンでMySQLを選択した場合に表示されるセットアップガイドに従ってください。また、M1 Macをお使いの方は、こちらのトラブルシューティングスレッドでドライバインストールの方法を確認してください。

MySQL接続設定画面で、「SSL」オプションが有効になっていることを確認してください。 ClickHouse CloudのSSL証明書は、LetsEncryptによって署名されています。 このルート証明書をこちらからダウンロードできます。
ClickHouse CloudインスタンスのMySQLユーザー資格情報と、ダウンロードしたルート証明書へのパスを提供します。

通常通り、目的のテーブルを選択し(Tableau Onlineと同様)、サーバー -> データソースの公開 -> Tableau Cloudを選択します。

重要:認証オプションで「埋め込みパスワード」を選択する必要があります。

さらに、「発行したデータソースを使用するようにワークブックを更新」を選択します。

最後に「発行」をクリックすると、埋め込まれた資格情報を持つデータソースがTableau Onlineで自動的に開かれます。
既知の制限事項 (ClickHouse 23.11)
既知の制限事項はすべてClickHouse 23.11
で修正されています。他の互換性の問題が発生した場合は、こちらからご連絡いただくか、新しい問題を作成してください。