Apache Ossie 标准函数速查表:Tableau、Looker Studio、DAX 映射完全指南
2026/9/2 9:08:57 网站建设 项目流程

Apache Ossie 标准函数速查表:Tableau、Looker Studio、DAX 映射完全指南

【免费下载链接】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

Apache Ossie是行业级的语义元数据交换标准,为分析、AI 与 BI 平台提供厂商中立的"单一事实来源"。本文为新手整理了一份Ossie 标准函数与 Tableau、Looker Studio、DAX 的映射速查表,帮你 3 分钟查清每个函数在不同工具里叫什么,避免"同名不同义"的坑。

为什么需要 Ossie 函数映射表?

同一个 KPI,在不同工具里定义往往不一样:Tableau 里的COUNTD()、Power BI 里的DISTINCTCOUNT()、数据库里的COUNT(DISTINCT x),说的其实都是"去重计数"。

Apache Ossie(前身 Open Semantic Interchange)解决的就是这个问题:用一套基于 YAML/JSON 的 核心规范 描述语义模型,让所有工具读写同一份"标准方言"(Ossie_SQL_2026)。而本文的映射表,就是告诉你Ossie 标准函数 ↔ 各 BI 工具函数怎么对号入座,完整定义见 core-spec/expression_language.md。

先搞懂:Ossie 的函数分级标准

查表前,先记住三个合规级别(源自 core-spec/expression_language.md 的 Compliance Levels 一节):

级别含义例子
REQUIRED (MUST)所有实现必须支持SUMDATE_TRUNCCONCAT
RECOMMENDED (SHOULD)建议支持,性能/高级场景常用APPROX_COUNT_DISTINCTREGEXP_EXTRACT
Dialect (MAY)厂商方言扩展,需在模型中声明Snowflake / BigQuery 专属函数

💡关键原则:优先使用 REQUIRED 级别的核心函数写 Ossie 模型,保证可移植性;确需方言函数时,在表达式的dialects中显式声明(如ANSI_SQLSNOWFLAKETABLEAU等,方言清单见 core-spec/spec.md 的 Dialects 枚举)。

聚合函数映射速查表 📊

这是日常用得最多的一类,Ossie 的SUM/COUNT/AVG等在三端几乎同名,但去重计数、标准差、百分位数差异最大:

Ossie 标准函数TableauLooker StudioDAX
SUM(x)SUM(x)SUM(X)SUM(x)
COUNT(x)COUNT(x)COUNT(X)COUNT(x)
COUNT(DISTINCT x)COUNTD(x)COUNT_DISTINCT(X)DISTINCTCOUNT(x)
AVG(x)AVG(x)AVG(X)AVERAGE(x)
MIN(x)/MAX(x)MIN(x)/MAX(x)MIN(X)/MAX(X)MIN(x)/MAX(x)
STDDEV(x)STDEV(x)STDDEV(X)STDEV.S(x)
STDDEV_POP(x)STDEVP(x)STDDEV(X)STDEV.P(x)
VARIANCE(x)VAR(x)VARIANCE(X)VAR.S(x)
MEDIAN(x)MEDIAN(x)MEDIAN(X)MEDIAN(x)
PERCENTILE_CONT(x, 0.75)PERCENTILE(x, 0.75)PERCENTILE(X, 75)PERCENTILE.INC(x, 0.75)

⚠️新手最易踩的坑

  • DAX 的平均数是AVERAGE而不是AVG
  • Looker Studio 的PERCENTILE第二个参数是75(百分比数字),而其他工具是0.75(小数),写反了结果完全不对;
  • 大数据量求近似去重数时,Ossie 提供APPROX_COUNT_DISTINCT(x)(推荐级,误差约 2%),比精确去重快得多。

日期/时间函数映射速查表 📅

Ossie 基于 ANSI SQL:2003 定义日期函数,参数顺序是(精度, 日期, …),而 DAX 把精度放在最后,迁移时务必注意:

Ossie 标准函数TableauLooker StudioDAX
YEAR(d)/MONTH(d)/DAY(d)YEAR(d)/MONTH(d)/DAY(d)YEAR(Date)/MONTH(Date)/DAY(Date)同名
DATE_TRUNC('month', d)DATETRUNC('month', d)TODATE(d, "YYYYMM01", "YYYYMMDD")DATE(YEAR(d), MONTH(d), 1)
DATEADD(day, n, d)DATEADD('day', n, d)DATE_ADD(d, n)(仅天数)DATE(d) + nDATEADD(d, n, DAY)
DATEDIFF(day, d1, d2)DATEDIFF('day', d1, d2)DATE_DIFF(d1, d2)DATEDIFF(d1, d2, DAY)
CURRENT_DATETODAY()TODAY()TODAY()

