Power BI
Microsoft Power BI 可以从 ClickHouse Cloud 或自托管部署中查询数据,或将数据加载到内存中。
可以使用多种 Power BI 产品形态来可视化数据:
- Power BI Desktop:用于创建仪表板和可视化的 Windows 桌面应用程序
- Power BI Service:在 Azure 中以 SaaS 形式提供,用于托管在 Power BI Desktop 中创建的仪表板
Power BI 要求先在 Desktop 版本中创建仪表板,然后将其发布到 Power BI Service。
本教程将指导完成以下步骤:
- 安装 ClickHouse ODBC 驱动
- 在 Power BI Desktop 中安装 ClickHouse Power BI Connector
- 从 ClickHouse 查询数据并在 Power BI Desktop 中进行可视化
- 为 Power BI Service 设置本地数据网关
先决条件
安装 Power BI
本教程假定您已在 Windows 机器上安装了 Microsoft Power BI Desktop。您可以在此处下载并安装 Power BI Desktop。
我们建议将 Power BI 更新到最新版本。ClickHouse Connector 从版本 2.137.751.0 起默认可用。
准备 ClickHouse 连接信息
连接到 ClickHouse 实例时,您需要以下信息:
- Hostname - ClickHouse 主机名
- Username - 用户名(用户凭证)
- Password - 该用户的密码
- Database - 要连接的实例上的数据库名称
Power BI 桌面版
要在 Power BI Desktop 中开始查询数据,你需要完成以下步骤:
- 安装 ClickHouse ODBC 驱动程序
- 找到 ClickHouse 连接器
- 连接到 ClickHouse
- 查询并可视化数据
安装 ODBC 驱动程序
下载最新的 ClickHouse ODBC 发布版本。
运行提供的 .msi 安装程序,并按照向导提示完成安装。

Debug symbols 为可选项,并非必需
验证 ODBC 驱动程序
驱动程序安装完成后,你可以通过以下方式验证安装是否成功:
在开始菜单中搜索 ODBC,并选择 “ODBC Data Sources (64-bit)”。

确认列表中已显示 ClickHouse 驱动程序。

查找 ClickHouse 连接器
在 Power BI Desktop 版本 2.137.751.0 中提供
在 Power BI Desktop 启动界面上,单击 “Get Data”。

搜索 “ClickHouse”。

连接到 ClickHouse
选择该连接器,并输入 ClickHouse 实例的连接信息:
- Host(必填)- 实例的域名/地址,请确保不要添加任何前缀或后缀。
- Port(必填)- 实例端口。
- Database - 数据库名称。
- Options - 任意 ODBC 选项,如 ClickHouse ODBC GitHub 页面 中所列。
- Data Connectivity mode - DirectQuery

我们建议选择 DirectQuery,以便直接在 ClickHouse 上执行查询。
如果你的使用场景数据量较小,可以选择导入模式(import mode),所有数据都会加载到 Power BI 中。
- 指定用户名和密码

查询和可视化数据
最后,你应该可以在 Navigator 视图中看到数据库和表。选择所需的表并单击 “Load”, 即可从 ClickHouse 导入数据。

导入完成后,你的 ClickHouse 数据将在 Power BI 中像平常一样可供访问和使用。
Power BI 服务
若要使用 Microsoft Power BI 服务,您需要创建一个本地数据网关。
关于如何配置自定义连接器的更多信息,请参阅 Microsoft 关于在本地数据网关中使用自定义数据连接器的文档。
ODBC 驱动程序(仅导入)
我们推荐使用采用 DirectQuery 的 ClickHouse Connector。
在本地数据网关实例上安装ODBC 驱动程序,并按照上文所述进行验证。
创建新的用户 DSN
当驱动程序安装完成后,就可以创建一个 ODBC 数据源。在开始菜单中搜索 ODBC,并选择 "ODBC Data Sources (64-bit)"。

我们需要在这里新增一个用户 DSN。点击左侧的 "Add" 按钮。

选择 ODBC 驱动程序的 Unicode 版本。

填写连接信息。

如果你使用的是启用 SSL 的部署(例如 ClickHouse Cloud 或自管实例),则需要在 SSLMode 字段中填写 require。
Host一项中必须始终省略协议(即不包含http://或https://)。Timeout是一个以秒为单位的整数。默认值:30 秒。
将数据导入 Power BI
如果你尚未安装 Power BI,下载并安装 Power BI Desktop。
在 Power BI Desktop 启动界面,点击 "Get Data"。

选择 "Other" -> "ODBC"。

从列表中选择之前创建的数据源。
如果你在创建数据源时没有指定凭据,系统会提示你输入用户名和密码。
最后,你应该可以在 Navigator 视图中看到数据库和表。选择需要的表并点击 "Load",即可从 ClickHouse 导入数据。

导入完成后,你的 ClickHouse 数据就可以像往常一样在 Power BI 中进行访问了。
优化大规模数据集处理
Power BI 是为传统的基于行的数据库及中等数据量场景设计的。在大规模(数十亿行)场景下使用 ClickHouse 时,为获得最佳性能,需要采用特定的架构模式。
Power BI 会自动生成带有嵌套子查询、复杂连接以及实时转换的 SQL 查询。这些模式在传统 SQL 数据库中表现良好,但在对像 ClickHouse 这样的大规模列式数据库进行查询时,可能效率不高。
针对大数据集的推荐做法: 不要直接查询原始表,而是在 ClickHouse 中为仪表板中的每个可视化创建专用的 materialized views。这将带来:
- 在任意数据量下都具有一致且快速的性能
- 降低 ClickHouse 集群负载
- 更可预测的成本
如果仪表板响应缓慢,请检查 ClickHouse 的 query_log,查看 Power BI 实际运行了哪些 SQL 查询。常见问题包括嵌套子查询、扫描整张表或低效的连接。一旦定位到问题,请创建能够解决这些特定问题的 materialized views。
实施最佳实践
预聚合策略
在多个聚合层级创建 materialized view:
- 为近期的明细仪表板创建按小时聚合
- 为历史趋势创建按天聚合
- 为长期报表创建按月汇总
- 为临时分析保留设置了适当生存时间 (TTL) 的原始数据
数据建模优化
- 定义与查询模式匹配的
ORDER BY排序键 - 对时序数据使用分区
- 将小型维度表转换为字典以实现高效查找
- 利用 PROJECTION 进一步优化查询
已知限制
UInt64
像 UInt64 或更大的无符号整数类型不会自动加载到数据集中,因为 Power BI 支持的最大整数类型为 Int64。
为确保正确导入数据,在导航器中点击“Load”按钮之前,请先点击“Transform Data”。
在此示例中,pageviews 表中有一个 UInt64 列,默认被识别为“Binary”。
“Transform Data”会打开 Power Query 编辑器,我们可以在其中重新设置该列的类型,例如将其设置为 Text。

完成后,点击左上角的“Close & Apply”,然后继续加载数据。