跳转至

版本发布记录

未发布

新功能

  • dosi lineage dump 把指标血缘图打印成 JSON;view 把它渲染成一个自包含的 页面并打开——就是 0.1.8 起 Engine.lineage() 返回的那张图,现在命令行也能拿到。 参见血缘
  • 血缘图上的 ontology 层。 加载 Apache Ossie ontology 后,图上多出它的概念:每个 实体落在哪个数据集上、每条关系由哪些 join 实现,以及——对 ontology 派生出的指标—— 让两个 SQL 相同的指标含义不同的那条路径。Engine(...) 接受 ontology_pathontology_textmapping

变更

  • 指标的维度现在是 Dosi 推荐的那一份,而不是它能到达的全部字段。 血缘图列出的与 dosi list dimensions --metric 一致,顺序也一致:主键、外键, 以及被某个指标聚合的列都不在其中。没有列出的名字仍然可以分组——这个判定只是不推荐, 从不阻止显式 --group-by
  • 图里每个字段都带 label——模型里给该字段写的 label,没写就是字段名。
  • Engine(...) 的 ontology 参数只能以关键字传入,且排在原有参数之后,所以按 0.1.10 写的 位置参数调用含义不变。无法解析或降低的 ontology 抛出 code 为 ontologyModelError; 加载错误里重新带上文件路径。

0.1.10

新功能

  • 明细查询。 dosi select 返回明细行,而不是聚合后的指标,比如 "Enterprise 客户最大的 100 笔订单"。你只管点名要哪些字段,连接由 Dosi 算 出来;会导致结果重复的连接,它宁可拒绝也不把重复的行交给你。参见 明细查询
  • 存成字符串或数字的时间列。 时间列不再必须是真正的 DATE。声明这一列 实际存的是什么(202401312024-012024年01月31日),Dosi 就能正确 分组和过滤,且不丢失分区裁剪。查询写法不变:始终写 2024-01-31。参见 D-FORMAT
  • 组合指标可以基于另一个组合指标。 一个公式只写一次、可以复用,不必在每个 用到它的指标里重写一遍——而重写时抄歪了,以前是照样编译通过的。

增强

  • 用了 OSI 标准 datatype 属性的模型现在可以加载,Apache Ossie 的 TPC-DS 参考模型也在其中。
  • --order 指定的是一个指标,或者你 group by 的某个字段,不必去对上引擎生成 的列名。

缺陷修复

  • 参数取值是中文(或任何非 ASCII 文本)时,每个值生成的列名都一样;一次绑定 多个值还会让查询直接失败。
  • 存成整数的时间列在 MySQL、TiDB、ClickHouse 上,上卷到月或年会失败。

0.1.9

Dosi 现在采用 Elastic License 2.0:可以自由使用和再分发,只是不能作为托管 服务转售。它取代了 0.1.5 引入的专有许可——那份许可在没有另行协议时不授予任何 权利。

新功能

  • BigQuery 可以执行查询。 此前它只能编译:Dosi 生成 SQL,但拒绝执行。现在 可以执行,并在真实项目上跑通了完整测试语料。参见 BigQuery
  • 华为云 DWS 成为受支持的数仓。它的兼容模式(oratdmysql)会影响 生成的 SQL,所以 Dosi 会从数据库读取模式,并拒绝执行为另一种模式编译的查询。 参见华为云 DWS
  • 指标血缘(仅 Python)—— Engine.lineage() 返回指标背后的关系图:表 → 数据集 → 指标 → 派生指标。图要交给信任边界之外时,传 redact_sql=True
  • 建模契约(仅 Python)—— render_datus_authoring_spec() 返回本引擎实际 执行的建模规则并附摘要,生成模型的工具可以据此确认自己依据的是同一份规则。
  • 从镜像安装。 install.sh 新增 DOSI_SOURCE=github|oss|cloudflare。中国 大陆请用 DOSI_SOURCE=oss:从 GitHub 下载只有几十 KB/s,还经常卡死。两种 来源都会校验归档包的校验和。本版本没有填充 Cloudflare 镜像。

增强

  • install.sh 可以装在 macOS 上,此前它对任何非 Linux 主机一律拒绝。
  • 校验会返回每个指标最终编译成了什么;Python 的连接配置可以直接在内存里传, 不再触发明文密钥告警——那条告警本来只对磁盘上的连接文件才有意义。
  • 新增 BigQuery华为云 DWS 两页文档,以及一个 20 万行的示例数据库 https://dosi.datus.ai/orders-200k.duckdb

