Metabase 一款开源的轻量 BI 工具,帮助您快速从数据库中分析数据、生成可视化报表。本文将介绍如何使用 Metabase 连接至 ByteHouse。
执行以下命令,使用 Docker 运行 Metabase。执行后,在浏览器中打开 http://localhost:3000/ 以访问 Metabase 界面。具体用法可参考 Metabase 官方网站。
docker run -d -p 3000:3000 --name metabase metabase/metabase
下载 ClickHouse Metabase 插件 jar 文件。
由于 Metabase 通过 Docker 容器部署,所以需要进入容器并下载 ClickHouse Metabase 插件 jar 文件到 plugins 目录下。
使用时,请将 <container_id> 替换为您实际使用的容器 ID,您可通过执行 docker ps 查看运行中的容器。
docker exec -it <container_id> bash cd plugins wget https://github.com/ClickHouse/metabase-clickhouse-driver/releases/download/1.3.3/clickhouse.metabase-driver.jar
退出并重启容器,确保 ClickHouse Metabase 插件可生效。
docker restart <container_id>
重新打开 http://localhost:3000/ 以访问 Metabase 界面。
这里以 SSB 数据集为例,执行下面的命令,使用 dbgen(Database Generator)工具生成数据。请注意,如果您不需要执行性能测试,您可以缩减数据量,或在 ByteHouse 中按需创建数据库、表,详情请参考新建数据库/表。
./dbgen -s 1 -T c ./dbgen -s 1 -T l ./dbgen -s 1 -T p ./dbgen -s 1 -T s
目前您需要在 ByteHouse 后端手动创建系统视图(自动化创建逻辑正在开发中),该视图将为 Metadata 提供元数据查找能力。Metabase 需要将以下视图用于同步数据库元数据和表元数据。
使用时,请注意将语句中的 <account_id> 替换为您实际的火山引擎账号 ID,您可在火山引擎控制台,单击右上角个人中心,查看并复制账号 ID。
CREATE DATABASE `<account_id>.system`; -- 需执行 USE 步骤,否则系统将在默认数据库中建表 USE `<account_id>.system`; CREATE VIEW settings AS SELECT `name`, `value`, `changed`, `description`, `min`, `max`, `readonly`, `type` FROM system.settings CREATE VIEW databases as SELECT substring_index(name, '.', -1) `name`, `engine`, `data_path` , `metadata_path` , `uuid` FROM system.databases WHERE system.databases.name LIKE '<account_id>%' CREATE VIEW tables as SELECT substring_index(database, '.', -1) `database`, name, uuid, engine, is_temporary, data_paths, metadata_path, metadata_modification_time, dependencies_database, dependencies_table, create_table_query, engine_full, partition_key, sorting_key, primary_key, sampling_key, storage_policy, total_rows, total_bytes, lifetime_rows, lifetime_bytes, comment FROM system.tables WHERE system.tables.database LIKE '<account_id>%' CREATE VIEW columns as SELECT substring_index(database, '.', -1) `database`, table, name, type, position, default_kind, default_expression, data_compressed_bytes, data_uncompressed_bytes, marks_bytes, comment, is_in_partition_key, is_in_sorting_key, is_in_primary_key, is_in_sampling_key, compression_codec FROM system.columns WHERE system.columns.database LIKE '<account_id>%' CREATE VIEW mutations as SELECT substring_index(database, '.', -1) `database`, `table` , `mutation_id` , `query_id` , `command` , `create_time` , `block_numbers.partition_id` , `block_numbers.number`, `parts_to_do_names` , `parts_to_do` , `is_done` , `latest_failed_part` , `latest_fail_time` , `latest_fail_reason` FROM cnch(server, system.mutations) WHERE database LIKE '<account_id>%'
单击右上角的齿轮图标,然后选择管理员 Admin Settings,访问您的 Metabase 管理页面。
单击添加数据库 Add a database。或者,您可以单击“数据库 Databases”选项卡并选择“添加数据库 Add database”按钮。
如果您的驱动程序安装成功,您将在数据库类型 Database type 的下拉菜单中看到 ClickHouse:
为您的数据库指定一个显示名称 Display name,您可自定义名称。
输入 ByteHouse 数据库的连接详细信息。
参数 | 配置说明 |
|---|---|
Host | ByteHouse 集群连接地址。您可在 ByteHouse 企业版控制台的集群管理 > 集群名称 > 基本信息 > 网络信息中查看并复制公网网关地址,详情请参见获取集群连接信息。 |
Port | ByteHouse 集群连接端口,设置为 8123,如果您启用了 SSL,也可设置为 8443。 |
Username | ByteHouse 用户名,支持使用 IAM 子用户和数据库用户访问,二者的区别可参见用户类型。
|
Password | ByteHouse 密码。您可登录 ByteHouse 企业版控制台,单击右上角 ByteHouse 个人中心,单击账号管理,查看并复制集群连接账号中的密码,详情请参见获取集群连接信息。 |
Database | 需连接的 ByteHouse 数据库名。 |
Use a secure connection (SSL) | 是否启用安全连接(SSL)。 |
单击“保存”按钮,Metabase 将扫描数据库中的表,您可使用 Metabase 对获取的 ByteHouse 数据进行分析,更堵数据分析的操作请参见 Metabase 官方文档。