借助 Tabular Editor 打通 Databricks 与 Power BI 的分析

此内容由人工智能翻译,尚未经过人工编辑审核。图像和图表保持其原始语言。

要点速览

  • 语义层是数据、可复用计算与业务逻辑的集合。 在不同平台上,这些理念非常相似,例如 Microsoft Fabric(使用 Power BI 语义模型)或 Databricks(使用 Unity Catalog metric views)……即便具体实现不同。
  • 将 Databricks metric views 转换为 Power BI 语义模型。 Semantic Bridge 是 Tabular Editor 的一项新功能,可将 Databricks metric views 转换为 Power BI / Tabular 语义模型。 当你希望基于 Databricks 中一个或多个现有 metric view,在 Power BI 中复用语义模型能力或进行 Report 开发时,这会非常有用。
  • 面向 Databricks metric view 的脚本与 BPA 规则。 Semantic Bridge 提供了首个也是目前唯一能以编程方式操作 metric view 的方案。 你还可以用它来建立验证规则,未来可通过命令行接口支持 CI/CD 和自动化测试场景。
  • 一个用于构建平台无关语义建模框架的 MVP。 Semantic Bridge 是一个用于在不同平台之间以平台无关的方式翻译语义层的框架。 这一初始实现是一个 MVP,用于满足客户与协作者的需求。 不过,它未来还可以增强为支持在多种平台之间进行双向的语义层翻译,包括 Snowflake、Tableau 等。

本摘要由作者撰写,并非由 AI 生成。

<!--more-->
注意

Semantic Bridge 仅在 Tabular Editor 3 企业版中提供。

Tabular Editor 3 的 Semantic Bridge 简介

语义模型——或语义层——让你可以 集中管理业务逻辑,为数据赋予业务含义。 你可以通过数据结构来建模真实世界的业务流程,从而实现这一点。 语义模型正以前所未有的频率被用来支持 通过 Report、对话式 BI 以及其他传统与 AI 应用进行业务决策,并存在于包括 Fabric(Power BI)、Databricks、Snowflake、Tableau 等在内的诸多数据平台中。

在组织中(尤其是大型企业),同时存在多个数据平台是很常见的。 这可能是暂时性的,例如从一个平台迁移到另一个平台的过程中。 但也可能是有意的战略或架构选择:利用各平台独有的特性与优势,或让不同平台更贴合你特定的业务需求。 例如,你可以在 Databricks 中进行抽取、转换、加载数据,然后在 Power BI 中使用这些数据或生成 Report(可使用 Fabric,也可不使用)。 我们的同事 Liping Huang 写过一篇文章,详细解释了其中一些模式

不过,在同时使用 Databricks 与 Fabric 等多平台时,一个常见挑战是如何在它们之间使用或转换语义模型。 直到现在,这通常都需要手工或重复的开发工作来重建模型。

在本文中,我们将介绍 Tabular Editor 3 的一项新功能——Semantic Bridge——它可以把 Databricks metric view 转换为 Power BI 语义模型。 我们会解释该功能的目的与收益,以及它如何作为迈向“平台无关语义建模框架”的第一步。

注意
Tabular Editor 致力于成为一个集成开发环境,帮助开发者完成与语义模型开发、管理和优化相关的所有任务。 Semantic Bridge 的目标是让你能从 Power BI 和 Analysis Services 更轻松地使用 Databricks metric view;并不是要把 Tabular Editor 变成其他平台语义模型的外部工具。

什么是 Databricks metric view?

在我们的协作者与客户中,有很多人同时使用 Databricks 和 Power BI。 我们经常会收到相关问题与需求:如何更好地利用并互补这些平台,或如何在它们之间迁移。 Databricks 和 Power BI 一样,也有称为 metric views 的语义模型。 Databricks 的 metric views 于 2025 年夏季发布,支持通过 AI/BI Dashboard 进行 Report 展示,并可通过 Databricks Genie 实现对话式 BI,分别类似于 Power BI 的 Report 和 Power BI 中的 Copilot。

