Перейти к основному содержанию
Перейти к основному содержанию

Tableau Online

Tableau Online может подключаться к ClickHouse Cloud или локальному развертыванию ClickHouse через интерфейс MySQL, используя официальный источник данных MySQL.

Настройка ClickHouse Cloud

Select Connect your app

After creating your ClickHouse Cloud Service, on the Connect your app screen, select MySQL from the drop down.

ClickHouse Cloud credentials screen showing MySQL interface selection dropdown

Enable the MySQL interface

Toggle the switch to enable the MySQL interface for this specific service. This will expose port 3306 for this service and prompt you with a MySQL connection screen that includes your unique MySQL username.

ClickHouse Cloud MySQL interface enabling toggle and connection details

Alternatively, in order to enable the MySQL interface for an existing service:

Select Connect

Ensure your service is in Running state then click on the service you want to enable the MySQL interface for. Select "Connect" from the left menu:

ClickHouse Cloud service connection screen with Connect option highlighted

Choose MySQL

Select MySQL from the Connect With drop down.

ClickHouse Cloud connection screen showing MySQL option selection

Enable the MySQL interface

Toggle the switch to enable the MySQL interface for this specific service. This will expose port 3306 for this service and prompt you with your MySQL connection screen that include your unique MySQL username.

ClickHouse Cloud connection screen with MySQL interface enabled showing connection details

Creating a readonly MySQL user in ClickHouse Cloud

ClickHouse Cloud automatically creates a mysql4<subdomain> user that shares the same password as the default user. The <subdomain> portion corresponds to the first part of your ClickHouse Cloud hostname.

This username format is required for compatibility with tools that establish secure connections but don't include SNI (Server Name Indication) data in their TLS handshake. Without SNI information, the system cannot perform proper internal routing, so the subdomain hint embedded in the username provides the necessary routing information. The MySQL console client is an example of a tool that requires this.

Совет

A recommended best practice is to create a new readonly MySQL user.

Примечание

For a ClickHouse Cloud hostname like foobar.us-east1.aws.clickhouse.cloud, the <subdomain> part equals to foobar, and a custom MySQL username could look like mysql4foobar_team1.

Create a readonly settings profile

Create a settings profile to apply to your readonly user, setting the readonly setting to 1:

CREATE SETTINGS PROFILE readonly_profile SETTINGS readonly = 1

Create a new readonly MySQL user

Create a user with a name following this format:

mysql4<subdomain>_<username>

Apply the readonly_profile to the new user and make sure that the password is in double SHA1 format. For example:

CREATE USER mysql4foobar_readonly
IDENTIFIED WITH double_sha1_password BY 'YourPassword42$'
SETTINGS PROFILE 'readonly_profile';

Grant the new user permissions to access the desired tables

Grant the new user the necessary permissions to interact with the desired tables or databases. For example, if you want to grant access to system.query_log only:

GRANT SELECT ON system.query_log TO mysql4foobar_readonly;
Примечание

For the readonly user, make sure to only grant SELECT permissions to the tables you want to access.

The newly created user can be used to connect to your ClickHouse Cloud service with the MySQL interface.

Troubleshooting multiple MySQL users in ClickHouse Cloud

If you created a new MySQL user, and you see the following error while connecting via MySQL CLI client:

ERROR 2013 (HY000): Lost connection to MySQL server at 'reading authorization packet', system error: 54

In this case, ensure that the username follows the mysql4<subdomain>_<username> format, as described (above).

Настройка сервера ClickHouse в локальной инфраструктуре

Please refer to the official documentation on how to set up a ClickHouse server with enabled MySQL interface.

Aside from adding an entry to the server's config.xml

<clickhouse>
    <mysql_port>9004</mysql_port>
</clickhouse>

it is also required to use Double SHA1 password encryption for the user that will be using MySQL interface.

Generating a random password encrypted with Double SHA1 from the shell:

PASSWORD=$(base64 < /dev/urandom | head -c16); echo "$PASSWORD"; echo -n "$PASSWORD" | sha1sum | tr -d '-' | xxd -r -p | sha1sum | tr -d '-'

The output should look like the following:

LZOQYnqQN4L/T6L0
fbc958cc745a82188a51f30de69eebfc67c40ee4

The first line is the generated password, and the second line is the hash we could use to configure ClickHouse.

Here is an example configuration for mysql_user that uses the generated hash:

/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>

Replace password_double_sha1_hex entry with your own generated Double SHA1 hash.

Additionally, it is recommended to use use_mysql_types_in_show_columns to show the native MySQL types instead of ClickHouse ones in SHOW [FULL] COLUMNS query results, which allows BI tools to properly introspect the database schema when using MySQL connectors.

For example:

/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>

