Skip to content
ClickHouse Docs
ClickHouse DocsClickHouse Docs

QuickSight

支持 ClickHouse

QuickSight 可通过 MySQL 接口,使用官方 MySQL 数据源和 Direct Query 模式连接到本地部署的 ClickHouse (23.11+) 。

本地部署 ClickHouse 服务器设置

有关如何配置启用 MySQL 接口的 ClickHouse 服务器,请参阅官方文档

除了在服务器的 config.xml 中添加一个条目之外

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

对于将通过 MySQL 接口 连接的用户,还必须使用 Double SHA1 密码加密

在 shell 中生成一个经 Double SHA1 加密的随机密码:

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

输出应类似于以下内容:

LZOQYnqQN4L/T6L0
fbc958cc745a82188a51f30de69eebfc67c40ee4

第一行是生成的密码,第二行是可用于配置 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 条目替换为你自己生成的 Double SHA1 哈希值。

QuickSight 要求在 MySQL user 的 profile 中添加若干额外设置。

/etc/clickhouse-server/users.d/mysql_user.xml

<profiles>
    <default>
        <prefer_column_name_to_alias>1</prefer_column_name_to_alias>
        <mysql_map_string_to_text_in_show_columns>1</mysql_map_string_to_text_in_show_columns>
        <mysql_map_fixed_string_to_text_in_show_columns>1</mysql_map_fixed_string_to_text_in_show_columns>
    </default>
</profiles>

不过,建议将其分配给另一个 profile,供你的 MySQL user 使用,而不要使用默认的 profile。

最后,配置 ClickHouse 服务器 使其监听所需的 IP 地址。 在 config.xml 中,取消注释以下内容以监听所有地址:

<listen_host>::</listen_host>

如果你本机可用 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 rows in set (0.00 sec)
Read 4 rows, 603.00 B in 0.00156 sec., 2564 rows/sec., 377.48 KiB/sec.

将 QuickSight 连接到 ClickHouse

首先,前往 https://quicksight.aws.amazon.com,进入 Datasets,然后点击“New dataset”:

Amazon QuickSight 仪表板,显示 Datasets 部分中的 New dataset 按钮

搜索 QuickSight 内置的官方 MySQL 连接器 (名称就是 MySQL) :

QuickSight 数据源选择界面,搜索结果中高亮显示 MySQL

填写连接信息。请注意,MySQL 接口的默认端口是 9004, 具体端口也可能因服务器配置而异。

QuickSight MySQL 连接配置表单,包含 hostname、端口、database 和凭据字段

现在,你有两种从 ClickHouse 拉取数据的方式。首先,你可以从列表中选择一张表:

QuickSight 表选择界面,显示来自 ClickHouse 的可用数据库表

或者,你也可以指定自定义 SQL 来拉取数据:

QuickSight 自定义 SQL 查询编辑器,用于从 ClickHouse 拉取数据

点击“Edit/Preview data”后,你应该可以查看自动识别出的表结构;如果你选择的是这种方式,也可以调整自定义 SQL:

QuickSight 数据预览,显示包含列和样本数据的表结构

请确保在 UI 左下角选中了“Direct Query 模式”:

QuickSight 界面,左下角高亮显示 Direct Query 模式选项

现在,你可以继续发布数据集并创建新的可视化了!

已知限制

  • SPICE 导入未能如预期正常工作;请改用 Direct Query 模式。参见 #58553
Navigation