📌实用技巧:跨引擎移植日期表达式时,Ossie 的方言声明机制可以同时给出一份 ANSI 版和各数据库版写法(如 BigQuery 的DATE_TRUNC(d, MONTH)参数顺序与 ANSI 相反),规范中的 Common Dialect Variations 一表已列出 Snowflake、BigQuery、Databricks、PostgreSQL 的常见差异。

字符串函数映射速查表 ✏️

Ossie 标准函数TableauLooker StudioDAX
CONCAT(a, b)a + bCONCAT(X, Y)CONCATENATE(a, b)a & b
LENGTH(s)LEN(s)LENGTH(X)LEN(s)
LOWER(s)/UPPER(s)/TRIM(s)同名同名同名
LEFT(s, n)/RIGHT(s, n)同名LEFT_TEXT(X, n)/RIGHT_TEXT(X, n)同名
SUBSTRING(s, start, len)MID(s, start, len)SUBSTR(X, start, len)MID(s, start, len)
REPLACE(s, from, to)REPLACE(s, from, to)REPLACE(X, Y, Z)SUBSTITUTE(s, from, to)
CONTAINS(s, sub)CONTAINS(s, sub)CONTAINS_TEXT(X, text)CONTAINSSTRING(s, sub)

⚠️ 三个高频差异点:拼接(Tableau 用+,DAX 用&)、子串(Ossie 的SUBSTRING在 Tableau 叫MID)、查找(DAX 里是CONTAINSSTRING)。

条件函数映射速查表 🔀

Ossie 标准函数TableauLooker StudioDAX
CASE WHEN ... ENDCASE WHENIFCASE WHENSWITCH(TRUE(), ...)
IF(cond, t, f)IF cond THEN t ELSE f ENDCASE替代IF(cond, t, f)
COALESCE(a, b)IFNULL(a, b)ZN(a)COALESCE(...)COALESCE(a, b)
NULLIF(a, b)IF a = b THEN NULL ELSE a ENDCASE替代IF(a = b, BLANK(), a)

💡Ossie 特色:除了COALESCE,Ossie 还提供了分析场景常用的ZeroIfNull(x)(空值转 0)和NullIfZero(x)(0 转空值),这在 DAX 中没有直接对应,通常要写成IF(ISBLANK(x), 0, x)

窗口函数映射速查表 🪟

窗口函数是各工具差异最大的类别,跨工具迁移前务必查表:

Ossie 标准函数TableauLooker StudioDAX
ROW_NUMBER() OVER(...)INDEX()不支持RANKX(...)加 DENSE 选项
RANK() OVER(...)RANK(expr)不支持RANKX(...)
SUM(...) OVER(PARTITION BY...){FIXED [...]: SUM(...)}仅混合数据源场景上下文相关
LAG(x, 1) OVER(ORDER BY...)LOOKUP(x, -1)不支持CALCULATE(x, PREVIOUSDAY(...))
累计求和RUNNING_SUM(SUM(...))不支持CALCULATE(SUM(...), FILTER(...))

📌 Looker Studio 基本不提供窗口函数,跨端迁移时建议改用"表计算"思路(如 Looker Studio 的 Comparison 计算字段);Ossie 模型中则统一用标准OVER()语法,各实现负责翻译。

动手实践:从示例模型到转换器

想亲手看标准函数长什么样,可以:

  1. 打开完整示例 examples/tpcds_semantic_model.yaml(TPC-DS 全量语义模型)或更小的 examples/flights.yaml,查看metrics中用 Ossie SQL 写的表达式;
  2. 用 validation/validate.py 校验模型是否符合 core-spec/osi-schema.json 模式;
  3. 参考 converters/ 下的官方转换器(dbt、GoodData、Salesforce、Snowflake 等),学习 Ossie 与具体工具格式之间的双向转换实现。

速查表之外:三条避坑建议

  • 参数顺序:Ossie 的DATEDIFF(精度, d1, d2)与 DAX 的DATEDIFF(d1, d2, 精度)首尾相反,照抄参数最易出错;
  • NULL 语义COUNT(x)只统计非空值,COUNT(*)统计全部行,这与各 BI 工具行为一致,迁移时保持原样即可;
  • 可分解性:Ossie 将聚合分为 Distributive(SUM/COUNT)、Algebraic(AVG)、Holistic(MEDIAN/COUNT DISTINCT)等类别,多级聚合或预计算场景下,Holistic 类函数无法简单合并,选函数时要留意。

掌握这份Apache Ossie 标准函数映射速查表后,你在 Tableau、Looker Studio 和 Power BI(DAX)之间的函数迁移就能"对着表抄",语义模型一次定义、多端复用 🎯

【免费下载链接】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),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询