📌 项目地址apache/ossie | ⭐ 828 颗星 | 🔧 Python | 📜 未标注

语义碎片化:同一个指标,三个工具三个数

“月活跃用户”在 dbt 里算一次,Tableau 里算一次,AI Agent 又算一次——三个结果不一样。这不是 SQL 写错了,是定义没对齐。dbt 用 YAML 描述指标,Looker 用 LookML,Power BI 用度量表,彼此不认对方的格式。团队靠 Excel 手动映射,维护量上去就崩。

Apache Ossie(孵化中,前身 Open Semantic Interchange)想解决这个问题:提供一个 JSON / YAML 格式的规范,让不同工具对同一个指标的定义达成共识,然后各自按自己的引擎去算。它不跑查询、不存数据、不加速计算,只负责定义交换。

项目在 Apache 基金会下,许可证 Apache 2.0,商用没问题。GitHub 上 828 个 star,但活跃贡献者不算多。

仓库里有什么

README 列出四个主要目录:

  • core-spec/:核心规范文档 spec.md,机器可读的 schema 文件 spec.yaml 和 osi-schema.json。想自己写工具支持 Ossie 就从这里入手。
  • converters/:四个参考转换器:dbt、GoodData、Polaris、Salesforce。每个目录下有 Python 代码,可以做双向转换(把 dbt 模型转成 Ossie 格式,或反过来)。目前就这四个,没有 Looker、Metabase、Superset 的转换器。
  • examples/:一个完整的 TPC-DS 语义模型示例,展示了维度、度量、过滤器怎么定义。
  • validation/:校验工具,用于检查写好的 Ossie 文件是否符合 schema。

README 没有提供任何 pip install 命令或 CLI 使用说明。想要用 Ossie,流程是:读规范 → 手写 YAML/JSON → 跑校验 → 丢给支持 Ossie 的工具。项目没有现成的自动化流水线,也没有官方推荐的集成方式。

和 dbt Semantic Layer、LookML 有什么本质区别

dbt 和 Looker 都有自己的语义描述,但彼此不兼容。dbt 的指标定义要导进 Looker,要么手动复制,要么用不稳定的私有 API。Ossie 想做的是跨工具的公共标准,不绑定任何厂商。治理上,Ossie 在 Apache 孵化,规范变更靠 PR 和社区讨论,没有单一公司控制——好处是开放,坏处是决策慢。当前 schema 还在演进,今天写好的文件,下个版本可能就失效。

当前生态:四个转换器,没有一键集成

四个参考转换器覆盖 dbt、GoodData、Polaris、Salesforce。如果你用 Looker、Metabase、Superset、Power BI,没有现成转换,得自己写。文档里没有手把手的集成指南,也没有示例代码教你怎么把 Ossie 格式灌进目标系统。转换器的输出格式是不是能被目标工具直接消费,也要踩坑才知道。

项目还缺生态支撑。没有人帮你把 Ossie 文件部署到查询引擎上。你需要先定义好,然后手动映射回各工具的原始格式——这等于绕了一圈又回到原点。Ossie 目前更适合作为定义交换的中间标准,但缺乏自动化的“管道”来真正减少人工工作。

社区状态与参与方式

Ossie 现在靠社区驱动。你可以通过以下方式参与:

  • 贡献规范/代码:看 CONTRIBUTING.md 了解如何提规范变更、提交代码。
  • 查看路线图:ROADMAP.md 列出了当前工作组和计划增强项。
  • 讨论:GitHub Discussions 和 Issues 有社区讨论。Slack 上也有直接沟通渠道。

从仓库活跃度看,Issues 和 PR 数量不算多,社区还处于早期聚集阶段。如果你有明确的转换器需求(比如需要 Looker 转换),直接去 Slack 或 Discussions 发帖,大概率会得到回应,但也可能需要等别人开发。

能不能上生产?我的判断

不建议。 原因有三:

规范还在孵化阶段。 schema 没有稳定版本,变更不兼容的可能性大。官方 roadmap 里提到的工作组还在讨论哪些属性是必须的、哪些是可选。现在写 Ossie 文件,下个月可能需要重写。

转换器覆盖太少。 四个参考实现只覆盖 dbt、GoodData、Polaris、Salesforce。如果你用 Looker、Metabase、Superset、Power BI,没有现成转换,得自己写。文档里没有手把手的集成指南,也没有示例代码教你怎么把 Ossie 格式灌进目标系统。转换器的输出格式是不是能被目标工具直接消费,也要踩坑才知道。

项目还缺生态支撑。 没有人帮你把 Ossie 文件部署到查询引擎上。你需要先定义好,然后手动映射回各工具的原始格式——这等于绕了一圈又回到原点。Ossie 目前更适合作为定义交换的中间标准,但缺乏自动化的“管道”来真正减少人工工作。

如果你的团队已经在用 dbt Semantic Layer 或 Cube.js,并且只是需要一个统一指标目录,现在可以先忽略 Ossie。如果你的痛点非常具体:多个 BI 工具共用同一套 dbt 模型,且你愿意投入时间写转换器、参与社区讨论,那么 Ossie 值得跟踪——去 GitHub Discussions 或 Slack 上提需求,看看有没有人在做你需要的转换。

总结

Ossie 解决了一个真实问题:跨工具指标定义不一致。但它还处在“野路子可用、生产不可用”的阶段。拿来做技术预研可以,用来解决明天就要上线的跨平台报表问题,建议先选更成熟方案(比如 dbt Semantic Layer + 统一查询入口)。等 Ossie 出了 1.0 稳定版,再评估不迟。

这篇文章对你有帮助吗?

发表回复