Define once. Use everywhere.¶
任何数据库、任何 Agent —— Apache Ossie 原生的指标语义层
用 Apache Ossie(原 OSI)把指标和语义模型定义一次。Dosi 把它们编译成 16 种数仓方言各自原生的 SQL —— DuckDB、Postgres、Snowflake、ClickHouse、StarRocks 等,再以 CLI、MCP、REST + Arrow、Python 四种形态交付给每个消费端。
它解决什么问题¶
指标的含义,看板里写一遍,SQL 里写一遍,notebook 里又写一遍。写着写着就对不上了:一处过滤了已取消订单,另一处没过滤;一次不留神的 JOIN 把总额悄悄翻了倍。最后两个数都说自己"正确",却谁也对不上谁。
Dosi 把每个指标收敛到一处定义,SQL 由它生成。同一份定义,在每个数仓上都算得对,重复计数这类错误在设计上就被排除了。
基于 Apache Ossie¶
Apache Ossie(原名 Open Semantic Interchange,OSI)是语义模型的开放规范:数据集、关系、维度和指标用普通 YAML 写一次,就能在 BI 工具、AI Agent 和数据平台之间通用。
Ossie 定义指标是什么,Dosi 是让它跑起来的引擎:按上游规范校验模型、规划 JOIN,为每个数仓生成正确的 SQL。模型始终是标准 Ossie,不会被 Dosi 绑定。
30 秒看懂¶
在模型里定义一次,之后按名字取用:
$ export DOSI_EXAMPLES=~/.local/share/dosi/examples
$ dosi list metrics --model $DOSI_EXAMPLES/orders/model.yaml
NAME KIND DATASETS DESCRIPTION
revenue aggregate orders Total order amount
order_count aggregate orders Number of orders
unique_customers aggregate orders Distinct purchasing customers
avg_order_value ratio orders Revenue per order (ratio)
total_margin expression orders, products Revenue minus cost (expression over two aggregates)
$ dosi query --model $DOSI_EXAMPLES/orders/model.yaml \
--metrics revenue --group-by orders.status --execute --db orders.db
status revenue
completed 350
cancelled 100
2 rows
这个路径就是安装脚本放内置示例模型的地方,dosi info 也会把它打印出来。orders.db 由教程里的一条命令灌好。
换成 --dialect snowflake,SQL 就变了,模型一个字不用动。
团队为什么用它¶
-
同一份 Apache Ossie 模型能编译出 16 种方言的正确下推 SQL,从 DuckDB 到 Snowflake、StarRocks 到 DWS 和 Oracle。换数仓只改一个参数,不用重写。
-
原生 MCP 服务让 Agent 用自然语言直接问指标。结构化错误简短明确——稳定错误码、候选名单、修复提示——Agent 据此自我纠正,而不是盲目重试。
-
标准 Apache Ossie,不被绑定
输入就是纯 Apache Ossie(原 OSI)YAML —— 一个开放的交换标准,自带与 dbt、Snowflake、Databricks、Tableau 等格式的双向转换器。SQL 指标定义进得来,也出得去。
-
算得清的指标代数
引擎知道每个指标是否可加、能否跨粒度上卷、能否预测;扇出保护保证绝不悄悄重复计数。这份代数知识也支撑起内置归因:一次调用解释指标为什么变了,用与该指标类型精确匹配的方法分解。
-
比 MetricFlow 快 10–20 倍,内存约省 10 倍;结果以零拷贝的 Arrow 流式送进 DuckDB、Polars 或 pyarrow。数据见基准测试。
-
接入方式随选
CLI、REST + Arrow 服务、MCP 服务、Python 绑定,同一个引擎,同样的答案。
从这里开始¶
-
拿到
dosi可执行文件并验证,几分钟搞定,不用装数据库。 -
10 分钟动手教程,从一份模型走到能肉眼核对的真实结果。
-
Dosi 所基于的开放规范、语义层解决了什么问题,以及这些数字凭什么可信。
-
把 Dosi 注册为 MCP 服务,让 Agent 用自然语言回答问题 —— 走你的指标,而不是猜出来的 SQL。
Dosi 是 Datus 的产品。获取使用权限、授权或技术支持,请联系 Datus 团队,也可以了解 Dosi 所支撑的商业化平台 Datus Studio。