Apache Superset (下文简称Superset)是一个用于数据探索和数据可视化的开源软件应用程序,能够处理PB级的数据,本文为您介绍如何将Superset连接ByteHouse进行数据分析。
bytehouse-sqlalchemy
的ByteHouse Superset Connector
正在进行维护和更新,当前建议使用开源**ClickHouse Superset Connector
**来连接ByteHouse。ClickHouse Superset Connector
,因此您还需要使用ByteHouse clickhouse-connect支持包**对开源连接器进行修改支持。综上。您在安装Superset后连接ByteHouse时,需同时使用开源的ClickHouse Superset Connector
、ByteHouse clickhouse-connect支持包。
细分项 | 已验证版本/注意事项 |
---|---|
Superset | |
开源Clickhouse Superset Connector | |
ByteHouse clickhouse-connect支持包 | |
Python | Python3.8 |
已获取ByteHouse帐户 API Token | API Token的获取方式请参阅文档 获取 API Token。 |
登录并进入ByteHouse控制台后,在顶部租户管理的基本信息页面,查看网络组配置,确认已绑定VPC,并绑定了公网域名。
进入顶部租户管理的连接信息页面,在API Key模块新建一个API key,并将API Key保存至本地,用于后续的配置使用。
说明
一个子账号最多支持创建两个API Key,如果此前您有已创建好的API key,也可直接使用已创建好的API Key。
进入顶部租户管理的参数设置页面,查看已设置了默认计算组,并确保此计算组是正在运行的状态,未被停止。后续对接ByteHouse后的数据查询等操作,即会使用此处配置的默认计算组。
Superset
官方文档,以下为一个简单的安装操作示例。
通过pip
安装:
pip install https://github.com/bytehouse-docs/ecosystem/raw/main/dist/clickhouse-connect/clickhouse-connect-0.8.6+bytehouse.tar.gz
在Docker
中安装:
git clone https://github.com/apache/superset.git cd superset git checkout 4.1.0 echo "https://github.com/bytehouse-docs/ecosystem/raw/main/dist/clickhouse-connect/clickhouse-connect-0.8.6+bytehouse.tar.gz" >> ./docker/requirements-local.txt docker compose -f docker-compose-image-tag.yml up
http://localhost:8088
登录Superset
,默认用户名/密码为admin/admin。单击屏幕右上角的Settings页签并选择Database Connections。
单击+DATABASE
按钮创建新的数据库连接。
从可用数据库的下拉框中选择ClickHouse Connect(SuperSet)
。
如下图所示填写连接详细信息并单击CONNECT
按钮。
参数 | 配置说明 |
---|---|
HOST | 配置为ByteHouse的公网域名,格式为: |
PORT | 数据库端口号,配置为固定取值:8123。 |
DATABASE NAME | 配置为ByteHouse已创建的数据库名称。 |
USERNAME & PASSWORD | 登录ByteHouse数据库的用户名和密码。
|
DISPLAY NAME | 自定义连接器的显示名称。 |
ADDITIONAL PARAMETERS | 配置为: |
SSL | 打开SSL开关。 注意 ByteHouse 需要加密认证,从而保护数据安全,因此您需打开SSL。 |
(可选)如果您有多个计算组,希望后续Superset查询ByteHouse数据时使用指定计算组,您可以在ADDITIONAL PARAMETERS指定具体的计算组。
配置示例如下:
ADDITIONAL PARAMETERS | secure=True&compress=False&virtual_warehouse=vw-accountId-vwName |
---|
完成配置后单击CONNECT,完成连接器创建。
以下为您提供了一份测试数据,用于测试Superset连接ByteHouse的结果,并示例连接后通过Superset进行数据分析操作。
准备示例数据。在ByteHouse中执行以下查询以准备示例数据。
CREATE DATABASE test_db; CREATE TABLE test_db.online_store_sales ( order_id String, order_date DateTime, customer_id String, product_id String, category String, sub_category String, region String, sales_amount Float64, quantity UInt32 ) ENGINE = CnchMergeTree() PARTITION BY toYYYYMM(order_date) ORDER BY (order_date, customer_id); INSERT INTO test_db.online_store_sales VALUES ('OID001', '2024-11-01 10:00:00', 'CID001', 'PID001', 'Electronics', 'Smartphones', 'North America', 899.99, 2), ('OID004', '2024-11-02 09:20:00', 'CID004', 'PID004', 'Furniture', 'Desks', 'North America', 1599.99, 5), ('OID005', '2024-11-02 14:10:00', 'CID005', 'PID005', 'Home Decor', 'Lamps', 'South America', 49.99, 100), ('OID006', '2024-11-02 17:50:00', 'CID006', 'PID006', 'Electronics', 'Tablets', 'Europe', 799.99, 7), ('OID007', '2024-11-03 11:00:00', 'CID007', 'PID007', 'Clothing', 'Jackets', 'Asia', 149.99, 25), ('OID008', '2024-11-03 13:40:00', 'CID008', 'PID008', 'Clothing', 'Shoes', 'Africa', 89.99, 50), ('OID010', '2024-11-04 19:30:00', 'CID010', 'PID010', 'Electronics', 'Cameras', 'North America', 399.99, 3), ('OID013', '2024-11-05 08:50:00', 'CID013', 'PID013', 'Electronics', 'Headphones', 'North America', 99.99, 100), ('OID014', '2024-11-05 11:30:00', 'CID014', 'PID014', 'Furniture', 'Coffee Tables', 'Asia', 499.99, 50), ('OID015', '2024-11-05 14:00:00', 'CID015', 'PID015', 'Clothing', 'T-Shirts', 'Europe', 19.99, 300), ('OID016', '2024-11-06 09:40:00', 'CID016', 'PID016', 'Furniture', 'Bookshelves', 'North America', 999.99, 10), ('OID017', '2024-11-06 13:25:00', 'CID017', 'PID017', 'Electronics', 'Laptops', 'Europe', 2299.99, 4), ('OID020', '2024-11-07 14:00:00', 'CID020', 'PID020', 'Home Decor', 'Rugs', 'Africa', 199.99, 20);
在Superset中创建数据集。
创建Superset图表。
从Charts选项卡中,选择先前创建的数据集并选择Line Chart作为图表类型。继续单击CREATE NEW CHART按钮。
参考下图配置图表的参数,即可得到查询到的ByteHouse数据结果图。
图表参数 | 配置结果示意 |
---|---|