重要
此功能在 Beta 版中。
BI 兼容性模式允许使用现有Azure Databricks连接器在Power BI中查询 Unity 目录指标视图。
本页介绍如何在Power BI中启用 BI 兼容性模式、工作原理、支持的方案和已知限制。
要求
- 使用 ADBC 驱动程序进行 Power BI 连接,该驱动程序在新连接中默认启用。 有关详细信息,请参阅 为 Power BI 配置 ADBC 或 ODBC 驱动程序。
- SQL 仓库。
- 如果使用 Power BI Desktop,则需要 v2.151.1052.0 或更高版本(2026 年 2 月版本)。
启用 BI 兼容性模式
在 Power BI Desktop 或服务中手动创建 new Azure Databricks 连接时启用 BI 兼容性模式。 Power BI连接必须使用 DirectQuery 模式。
- 在Power BI桌面或服务中,创建与Azure Databricks的新连接。
- 输入 Azure Databricks Server Hostname 和 SQL warehouse HTTP Path。
- 在“高级选项”下,将“指标视图 BI 兼容性模式”设置为“已启用”。
- 在 “数据连接”模式下,选择 “DirectQuery”。 不支持导入模式,因为它绕过指标视图所需的Azure Databricks查询重写机制。
- 完成连接设置。
有关手动创建Power BI连接的详细步骤,请参阅 Power BI service 或 Power BI Desktop 的连接指南。
BI 兼容性模式的工作原理
指标视图在Power BI中显示为常规表。 启用 BI 兼容模式后,Azure Databricks重写Power BI生成的查询,以正确查询指标视图。
BI 兼容性模式自动处理两种类型的查询:
-
Aggregation 查询:将度量值拖入Power BI视觉对象中的值字段时,Power BI生成聚合查询。 BI 兼容模式重写这些聚合,以遵循指标视图中的度量值定义。 始终使用
SUM作为Power BI中度量列的聚合类型。 SQL 引擎始终应用正确的基础度量逻辑。 - 数据预览和架构发现:当 Power BI 请求非聚合数据(例如,查看数据或列预览)时,度量列返回空值,而不是引发错误。 维度列通常返回其值。
支持的场景
启用 BI 兼容模式时,以下Power BI功能按预期工作。
| 情景 | 说明 |
|---|---|
| 基本度量可视化 | 将度量值拖到图表或表值字段中以显示聚合结果。 |
| 筛选器 | 将筛选器应用于可视化中的维度列或度量列。 |
| 维度切片器 | 使用维度列作为切片器控件来筛选报表。 |
| 交叉筛选 | 单击一个视觉对象中的值可筛选同一页上的相关视觉对象。 |
| 穿透 | 右键单击数据点以钻取到按该值筛选的详细信息页。 |
| TopN 筛选 | 显示按列排名的顶部或底部 N 值。 |
| 数据预览 | 使用 查看数据和模式发现。 度量值在预览中显示为 null。 |
| 视觉计算 | 在客户端应用的计算对已聚合的结果进行处理(例如,累加和排名)。 |
Power BI中的维度与度量值
指标视图包含两种类型的列:度量值和维度。 在生成Power BI报表时,了解差异非常重要。
-
度量值:度量值的聚合逻辑在指标视图中定义(例如,
SUM(price * quantity)或COUNT(DISTINCT customer_id))。 在 Power BI 中,始终将度量值列的聚合设置为SUM。 SQL 引擎会自动应用正确的度量逻辑。 如果需要其他聚合,请修改指标视图中的度量值定义。 不要更改Power BI端的聚合。 - 维度:维度的行为类似于常规表列。 可以将任何 Power BI 操作应用于维度,包括聚合、分组、筛选、排序和分箱,正如对常规表所做的一样。 如果数值字段定义为维度(而不是度量值),则所有标准Power BI聚合类型在该字段上正常工作。
最佳做法
- 始终在数据集中包含单个指标视图。 指标视图是你的语义定义的一种表示。
- 创建文件夹以组织维度列(例如,为日期维度中的每个维度列创建一个“日期”文件夹)。
- 重命名维度,为其赋予用户友好的名称。
- 将数值维度列更改为 “不聚合”。
- 为每个度量值列创建“包装度量值”
SUM(),并隐藏原始度量值列(例如Total Sales = SUM('Store Sales'[total_sales]))。 - 将度量值组织到“度量值”文件夹中。
- 只在可视化中使用这些包装度量标准。
局限性
由于Power BI连接器 SDK 的约束,BI 兼容模式对Power BI生成和处理查询的方式的控制有限。
聚合度量值时仅使用 SUM
在Power BI中,始终将聚合类型设置为度量值列的 SUM。 所有聚合函数(SUM、、COUNT、MINMAX)都重写为基础度量值定义,因此它们都返回相同的结果。 选择其他聚合类型可能会导致意外行为:
-
AVG显示1.0,因为Power BI在内部将AVG计算为SUM / COUNT,且两者返回的度量值相同。 - 计数(Distinct)、标准偏差、方差和中值生成与重写机制不兼容的查询模式,并生成错误或错误结果。
如果需要其他聚合,请修改指标视图中的度量值定义。 指标视图定义中完全支持所有聚合类型。
非累加性度量值的总计
Power BI通过在客户端重新聚合每组值而不是发出单独的查询来计算总计。 这会为累加性度量值(例如,SUM(revenue))生成正确的结果,因为在本地重新聚合会给出正确的答案。
但是,对于非累加性度量值(例如, SUM(revenue) / COUNT(DISTINCT customer)或涉及 DISTINCT的任何比率、百分比或表达式),总计可能会显示不正确的值,因为求和预先分组的比率在数学上与计算整个数据集的比率不相等。
度量列中的定量切片器
度量值列上的定量(范围)切片器无法按预期工作。 Power BI 查询度量值的MIN和MAX以确定滑块范围,但两者都被重写为相同的基础度量值,从而将范围缩小为单一点。 对度量值的筛选器仍然有效。 只有范围切片器受到影响。
度量值不能用作分类值或维度值
如果将度量列拖动到轴、图例或切片器中并将其视为分类值,则查询会失败并显示以下错误:
Measure columns cannot be used in GROUP BY clause or as categorical values. We recommend wrapping them with an aggregate function such as SUM() for the expected behavior.
包含多个度量值的计算字段
引用单个度量值的计算字段正常工作,因为Power BI先提取聚合结果,然后在客户端执行计算(例如,将收入桶化为低、中、高类别)。
但是,将多个度量列组合在单个聚合(例如,SUM(m1 + m2))中的表达式不会被 BI 兼容模式重写,这可能导致错误或意外结果。
将指标视图与其他表联接
指标视图不能与Power BI中的其他表联接。 如果需要将指标视图中的数据与其他表合并,请将联接合并到指标视图定义本身。
具体化度量视图
BI 兼容模式下不支持具有具体化的指标视图,并且可能会产生意外的结果。