跳到正文
Databricks Blog·· 16 小时前AI 评分47

Databricks Unity Catalog Metric Views 接入 Power BI:统一治理语义层

Unity Catalog Metric Views, now in Power BI: one unified, governed semantic layer for all your reporting and AI

AI 导读

Databricks 通过 Publish to Power BI 将 Unity Catalog metric views 接入 Power BI 语义模型,每个 metric view 映射为一张表,维度转为列、度量转为 DAX 度量,Power BI 直接查询 metric view 本身。

正文 · AI 翻译

组织希望对其业务语义有一个单一、可信的定义。收入、利润率和活跃客户在每份报告、每个笔记本和每个 AI 应用中都应该含义一致。当它们不一致时,业务用户和 AI 代理会以不同方式解读同一份数据,并得出不同的答案。财务和销售显示不同的收入数字,团队对其报告失去信任,决策基于错误的数字做出。 Unity Catalog 指标视图是 Unity Catalog 语义的一部分,它通过让客户在 Databricks 中一次性定义业务 KPI 来解决这个问题,这些 KPI 位于湖仓之上的开放、受治理的语义层中。

与此同时,这些组织中的许多都依赖 Power BI 作为其业务用户的前端。通常,组织拥有数千个 PowerBI 工作区,每个工作区都有自己的语义模型,造成治理和统一方面的噩梦。此外,当每个团队在 Power BI 中构建自己的指标和关系时,相同的逻辑会存在于许多地方。报告逐渐偏离,每次定义变更都意味着要更新每一份副本。

客户告诉我们,他们两者都想要:Databricks 作为其统一、开放的语义层,Power BI 作为其前端。借助 发布到 Power BI,他们现在可以两者兼得。每个 Power BI 报告都使用与 AI/BI 仪表板和 Genie 相同的受治理 UC 指标视图,因此团队基于一致的数字开展工作。业务用户可以构建自助式报告并跨任意维度探索指标,而无需等待数据团队对数据建模或编写 DAX。数据团队在 Databricks 中维护一份定义,而不是跨系统维护许多副本。可从 Catalog Explorer 按需发布,或向 Lakeflow 作业添加 Power BI 任务,以在生产环境中保持指标视图和语义模型同步。

在 Databricks 中建模一次,在 Power BI 中使用

借助发布到 Power BI 或 Power BI 任务,你可以将 Unity Catalog 指标视图连接到 Power BI 语义模型。每个指标视图成为模型中的一张表。指标视图的维度(又称字段)成为列,其度量值成为 DAX 度量值。

Power BI 查询指标视图本身(就像它是一张表一样)。指标视图始终是事实来源,指标视图中定义的联接在 Databricks 中运行。联接后的维度(例如活动渠道或区域)在 Power BI 中显示为普通列,因此你无需在 Power BI 中重建表关系。

例如,营销团队需要跟踪活动表现并决定将预算转移到何处。他们在 Unity Catalog 中定义一个 campaign_performance 指标视图,其中包含渠道和区域等维度,以及总支出、总收入和广告支出回报率(ROAS)等度量值。当团队发布该指标视图时,这些维度和度量值会像这样出现在 Power BI 中: 

类别

指标视图表达式

Power BI 度量值(DAX)

维度

channel 

(来自联接的 campaigns 表)

‘campaign_performance'[channel]

维度

region(来自联接的 regions 表)

'campaign_performance'[region] 

度量值

total_spend = SUM(spend)

total_spend = SUM('campaign_performance'[spend])

度量值

total_revenue = SUM(revenue)

total_revenue = SUM('campaign_performance'[revenue])

度量值

roas = MEASURE(total_revenue) / MEASURE(total_spend)

roas = DIVIDE([total_revenue], [total_spend])

随后,营销分析师可以构建一个 Power BI 报表,按渠道和区域比较 ROAS,并看到与团队在 AI/BI 仪表板和 Genie 中获得的相同数字。如果团队之后更改了 total_revenue 的定义,他们只需更新一次指标视图,其管道中的 Power BI 任务会重新发布它,所有 Power BI 报表都会采用新定义。


设计上追求快速

由于 Power BI 查询指标视图,它很快也将能够受益于指标视图物化。指标视图物化是一种性能优化,它预先计算结果而不改变指标的计算方式。当 Power BI 发送查询时,Databricks 将从匹配的物化结果中提供结果,以加快响应速度。如果没有匹配的物化结果,查询会照常针对指标视图运行。无论哪种方式,指标定义、DAX 度量值和结果都完全相同。

此外,借助 Lakehouse//RT + DirectQuery,Power BI 报表可直接在受治理的湖仓数据上获得实时性能。Lakehouse//RT 运行在您托管的 Delta 表上,因此无需单独的 serving 系统来复制或管理数据。它还强制执行相同的 Unity Catalog 行过滤器、列掩码和 ABAC 策略,因此报表在提速的同时不会牺牲治理。

受治理且始终同步

使用 DirectQuery 时,每个查询都遵循 Unity Catalog 访问控制和安全策略,并且血缘关系保持与团队已在 AI/BI 仪表板、 Genie和 Databricks Lakehouse中使用的指标相连。

当指标视图发生变化时,我们让 Power BI 的更新变得简单。使用 Lakeflow Jobs 中的 Power BI 任务,您可以将指标视图作为数据管道中的一个步骤发布到目标语义模型,可以按计划执行,也可以在上游表刷新后立即执行。更新后的度量值、新度量值和新维度会自动流入 Power BI,因此报表无需手动返工即可与指标层保持一致。

