Apache Ossie字段规范详解:多方言表达式与时间维度标记

发布时间:2026/9/2 13:15:47

Apache Ossie字段规范详解:多方言表达式与时间维度标记
Apache Ossie字段规范详解多方言表达式与时间维度标记【免费下载链接】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 是一个行业级的开源语义元数据规范旨在标准化分析、AI 与 BI 平台之间的语义数据交换为语义层提供厂商中立的唯一事实来源。其中字段Field定义是最核心的构建单元它决定了指标、过滤和分组如何在 Snowflake、BigQuery、Databricks 等平台上被一致地执行。本文将带你快速掌握两大关键机制——多方言表达式dialects与时间维度标记is_time。上图展示了 Ossie 的三层架构逻辑层Logical Layer正是字段与指标表达式发挥作用的层级使用可移植的 Ossie SQL 表达式语言与底层各数据库的原生 SQL 解耦参见 core-spec/expression_language.md。一、字段对象结构一览在 core-spec/spec.md 中字段定义在数据集dataset内部是行级属性可用于分组、过滤和指标表达式。核心属性如下属性类型必填说明namestring✅字段在数据集内的唯一名称expressionobject✅带方言支持的表达式定义dimensionobject❌维度元数据如is_time时间角色标记datatypestring (enum)❌逻辑数据类型Date、Integer、String等 10 种description/ai_contextstring❌描述与 AI 同义词上下文 注意区分两个独立属性datatype回答值是什么类型dimension.is_time回答它扮演时间维度角色吗——这正是下面要展开的重点。二、多方言表达式一份字段定义多平台运行expression 对象结构字段的expression是一个对象通过dialects数组声明一份字段在多种 SQL 方言下的写法spec.md 表达式对象expression: dialects: - dialect: ANSI_SQL # 必须取自 dialects 枚举缺省即默认方言 expression: customer_id # 标量 SQL 表达式不允许聚合规范内置了 7 种标准方言spec.yaml#L32-L39ANSI_SQL标准 SQL默认SNOWFLAKE、DATABRICKS、BIGQUERYMDX、TABLEAU、MAQLGoodData 查询语言何时需要多份方言版本当同一逻辑计算在不同引擎上语法或语义不一致时可为同一字段提供多个方言版本。官方示例是一个归一化邮箱字段spec.md 多方言字段示例- name: email_normalized expression: dialects: - dialect: ANSI_SQL expression: LOWER(email) - dialect: SNOWFLAKE expression: LOWER(email)::VARCHAR - dialect: BIGQUERY expression: SAFE_CAST(LOWER(email) AS STRING)执行端会根据目标平台选择对应版本未选中的方言可被安全忽略。常见方言差异速查规范专门整理了一张各引擎函数差异表expression_language.md 方言变体写表达式前值得先扫一眼场景ANSI_SQL / SnowflakeBigQueryPostgreSQL截断到月DATE_TRUNC(month, d)DATE_TRUNC(d, MONTH)DATE_TRUNC(month, d)加 7 天DATEADD(day, 7, d)DATE_ADD(d, INTERVAL 7 DAY)d INTERVAL 7 days字符串拼接CONCAT(a, b)CONCAT(a, b)a \|\| b✅最佳实践优先使用核心可移植函数如COALESCE、SUM、CASE WHEN只有当核心函数无法表达时才声明方言版本方言扩展的完整规则见 Dialect Extensions 章节。三、is_time 时间维度标记类型与角色分离为什么需要 is_time日期列不一定是时间维度比如审计用的created_at反过来整数年份、字符串季度名也可以是时间维度。Ossie 因此把数据类型datatype与时间角色dimension.is_time解耦官方称之为type vs. rolespec.md 详细说明datatype字段持有何种类型的值如Date、DateTimeTz、Integerdimension.is_time消费者BI 工具、AI 查询生成是否应把它当作时间轴处理is_time 默认规则速查未显式设置时is_time按数据类型自动推断spec.yaml 字段定义组合示例datatypeis_time实际角色原因d_date日历日期Date省略⏰ 时间维度时间类型默认truecreated_at审计时间戳DateTimefalse普通维度显式退出时间默认d_year整数年份Integertrue⏰ 时间维度非时间类型显式声明角色d_quarter_name如 Q1Stringtrue⏰ 时间维度字符串型时间粒度customer_idInteger省略普通维度非时间类型默认false真实示例TPC-DS 日期维表仓库自带的 TPC-DS 示例语义模型examples/tpcds_semantic_model.yaml展示了三种典型写法- name: d_year # 整数年份 → 显式 is_time: true datatype: Integer dimension: is_time: true - name: d_quarter_name # 字符串季度名 → 仅用 is_time 声明时间角色 dimension: is_time: true而同表的代理键d_date_skInteger 类型则被显式标记为is_time: false避免被误当作时间轴——这正是显式声明优先于默认值的体现。给消费端的两条建议类型问题类型转换、序列化优先看datatype不要从is_time: true反推具体标量类型角色问题时间轴 UI、时序聚合只要is_time解析为true无论显式还是默认就按时间维度处理四、上手检查清单先写 ANSI_SQL它是默认方言保证模型在任何实现上可读spec.md 完整示例差异函数再补方言对照方言差异表为 BigQuery/Snowflake 等补充dialects版本给每个字段问一句它是时间轴吗是则确保is_time为true显式或依赖时间类型默认不是则对时间类型列显式写is_time: false补上 ai_context 同义词帮助 AI 工具识别字段业务含义相关资源核心规范文档core-spec/spec.md机器可读 YAML 模式core-spec/spec.yamlJSON Schema 校验core-spec/osi-schema.json表达式语言规范core-spec/expression_language.md示例语义模型examples/tpcds_semantic_model.yaml、examples/flights.yaml项目入口文档docs/index.md 规范当前为 0.2.0.dev 草案版本schema 在正式发版前可能调整生产环境接入前请留意版本变更。【免费下载链接】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),仅供参考