如果你只熟悉 Power BI,下图提供了一个(非常)高层的概览,帮助你理解 Databricks metric views 是什么:

K032 Figure 1 - Workflow diagram showing how the Semantic Bridge translates Databricks metric views to Power BI semantic models through Tabular Editor as a universal translation layer

注意

如果你想进一步了解 Databricks(包括 metric views),我们有一套由朋友兼同行 Johnny Winter 撰写的 5 篇系列文章。 从第 1 篇开始,点这里

我们也推荐 Advancing Analytics 的内容,它深入讲解了与 Databricks 相关的各类主题;以及 YouTube 上 Alex the Analyst 的近期视频。

当然,Databricks 文档 也是很好的资源。

不过,有些组织使用 Databricks 来抽取、转换、加载数据,但希望在 Power BI 中基于这些数据制作 Report。 在 Power BI 中做 Report 需要语义模型,但如果你已经在 Databricks 里通过 metric view 搭建了语义层,该怎么办?

将 Databricks 指标视图转换为 Power BI 语义模型

简单来说,Semantic Bridge 会读取指标视图定义(一个 YAML 文件),并将其转换为 Tabular Editor 中的语义模型。 然后,你可以对该语义模型进行验证、进一步开发,或将其部署到 Power BI 和 Microsoft Fabric,用于 Report、Copilot 或其他项目。

K032 Figure 2 - Architecture diagram comparing semantic layer components in Databricks and Power BI showing lakehouse tables connecting to Unity Catalog metric views and OneLake tables connecting to Power BI semantic models

下面的视频演示了其工作方式。

在视频中,你可以看到用户在 Tabular Editor 3 中打开一个 Databricks 指标视图定义,并自动将其转换为语义模型。 视频演示了如何从本地 .YAML 定义文件转换指标视图:创建等效的 TOM 对象,并将 SQL 转换为 DAX。 未来,你就能把 Tabular Editor 3 直接连接到 Databricks 平台中的指标视图。 转换内容示例包括:

  • 为每个维度表(指标视图中的一次 join)和事实表创建对应的表。
  • 针对 Databricks 源系统定义的 M 分区。
  • 在 Power BI 语义模型中创建列,用于表示指标视图中的所有维度字段。
  • 在 Power BI 语义模型中创建与指标视图定义一致的关系。
  • 为指标视图中定义的所有度量值生成对应的 DAX 度量值。 基础聚合会自动从 SQL 翻译成 DAX;如果没法自动翻译,就会为该计算创建一个空的 DAX 度量值,并把 SQL 以多行注释的形式写进去,方便后续手动或借助 AI 进行转换。

如果导入过程中出现问题,它们会显示在类似下面示例的诊断视图中:

你还可以将多个指标视图合并为一个包含多事实表的 Power BI 语义模型。 这很实用,因为 Databricks 指标视图(截至 2026 年一月的 v1.1 规范)只支持单个事实表。 下面是一个简单示例:

一个包含订单数据的指标视图,可以与基于其他事实表的指标视图整合到同一个语义模型中,并共享一致维度,即 conformed dimensions。 不过,Semantic Bridge 的价值不止于转换与迁移,因为它为 Databricks 指标视图提供了可编程接口。

以编程方式开发和测试 Databricks 指标视图

Semantic Bridge 是一个简单接口,背后对应的是更广泛、可扩展的框架。 它包含一个与平台无关的语义模型对象模型。 简单来说,它让你可以用代码更改语义模型,而不受平台限制。 这意味着你可以使用 C# Script 对指标视图进行批量修改,或优化其开发流程。 如果你不会 C#,AI 也可以帮你。 目前,这只能在 Tabular Editor 3 的用户界面里完成;不过我们预计不久后会通过命令行界面(CLI)提供该功能。

例如,你可以在导入之前用 C# Script 先把 Databricks 指标视图改好。

注意

目前,Semantic Bridge 只支持使用从 Databricks 导出的本地指标视图 YAML 定义文件。 以后你就能在 Databricks 里直接进行修改。