支持的内容

发布到 Power BI 涵盖大多数团队日常使用的指标定义:

  • 数据建模:直接在指标视图中定义数据模型,包括联接和关系、维度、度量值及其他语义元数据,让 Databricks 自动处理计算,无需在 Power BI 中手动重复逻辑。
  • 度量值:标准聚合(SUM、COUNT、AVG、MIN、MAX、MEDIAN、STDDEV、VARIANCE)、去重计数、比率、筛选度量值以及由其他度量值组合而成的度量值。
  • 窗口度量值:当前、偏移和尾随窗口度量值。
  • 元数据:描述和显示格式(包括货币、小数和百分比设置)会传递到 Power BI 字段属性。
  • 存储模式:DirectQuery(默认)用于对 Lakehouse/RT 或 Databricks SQL 进行实时查询,Import 模式用于将数据加载到 Power BI 中。
  • 发布机制:在 Catalog Explorer 中使用“发布到 Power BI”,只需点击几下即可按需发布指标视图。使用 Lakeflow Jobs 中的 Power BI 任务将发布作为数据管道的一部分进行自动化,从而使指标视图和语义模型在生产环境中保持同步。

开始使用

“发布到 Power BI”目前处于 Private Preview(文档)。请与您的客户团队合作测试该预览版。 

启用后,您可以通过三个简单步骤进行发布: 

  1. 准备指标视图:将所有度量输入添加为维度,并确保每个字段都已命名。
  2. 发布:在 Catalog Explorer 中,点击 发布 > 发布到 Power BI,使用您的 Power BI 凭据登录,并选择目标工作区。准备好投入生产时,将 Power BI 任务添加到 Lakeflow Job 以自动化发布,确保您的 Power BI 语义模型与指标视图保持同步。
  3. 在 Power BI 中验证:打开语义模型,确认指标视图显示为表、维度显示为列、度量显示为 DAX 度量。 

这些功能共同使 Databricks 成为您的语义中心。在 Databricks 中一次定义指标,使用 Power BI 任务保持 Power BI 模型同步,并在各处使用相同的受治理定义,包括业务用户已经依赖的 Power BI 报表。每个团队和用例都在一个开放、受治理的平台上工作。 

常见问题

什么是受治理的语义层,为什么 BI 和 AI 代理需要它?
受治理的语义层是一个集中定义业务指标和共享维度(如收入、国家/地区和活跃客户)的地方。然后,每个 BI 工具、笔记本和 AI 代理都以相同的方式使用这些定义。Unity Catalog Semantics 就是 Databricks 中的这一层。它将指标视图、关系和其他建模元数据汇集在 Unity Catalog 中。它是开放的,您可以使用 SQL 查询它,并且它继承 Unity Catalog 的访问控制和血缘。这就是为什么 Power BI 报表、AI/BI 仪表板和 Genie One 代理都返回相同的 ROAS 数字。

如何为 AI 代理和 BI 用户提供相同的业务定义?
在一个所有工具均可访问的共享语义层中一次性构建业务定义。不要在每个 BI 工具或代理提示中单独编码。借助 Unity Catalog 指标视图,Genie One 和 Agent Bricks 代理读取与 Power BI 通过“发布到 Power BI”读取的相同的受治理定义。当定义发生变化时,每个使用方都会获得更新。 

指标应该放在 Power BI 语义模型里,还是放在 Unity Catalog 里?
把指标定义保留在 Unity Catalog 中。Power BI 语义模型主要服务于 Power BI,外部 BI 工具或 AI 代理很难访问它,导致同一个指标必须在每个工具里重新构建。将指标视图发布到 Power BI 会自动把每个度量值转换为 DAX,这样 Power BI 用户能保留自己的报表,同时为 AI 和其他用例维护单一受治理的定义。

Power BI 查询的是指标视图还是底层表? 
查询指标视图。只有度量值表达式会被转换为 DAX,并且它们引用指标视图的维度。指标视图始终是事实来源,连接和计算在 Databricks 中运行。

发布后的语义模型是什么样子?
每个指标视图变成一张表。其维度变成列,其度量值变成 DAX 度量值。由于连接在指标视图中只定义一次,连接后的维度会显示为普通列,不需要 Power BI 关系。例如,SUM(amount) 变成 SUM('sales_metrics'[amount]),MEASURE(a) / MEASURE(b) 变成 DIVIDE([a], [b])。

指标视图发生变化时会发生什么? 
要让模型自动保持同步,请向 Lakeflow Job 添加一个 Power BI 任务,这样发布更新就能按计划运行,或在上游表刷新后运行。

访问是否仍受 Unity Catalog 治理? 
是的,通过 DirectQuery。每个查询都遵守 Unity Catalog 的访问控制和安全策略。在 Import 模式下,数据会加载到 Power BI 中,因此对该副本的访问遵循 Power BI 权限。 

在 Power BI 中所做的更改会同步回 Unity Catalog 吗? 
不会。为确保语义统一且受治理,发布只单向进行,即从 Unity Catalog 到 Power BI。如果你在 Power BI 中编辑已发布的度量值,该编辑不会写回指标视图。要更改受治理的指标,请在 Databricks 中更新指标视图并重新发布,或创建一个包含 Power BI 任务的 Lakeflow Job,按计划更新 Power BI 语义模型。 

来源:Databricks Blog · databricks.com