目标
- 将 OpenCelliD 数据加载到 ClickHouse
- 将 Apache Superset 连接到 ClickHouse
- 基于数据集中的数据构建仪表板
获取数据集
- ClickHouse Cloud
- 自管理
加载样本数据
ClickHouse Cloud 提供了一种从 S3 加载此数据集的一键方式。登录你的 ClickHouse Cloud 组织,或在 ClickHouse.cloud 创建免费试用账户。选择你的服务,然后依次点击Data sources -> Predefined sample data。在 Sample data 选项卡中选择 Cell Towers 数据集,然后点击 Load data:查看 cell_towers 表的 schema
连接到 SQL 控制台
连接到 SQL 控制台
在您的 ClickHouse Cloud 服务列表中,点击某个服务。这会将您跳转到 SQL 控制台。
DESCRIBE 的输出。在本指南后续部分中,我们将说明这些字段类型的选择原因。运行几个示例查询
- 按类型统计的蜂窝基站数量:
- 按移动国家代码 (MCC)分类的蜂窝基站:
用例:整合地理数据
pointInPolygon 函数。
- 创建一个用于存储 Polygon 的表:
- ClickHouse Cloud
- 自管理
- 这是莫斯科的大致边界 (不包括“新莫斯科”) :
- 查看莫斯科有多少个蜂窝基站:
查看 schema
此表的 schema 在设计时兼顾了磁盘上的紧凑存储和查询速度。
radio数据存储为Enum8(UInt8) ,而不是字符串。mcc(即 Mobile country code) 存储为UInt16,因为其取值范围已知为 1 - 999。lon和lat的类型均为Float64。
使用 Apache Superset 构建可视化
pip install clickhouse-connect 添加 ClickHouse Connect 即可。如果你还需要安装 Superset,请直接打开下方的 在 Docker 中启动 Apache Superset。
在 Docker 中启动 Apache Superset
在 Docker 中启动 Apache Superset
Superset 提供了使用 Docker Compose 在本地安装 Superset的说明。从 GitHub 检出 Apache Superset 仓库后,你可以运行最新的开发代码,也可以运行特定标签对应的版本。我们建议使用 2.0.0 版本,因为这是最新一个未标记为
pre-release 的发布版本。在运行 docker compose 之前,需要先完成以下几项任务:- 添加官方 ClickHouse Connect 驱动程序
- 获取一个 Mapbox API key,并将其添加为环境变量 (可选)
- 指定要运行的 Superset 版本
官方 ClickHouse Connect 驱动程序
要让 ClickHouse Connect 驱动程序在 Superset 部署中可用,请将其添加到本地 requirements 文件中:Mapbox
这是可选项。即使没有 Mapbox API key,你仍然可以在 Superset 中绘制位置数据,但界面会提示你应添加一个 key,并且地图背景图像会缺失 (你只能看到数据点,看不到地图底图) 。如果你想使用它,Mapbox 提供了免费层级。指南中让你创建的一些示例可视化会使用位置数据,例如经度和纬度。Superset 内置了对 Mapbox 地图的支持。要使用 Mapbox 可视化功能,你需要一个 Mapbox API key。注册 Mapbox 免费层级,并生成一个 API key。让 Superset 可以使用该 API key:部署 Superset 2.0.0 版本
要部署 2.0.0 发布版本,请运行:- 将你的 ClickHouse 服务添加为 Superset 数据库
- 将 cell_towers 表添加为 Superset 数据集
- 创建一些 图表
- 将这些图表添加到 仪表板
将您的 ClickHouse 服务添加为 Superset 数据库
你的 ClickHouse Cloud 服务的连接信息可在 ClickHouse Cloud 控制台中查看。
选择一个服务,然后点击 Connect:
选择 HTTPS。连接信息会显示在示例
curl 命令中。
如果你使用的是自管理 ClickHouse,则连接信息由你的 ClickHouse 管理员配置。
在 Superset 中,添加数据库时,先选择数据库类型,然后填写连接详情。打开 Superset,找到 +,在菜单中依次选择 Data 和 Connect database。
从列表中选择 ClickHouse Connect:
如果选项中没有 ClickHouse Connect,则需要先安装它。安装命令为
pip install clickhouse-connect,更多信息可参见此处。添加连接信息
将表 cell_towers 添加为 Superset 数据集
default) 以及 cell_towers 表:
创建几个图表
cell_towers) 和图表类型。由于 OpenCelliD 数据集提供了蜂窝基站的经纬度坐标,我们将创建一个 Map 图表。deck.gL Scatterplot 类型非常适合这个数据集,因为它能很好地在地图上呈现高密度数据点。
指定地图使用的查询
lon 和 lat 分别包含经度和纬度:
添加一个 mcc = 204 的过滤器 (或替换为其他任意 mcc 值) :
添加一个 radio = 'UMTS' 的过滤器 (或替换为其他任意 radio 值,可在 DESCRIBE TABLE cell_towers 的输出中查看可选值) :
这是对 radio = 'UMTS' 和 mcc = 204 进行过滤时的完整图表配置:
点击 UPDATE CHART 以生成可视化结果。