相关新闻

AirLLM:单张 4GB 显卡跑 70B 大模型的低显存推理指南

AirLLM:单张 4GB 显卡跑 70B 大模型的低显存推理指南

2026/9/2 13:05:47

AirLLM:单张 4GB 显卡跑 70B 大模型的低显存推理指南 【免费下载链接】airllm AirLLM 70B inference with single 4GB GPU 项目地址: https://gitcode.com/GitHub_Trending/ai/airllm 你手里只有一张 4GB 显存的显卡,想验证一个 70B 参数的模型&a…

【单片机毕设案例分享】基于 STM32 的环境感知采集与蓝牙移动端监控平台设计 基于 STM32 的室内空气多指标监测与继电器驱动控制系统设计(010106)

【单片机毕设案例分享】基于 STM32 的环境感知采集与蓝牙移动端监控平台设计 基于 STM32 的室内空气多指标监测与继电器驱动控制系统设计(010106)

2026/9/2 13:05:47

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于单片机,STM32单片机,51单片机,J…

ExplorerPatcher 快速上手:3 步在 Windows 11 恢复 Win10 任务栏

ExplorerPatcher 快速上手:3 步在 Windows 11 恢复 Win10 任务栏

2026/9/2 13:05:47

ExplorerPatcher 快速上手:3 步在 Windows 11 恢复 Win10 任务栏 【免费下载链接】ExplorerPatcher This project aims to enhance the working environment on Windows 项目地址: https://gitcode.com/GitHub_Trending/ex/ExplorerPatcher ExplorerPatcher …

AMD 7840H/8845HS处理器深度解析:AI引擎、核显性能与选购指南

AMD 7840H/8845HS处理器深度解析:AI引擎、核显性能与选购指南

2026/9/2 14:25:51

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

Flutter桌面端RGBA视频渲染:texture-rgba-renderer原理与实战

Flutter桌面端RGBA视频渲染:texture-rgba-renderer原理与实战

2026/9/2 14:25:50

简介:本资源是面向Flutter桌面端开发者的技术实践项目,聚焦于通过texture-rgba-renderer插件实现跨平台(Windows/Linux)视频渲染的纯Dart方案,有效规避传统Texture方式需为各平台重复编写原生代码的维护痛点。资源包共…

OpenAI 8520亿美元估值背后的三重门:技术人的资本逻辑与架构启示

OpenAI 8520亿美元估值背后的三重门:技术人的资本逻辑与架构启示

2026/9/2 14:25:50

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

JavaWeb音乐网站实战:Servlet+JSP+MySQL从零搭建完整项目

JavaWeb音乐网站实战:Servlet+JSP+MySQL从零搭建完整项目

2026/9/2 14:25:50

