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/T6L0mysql> 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”:

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

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

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

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

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

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

现在,你可以继续发布数据集并创建新的可视化了!
已知限制
- SPICE 导入未能如预期正常工作;请改用 Direct Query 模式。参见 #58553。