此内容由人工智能翻译,尚未经过人工编辑审核。图像和图表保持其原始语言。
要点速览
- 语义层是数据、可复用计算与业务逻辑的集合。 在不同平台上,这些理念非常相似,例如 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 是什么:

注意
如果你想进一步了解 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 或其他项目。

下面的视频演示了其工作方式。
在视频中,你可以看到用户在 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 Whitely 在 Advancing Analytics 制作的以下视频,进一步了解 Semantic Bridge:
进一步推荐阅读
- Power BI 与 Databricks 的语义建模模式。 我们同事 Liping 的文章,讲解如何同时用好 Databricks 与 Power BI。
- 借助 Databricks 指标视图简化分析。 Advancing Analytics 的文章,介绍指标视图的基础概念以及它们的价值。
- 为什么你的 Databricks 指标视图与 Power BI 无法对齐。 Advancing Analytics 的另一篇文章,说明我们要用 Semantic Bridge 解决的问题。
总结
Semantic Bridge 是 Tabular Editor 中的一项新功能,我们打造它是为了帮助客户与合作伙伴更顺畅地基于 Databricks 指标视图创建 Power BI 语义模型。 它基于一个框架构建。着眼未来,该框架可促进面向多种用途的平台无关的语义模型建模,包括自动化迁移、集成等。
如果你对该功能感兴趣,并有任何问题或需求,欢迎通过我们的联系表单,或通过 LinkedIn 等社交渠道与我们联系。 我们期待收到你的反馈和需求。