
10分钟读懂Apache Ossie从一个YAML文件到完整语义模型【免费下载链接】ossieApache Ossie, industry wide specification effort to standardize how we exchange semantic metadata across analytics, AI and BI platforms, providing a vendor neutral, single source of truth for semantic data项目地址: https://gitcode.com/GitHub_Trending/osi1/ossieApache Ossie 是一个厂商中立的开源语义模型标准前身为 Open Semantic InterchangeOSI它用一份简单的 YAML 文件统一分析、AI 与 BI 平台之间交换的语义元数据为整个数据栈提供唯一事实来源同一个指标在 BI 看板、AI Agent 和数仓中永远口径一致。本文带你从一份 YAML 文件出发10 分钟看懂它的结构、生态和上手方法。为什么需要 Apache Ossie 语义标准今天的数据生态是碎片化的每家工具dbt、Snowflake、Salesforce、Databricks…都有自己的语义层格式导致四大痛点痛点表现 指标漂移同一个 KPI 在不同工具里定义不同数字对不上 人工翻译模型跨系统迁移要手动改定义费时易错 AI 幻觉AI Agent 读到的业务口径不一致输出不可靠️ 集成债务每接一个新工具都要写一对自定义连接器Ossie 的思路是做数据栈的通用语。它位于语义层Semantic Layer向下对接物理数据向上服务 BI 与 AI 工具。下图展示了它在整个技术栈中的位置仓库速览核心规格与示例在哪进入 README.md 可以看到仓库结构非常清晰新手只需关注 5 个目录目录作用建议阅读顺序core-spec/核心规格spec.md人读、spec.yamlYAML Schema、osi-schema.json机器可读 Schema①examples/完整语义模型示例包括工业级 TPC-DS 模型 和 航班本体示例②validation/模型校验工具 validate.py③converters/与各厂商格式互转的参考转换器dbt、Snowflake、Salesforce、Polaris 等④docs/项目文档与 FAQdocs/index.md⑤语义模型解剖一个 YAML 文件的 6 大构件打开 core-spec/spec.md一个完整的 Ossie 语义模型由以下构件组成当前版本 0.2.0.dev0最新稳定版 0.1.1构件一句话解释生活化类比Semantic Model顶层容器装下所有其他构件一栋楼的总图纸Datasets逻辑数据集事实表/维度表含主键与唯一键仓库里的货架Fields行级字段用于分组、过滤、参与指标计算支持多 SQL 方言货架上商品的标签Relationships数据集间的外键连接支持复合键货架之间的通道Metrics模型级聚合指标求和、均值、比率可跨多个数据集财务的KPI 公式Custom Extensions厂商私有元数据JSON 格式不破坏核心兼容性贴在商品上的店内备注此外还有一个贯穿所有构件的隐藏角色——ai_context可以写自然语言指令、同义词、示例问题让 AI 工具理解业务含义。比如给orders数据集加上同义词purchases、salesAI 就能听懂上个月销售额指的是它。一份最小可用的语义模型长这样完整示例见 core-spec/spec.md 的 Complete Example 一节semantic_model: - name: sales_analytics description: 销售与客户分析模型 datasets: - name: orders source: sales.public.orders primary_key: [order_id] relationships: - name: orders_to_customers from: orders to: customers from_columns: [customer_id] to_columns: [id] metrics: - name: total_revenue expression: dialects: - dialect: ANSI_SQL expression: SUM(orders.amount)看到dialects了吗这是 Ossie 最有意思的设计之一 多方言表达式一份定义处处可跑不同引擎的 SQL 写法有差异类型转换、安全函数等Ossie 允许同一个字段或指标同时携带多份方言版本expression: dialects: - dialect: ANSI_SQL expression: LOWER(email) - dialect: SNOWFLAKE expression: LOWER(email)::VARCHAR转换器在导出时自动挑选目标平台对应的方言找不到就回退到ANSI_SQL。目前支持ANSI_SQL、SNOWFLAKE、DATABRICKS、BIGQUERY、MDX、TABLEAU、MAQL共 7 种方言。时间维度小技巧is_time 标记字段通过dimension.is_time: true声明自己是时间维度如order_date。日期类型字段会自动默认为时间维度而审计时间戳如created_at可以显式设为false退出时间轴——这个小设计让时序分析工具能准确识别哪些字段可以按时间切。星型Hub-and-Spoke架构如何与各平台互通Ossie 生态的核心架构是星型模式见 converters/README.mdOssie 是中心枢纽每个厂商只需开发导入 导出两个转换器就能与所有其他厂商互通。点对点方案N 个厂商需要N×(N-1)个转换器Ossie 星型方案只需2×N个转换器互通性白送仓库已提供多套参考转换器覆盖主流平台 converters/dbt/ — dbt 语义模型互转❄️ converters/snowflake/ — Snowflake 语义模型 converters/databricks/ — Databricks Metric View☁️ converters/salesforce/ — Salesforce / Tableau另有 GoodData、Omni、Orionbelt、Polaris 等厂商私有信息则通过custom_extensions携带支持 SNOWFLAKE、DBT、DATABRICKS、SALESFORCE 等厂商标签往返转换时不丢失。10 分钟上手三步验证你的第一个语义模型第一步获取代码git clone https://gitcode.com/GitHub_Trending/osi1/ossie第二步跑一次官方校验内置校验器 validation/validate.py 会检查 JSON Schema 结构、命名唯一性、关系引用完整性和 SQL 语法基于 sqlglotpython validation/validate.py examples/tpcds_semantic_model.yaml第三步通读 TPC-DS 完整模型examples/tpcds_semantic_model.yaml 是一个工业级完整示例包含事实表、维度表、跨数据集指标和多方言表达式配合 core-spec/spec.md 的 Schema 表格阅读10 分钟足够建立整体认知。 进阶阅读docs/index.md 的 FAQ 解答了为什么用 YAML 而不是 JSON指标能否引用多个数据集等常见问题ontology/ontology.md 介绍了上层本体规范。下一步参与路线图与社区️ 查看规划ROADMAP.md 列出了工作组、未来方向与增强计划️ 治理模式项目采用 Apache 社区治理50 数据生态组织参与dbt Labs、Databricks、Snowflake、Salesforce、Oracle 等详见 docs/index.md 的 Governance 章节 想接入自己的工具converters/README.md 提供了实现导入/导出转换器的分步指南总结Apache Ossie 用一份厂商中立的 YAML 语义模型解决了指标口径打架、AI 数据口径不一致的行业级问题6 大构件 多方言表达式 自定义扩展构成核心规格星型转换架构让它天然兼容现有工具链。从读懂一个 YAML 文件开始这就是数据团队走向单一事实来源的最短路径 【免费下载链接】ossieApache Ossie, industry wide specification effort to standardize how we exchange semantic metadata across analytics, AI and BI platforms, providing a vendor neutral, single source of truth for semantic data项目地址: https://gitcode.com/GitHub_Trending/osi1/ossie创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考