Datus + DuckDB

为本地 DuckDB 分析建立语义层。

针对 DuckDB 文件定义指标,让团队审核后通过 DOSI 在本地运行。在 Agent 工作流中复用明确的业务含义,初次验证无需先配置云数仓。

各部分如何协作
本地数据与已有 SQL团队审核Apache Ossie 模型
Agent 与应用 · MCP / API / CLIDOSI进程内执行 SQL
DuckDB 文件
结果经 DOSI 返回给工具

DOSI 默认构建通过自带的 DuckDB 库在本地执行;模型与数据文件分开保存。

本地文件或内存数据库进程内执行原生 Arrow 结果
Datus 的作用

DuckDB SQL 对象与独立语义模型。

DuckDB 的 View 和 Macro 可以在数据库内复用 SQL 逻辑。DOSI 则增加由团队审核的 Apache Ossie 模型,让 Agent 和应用请求已命名指标;本地执行仍由 DuckDB 完成。

DuckDB View + Macro

本地表或文件 + 人工编写的 SQL
View 与 Macro
SQL 客户端、Notebook 与应用
DuckDB 进程内执行

可复用的 SQL 定义保存在 DuckDB 数据目录对象中。

DuckDB + Datus / DOSI

团队审核的 Apache Ossie 模型
DOSI 语义层
Agent 与应用 · MCP / API / CLI
DuckDB 进程内执行

语义模型与 DuckDB 文件分开管理。

View 和 Macro 复用 SQL;DOSI 增加明确的指标与维度定义。两条路径都由 DuckDB 执行。DuckDB View 文档DuckDB Macro 文档DOSI DuckDB 连接器

从一个真实模型开始

把本地订单数据集映射到要共享的指标与维度。让团队先审核计算方式,再交给 Agent 使用。

在本地核查

DOSI 默认构建在进程内打开 DuckDB,并返回原生 Arrow 结果。无需配置远程数仓,也能查看生成的 SQL 与结果。

接入 Datus Agent

Datus Agent 也内置 DuckDB 适配器。Agent 可以处理本地数据库任务,DOSI 则负责独立的语义执行路径。

具体流程

先以本地文件作为执行目标。

让 DOSI 指向 DuckDB 数据库文件,验证模型,再按指定维度请求指标。

dosi-connections.yaml

dosi-connections.yamlYAML
datasources:
  local_duckdb:
    type: duckdb
    uri: duckdb:////absolute/path/analytics.duckdb

DOSI CLI · 示例请求

dosiCLI
dosi query --model model.yaml \
  --metrics revenue --group-by orders.status \
  --execute --connection local_duckdb

请将示例路径和 model.yaml 替换为你自己的文件与已验证模型。这里展示调用方式,没有虚构执行结果。DOSI 默认构建自带 DuckDB;精简构建的要求不同。

连接 DuckDB

从本地文件到第一条指标查询。

DOSI 默认构建包含进程内 DuckDB 执行器。文件连接使用 duckdb: URI;不写 URI 则使用内存数据库。

DOSI DuckDB 连接器文档
  1. 01

    选好数据库文件

    初次配置建议使用 DuckDB 文件的绝对路径。确认进程能访问该文件,且文件包含模型引用的表。

  2. 02

    编写并审核模型

    在 Apache Ossie 模型中定义数据集、指标、维度和相关关系。让 DOSI 执行前,先验证模型。

  3. 03

    执行范围明确的查询

    使用 --connection local_duckdb,检查生成的 SQL 和 Arrow 结果。数据库文件和模型应由你自己的版本与访问控制管理。

DOSI 默认下载版自带 DuckDB。精简构建需要在 PATH 中另行安装兼容的 DuckDB CLI,而且不能跨独立进程保留内存批处理状态。Datus Agent 内置的 DuckDB 适配器是相关但独立的路径。

Datus Agent DuckDB 适配器文档
团队如何使用

从本地开始验证语义模型。

先在本地核查模型,再决定如何推广给团队。

01

试做一个指标

用本地数据集执行定义,与已知数字对照,再修改模型,最后分享。

02

让 Agent 使用已命名的计算

通过 DOSI 接口提供审核过的指标,让 Agent 直接请求,而不必依据列名重新猜测计算方式。

常见问题

DuckDB 语义层常见问题

DOSI 和 Datus Agent 如何使用本地数据库。

DOSI 与 DuckDB View、Macro 有什么区别?

View 和 Macro 让你在 DuckDB 内复用 SQL。DOSI 把指标和维度定义放在单独审核的 Apache Ossie 模型中,通过 MCP、API 和 CLI 提供给工具;生成的查询仍由 DuckDB 执行。

使用 DOSI 和 DuckDB 一定需要云数仓吗?

不需要。DOSI 默认构建包含 DuckDB 进程内执行能力,可连接本地文件,也可按需使用内存数据库。

Datus Agent 也能使用同一个 DuckDB 文件吗?

Datus Agent 内置 DuckDB 适配器。它的数据源配置与 DOSI 的语义连接需分别设置,再按各自支持的任务使用。

DOSI 精简构建的行为一样吗?

不一样。精简构建会调用 PATH 中安装的 DuckDB CLI,对内存数据库的使用也有限制。选用前请查看连接器指南。

用本地 DuckDB 文件试做第一个指标。

从团队能核查的定义与数据集开始,再决定在哪里复用。