缺陷修复

  • 宽度为 1 个周期的滚动窗口,或 preceding 边界为 0,会生成 Doris 和 StarRocks 直接拒绝的 SQL,于是 --param n=1,3,6 这样普通的查询在这两个引擎 上失败。

0.1.8

这一版没有发布 wheel,所以 dosi-engine 用户从 0.1.7 直接到 0.1.9,那一版 包含这里的全部内容。二进制只发布了 Linux x86_64、Linux aarch64 和 Apple Silicon 三个目标——Intel Mac 请装 0.1.9。

新功能

  • 归因:这个指标为什么变了。 给 Dosi 一个指标、要看的维度和两个时间窗口, 它自己把查询跑完,返回按贡献排序的分解结果,每个分段都附带下一步下钻可直接 用的过滤条件。用哪种方法由指标自身的代数结构决定;分解不了的指标会返回 结构化的"不支持"并说明原因,而不是给一个错的数。参见 解释指标变化
  • 参数化指标。 指标的窗口宽度、偏移、排名分桶、过滤取值,都可以是查询时 参数:一个 moving_avg(n) 顶掉 r7 / r30 / r90,一次查询还能同时要多个 取值,一个取值一列。参见参数化指标

增强

  • dosi list metrics 会说明一个指标能不能做归因、用哪种方法,不必真跑一次分析 就能先确认。
  • 一次查询可以带多个具名时间窗口,由一条语句一次返回。

行为变化

  • 如果你在用 0.1.7 wheel 的 Engine.attribute():分母不为正的分段,占比字段 现在可能不存在,无条件读取这两个字段的代码需要处理这种情况。

0.1.7

这一版是拆开发的:二进制和 wheel 相隔三天、由不同提交构建,所以 wheel 的 内容更多。

新功能

  • 多了一个更小的下载包 —— dosi-<version>-<target>-lean.tar.gz 只含两个 可执行文件。它照样能编译查询、连上所有数仓;本地 DuckDB 的执行交给 PATH 上 的 duckdb CLI。
  • 派生指标(D-DERIVE)M2 —— 窗口可以建在派生指标之上,组合也可以包含窗口 成员。
  • SQLite 文件可以通过 DuckDB 读取。
  • 错误码参考,含每种拒绝的含义清单。
  • 归因分析首个版本(仅 wheel)—— Engine.attribute()。0.1.8 在此之上做了 扩展,升级前请先看上面那条行为变化。

增强

  • DuckDB 每个进程的启动快了约 200 ms:一次性的 dosi query --execute 从 249 ms CPU 降到 41 ms。查询本身的速度不变,省下的是启动开销。

缺陷修复

  • Redshift 真的按 Redshift 渲染了。 此前它落到通用生成器上,产出的是 Postgres SQL。
  • wheel 在 cargo 1.93 及更高版本下能构建。

0.1.6

仅 wheel —— dosidosi-server 用户从 0.1.5 直接到 0.1.7。

新功能

  • 新增 Linux aarch64 的 wheel,Graviton 和 arm64 容器不必再从源码构建。
  • SQLite 文件可以通过 DuckDB 读取,本地 .sqlite 文件因此成了可用的连接, 适合测试和小模型。
  • 导出 CONNECTION_TYPES,调用方可以直接列出某个 wheel 构建时带上了哪些数仓。

0.1.5

Dosi 的首个公开版本。 从这一版起,项目只以二进制和 wheel 的形式发布,不再 发布源码归档。安装:curl -fsSL https://dosi.datus.ai/install.sh | sh 拿到 dosidosi-server 可执行文件,pip install dosi-engine 拿到 Python 绑定。

它做什么:加载 OSI 语义模型、校验、把指标查询编译成你所用数仓的 SQL,然后执行。 十五个数仓 —— DuckDB · StarRocks · ClickHouse · Doris · TiDB · Trino · Postgres · MySQL · Snowflake · BigQuery · Databricks · Redshift · Hologres · GaussDB · Oracle。四种入口:dosi CLI、REST、MCP、Python wheel。两种模式: --osi-datus 遵循 Datus 扩展,--osi-basic 是严格的标准 OSI。


0.1.5 之前的版本从未发布。