你可以在下面的演示中看到一个例子:它展示了一个简单脚本,删除一个 join,以及所有使用该 join 的维度。 用 Power BI 的说法,这会删除该维度表以及其中的所有字段,就像你用普通的 C# Script 操作一样:

视频中的脚本如下:

var model = SemanticBridge.MetricView.Model;
var categoryJoin = model.Joins.First(j => j.Name == "categories");
var categoryDimensions = model.Dimensions.Where(d => d.Expr.Contains("categories"));
model.Joins.Remove(categoryJoin);
foreach (var dim in categoryDimensions)
    model.Dimensions.Remove(dim);

这种脚本与可编程接口也可用于定义验证规则,其工作方式类似于最佳实践(BPA)规则。 它们可用于对 Databricks 指标视图进行简单的自动化测试与验证。 下面的演示给你看一个例子:

视频中 BPA 规则的完整脚本如下:

using TabularEditor.SemanticBridge.Platforms.Databricks.Interfaces;
var path = "C:/Users/GregBaldini/source/repos/TE3/TabularEditor/SemanticBridge.";
SemanticBridge.MetricView.Load(path);
List<IMetricViewValidationRule> rules = [
    SemanticBridge.MetricView.MakeValidationRuleForDimension(
        "no_underscores_in_dimension_names",
        "Naming",
        "Don't use an underscore in a dimension's name; use spaces instead",
        (d) => d.Name.Contains('_')),
    SemanticBridge.MetricView.MakeValidationRuleForJoin(
        "no_sql_queries",
        "Structure",
        "Only reference tables or views; do not embed SQL SELECTs",
        (j) => j.Source.Contains("select", StringComparison.OrdinalIgnoreCase))
];
SemanticBridge.MetricView.Validate(rules).Output();

如果你计划将 Databricks 指标视图作为业务逻辑与计算的“单一事实来源”,并只是在 Fabric(Power BI)中进行镜像,那么这些脚本与 BPA 规则会很有用。

Semantic Bridge 是一个 MVP

这是一个初始实现,用于帮助我们的合作伙伴和客户解决一个常见需求。 目前,Semantic Bridge 仍有一些限制;你可以在 我们的文档 中了解更多,但下面是一些例子:

  • 它还不能直接连接到 Databricks。 它使用指标视图的 YAML 文件,你可以手动或以编程方式获取(例如通过 databricks CLI 或 API)。
  • 它不会自动将 Power BI 语义模型中的更改写回(或同步)到 Databricks。 不过,你可以在 Tabular Editor 中通过对象模型配合 C# Script 以编程方式完成这些修改。 你对 YAML 文件做的任何改动,都必须通过 UI 或以编程方式上传到 Databricks。
  • 部分复杂表达式无法在 SQL 和 DAX 之间自动翻译。 这些表达式会作为注释传递到新的 Tabular 对象表达式中(计算列或度量值)。 如果这些度量值或计算列被 Semantic Bridge 标记出来,你必须手动重写这些度量值或计算列,或在 coding agent 的协助下完成。
  • Semantic Bridge 是一个与平台无关的框架,但目前仅设置为与 Databricks 配合使用。 它还不支持 Snowflake、Tableau 或其他平台。 在后续文章中,我们将解释“agnostic framework”的含义,即“平台无关框架”,并从更技术的角度深入解析其实现方式。

以上这些以及更多内容,都是我们未来可能推进的增强方向,具体取决于客户与市场的需求。 你也可以观看我们合作伙伴兼好友 Simon WhitelyAdvancing Analytics 制作的以下视频,进一步了解 Semantic Bridge:

 

进一步推荐阅读

总结

Semantic Bridge 是 Tabular Editor 中的一项新功能,我们打造它是为了帮助客户与合作伙伴更顺畅地基于 Databricks 指标视图创建 Power BI 语义模型。 它基于一个框架构建。着眼未来,该框架可促进面向多种用途的平台无关的语义模型建模,包括自动化迁移、集成等。

如果你对该功能感兴趣,并有任何问题或需求,欢迎通过我们的联系表单,或通过 LinkedIn 等社交渠道与我们联系。 我们期待收到你的反馈和需求。

Related articles