or assign it to a different profile instead of the default one.

If you have the mysql binary available, you can test the connection from the commandline. Using the sample username (mysql_user) and password (LZOQYnqQN4L/T6L0) from above the command line would be:

mysql --protocol tcp -h localhost -u mysql_user -P 9004 --password=LZOQYnqQN4L/T6L0
mysql> show databases;
+--------------------+
| name               |
+--------------------+
| INFORMATION_SCHEMA |
| default            |
| information_schema |
| system             |
+--------------------+
4 rows in set (0.00 sec)
Read 4 rows, 603.00 B in 0.00156 sec., 2564 rows/sec., 377.48 KiB/sec.

Finally, configure the Clickhouse Server to listen on the desired IP address(es). For example, in config.xml, uncomment out the following to listen on all addresses:

<listen_host>::</listen_host> 

Подключение Tableau Online к ClickHouse (on-premise, без SSL)

Войдите в свою учетную запись Tableau Cloud и добавьте новый источник данных (Published Data Source).

Интерфейс Tableau Online с кнопкой «New» для создания опубликованного источника данных

Выберите «MySQL» из списка доступных коннекторов.

Экран выбора коннектора Tableau Online с выделенной опцией MySQL

Укажите параметры подключения, собранные при настройке ClickHouse.

Экран настройки подключения MySQL в Tableau Online с полями для сервера, порта, базы данных и учетных данных

Tableau Online проанализирует базу данных и предоставит список доступных таблиц. Перетащите нужную таблицу на рабочую область справа. Дополнительно вы можете нажать «Update Now», чтобы просмотреть данные, а также при необходимости скорректировать определенные при анализе типы полей или их имена.

Страница источника данных Tableau Online с таблицами базы данных слева и рабочей областью справа с поддержкой перетаскивания

После этого останется лишь нажать «Publish As» в правом верхнем углу, и вы сможете использовать созданный набор данных в Tableau Online как обычно.

NB: если вы хотите использовать Tableau Online в сочетании с Tableau Desktop и делиться наборами данных ClickHouse между ними, убедитесь, что вы используете Tableau Desktop с тем же стандартным коннектором MySQL, следуя руководству по настройке, которое отображается здесь, если выбрать MySQL в выпадающем списке Data Source. Если у вас Mac на процессоре M1, ознакомьтесь с этой темой по устранению неполадок для обходного варианта установки драйвера.

Подключение Tableau Online к ClickHouse (облачное или локальное развертывание с SSL)

Так как невозможно указать SSL-сертификаты через мастер настройки подключения MySQL в Tableau Online, единственный способ — использовать Tableau Desktop для настройки подключения, а затем опубликовать его в Tableau Online. Однако этот процесс довольно простой.

Запустите Tableau Desktop на компьютере под управлением Windows или macOS и выберите "Connect" -> "To a Server" -> "MySQL". Скорее всего, сначала потребуется установить драйвер MySQL на ваш компьютер. Вы можете сделать это, следуя инструкции по установке, которая отображается здесь, если выбрать MySQL в выпадающем списке источников данных (Data Source). Если у вас Mac на базе M1, посмотрите эту тему по устранению неполадок для обходного решения по установке драйвера.

Интерфейс Tableau Desktop с меню Connect и выделенной опцией MySQL

Примечание

В интерфейсе настройки подключения MySQL убедитесь, что опция "SSL" включена. SSL-сертификат ClickHouse Cloud подписан центром сертификации Let's Encrypt. Вы можете скачать этот корневой сертификат здесь.

Укажите учетные данные пользователя MySQL для вашего экземпляра ClickHouse Cloud и путь к скачанному корневому сертификату.

Диалог подключения MySQL в Tableau Desktop с включенной опцией SSL и полями для сервера, имени пользователя, пароля и сертификата

Выберите нужные таблицы как обычно (аналогично Tableau Online) и выберите "Server" -> "Publish Data Source" -> Tableau Cloud.

Tableau Desktop с меню Server и выделенной опцией Publish Data Source

ВАЖНО: в параметрах "Authentication" необходимо выбрать "Embedded password".

Диалог публикации Tableau Desktop с параметрами Authentication и выбранной опцией Embedded password

Дополнительно включите опцию "Update workbook to use the published data source".

Диалог публикации Tableau Desktop с отмеченной опцией 'Update workbook to use the published data source'

Наконец, нажмите "Publish", и ваш источник данных со встроенными учетными данными будет автоматически открыт в Tableau Online.

Известные ограничения (ClickHouse 23.11)

Все известные ограничения были устранены в ClickHouse 23.11. Если вы столкнётесь с другими проблемами совместимости, пожалуйста, свяжитесь с нами или создайте новый issue.