简介:这是一套基于JavaWeb技术栈开发的小型音乐网站实战项目,面向Java初学者与Web开发入门者,解决在线音乐播放、下载、分类浏览及排行榜展示等核心功能的完整实现问题。资源包共881个文件,涵盖80个JSP页面、60个Java后端类、44个…

如何理性评估技术工具价值:从宣传到落地的实用方法论

如何理性评估技术工具价值:从宣传到落地的实用方法论

2026/9/2 14:25:50

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

AI心智理论应用失败案例剖析:从Fableish看技术落地鸿沟

AI心智理论应用失败案例剖析:从Fableish看技术落地鸿沟

2026/9/2 14:15:50

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

备战数据库管理工程师校招:索引、事务、备份恢复核心考点解析

备战数据库管理工程师校招:索引、事务、备份恢复核心考点解析

2026/9/2 10:08:07

每年校招季我都会接触不少准备数据库方向笔试的同学,看到最多的状态就是:简历上写着“熟悉 MySQL”“了解索引优化”,一碰到数据库管理工程师的笔试卷,却在索引、事务、锁、备份恢复这些题目上翻车。网易这套 2018 校园招聘数据库…

数字电路时序基石:深入理解建立时间与保持时间

数字电路时序基石:深入理解建立时间与保持时间

2026/9/2 12:11:52

1. 这不是“背公式”的事:时间参数到底在约束什么你翻过数字电路教材,一定见过这两个词:建立时间(Setup Time)和保持时间(Hold Time)。它们常被并列写在触发器(Flip-Flop&#xff09…

蓝桥杯国赛超声波测距机:从单片机原理到嵌入式系统实战

蓝桥杯国赛超声波测距机:从单片机原理到嵌入式系统实战

2026/9/1 23:49:08

1. 项目缘起:从赛题到超声波测距机的诞生第八届蓝桥杯单片机设计与开发国赛的题目,我至今记忆犹新。它没有直接给出一个花哨的名字,而是用“超声波测距机”这个朴实无华的功能描述,精准地勾勒出了考核的核心。对于当时备赛的我而言…

单片机毕业设计-基于单片机与蓝牙通讯的输液状态监测终端设计与开发 基于 STM32 或 51 单片机的液位‑滴速‑温度多参数输液监护装置设计(024005)

单片机毕业设计-基于单片机与蓝牙通讯的输液状态监测终端设计与开发 基于 STM32 或 51 单片机的液位‑滴速‑温度多参数输液监护装置设计(024005)

2026/9/2 0:04:59

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于嵌入式单片机,Java、小程序技术领域和毕业项目实战 ✌️…

DeepSeek字幕翻译实战:从API调用到批量SRT转中文的完整方案

DeepSeek字幕翻译实战:从API调用到批量SRT转中文的完整方案

2026/9/2 0:04:59

这次我们来看一个很实用的 DeepSeek 落地场景:用 DeepSeek 把英文视频字幕自动翻译成中文。具体案例是《恶魔君》1989 年第 28 集的英转中字幕任务,标题写得很直白,但背后其实是一整套可以复用的技术流程:字幕解析、模型调用、批量…

用Python搭建搞笑语音助手:从语音识别到语音合成全教程

用Python搭建搞笑语音助手:从语音识别到语音合成全教程

2026/9/2 0:04:59

当你家里摆着一台天猫精灵,却总希望语音助手偶尔“不正经”一点,不用官方腔回答问题,而是张口就接几句搞笑段子,会是什么体验?我最近动手验证了一下这个想法——没有去改装任何市面上现有的智能音箱,而是直…

远程协作的工作台整理

远程协作的工作台整理

2026/9/2 6:21:32

远程协作的工作台整理远程协作的核心不是再加一个工具,而是让交接信息足够完整。异步任务要写明目标、输入位置、完成标准和需要决策的人。 工作台的最小配置 将日程、待办、代码和沟通入口收拢到少数固定位置;通知按紧急程度分层。工作台不需要模仿办公…

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

2026/9/2 6:21:32

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能分类:[AI/大模型]细分主题:AI 增强型 CI/CD 流水线自动化与 GitOps 实践:Agent 工作流、工具调用与任务拆解:从原型到生产的验收清单很多团队在尝试用大…

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

2026/9/2 2:45:06

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场分类:[工程技术]细分主题:Kubernetes 生产环境运维与排障实战:可复制的项目复盘模板与决策记录大部分团队的事故复盘报告,最后都变成了躺在 Confluence 或钉…