数据空间 (Data Spaces)
数据空间是 Datadata 平台提供的数据托管服务,让你无需自建数据库即可在平台上直接创建、写入和查询数据表。
每个数据空间就是一个独立的 DuckDB 数据库,由平台负责存储与持久化。你可以在其中执行任意 DuckDB SQL 来管理表结构和数据,也可以把它作为数据源参与跨数据源的关联查询。
备注
数据空间的底层实现已从早期的 DuckLake 方案升级为「每个数据空间一个独立 DuckDB 数据库文件」。数据源类型标识符也由旧的 ducklake 更名为 dataspace(ducklake 已废弃)。
什么是数据空间
数据空间是平台托管的数据存储,具有以下特点:
- 每个数据空间是一个独立的 DuckDB 数据库,由平台托管、自动持久化
- 通过 SQL 直接建表、写入、改表、删表——支持任意 DuckDB DDL/DML
- 可以作为数据源与外部数据库一起参与跨数据源关联查询
- 适合承载 AI 生成的爬虫 / ETL 脚本的产出结果
读 / 写分离(重要)
数据空间有两条用途完全不同的访问路径,不可混淆:
| 目的 | 走哪条路 | 特性 |
|---|---|---|
| 改表结构 / 写数据 | 数据空间 SQL 执行接口 | 同步执行,直接在单一数据空间的 DuckDB 数据库上运行任意 DDL/DML,结果内联返回 |
| 查询 / 读取数据 | 查询引擎(execute-adhoc) | 把数据空间作为只读数据源挂载,支持跨数据源关联、DQL |
查询引擎会将数据空间以只读方式挂载,物理上无法写入——写入只能走数据空间 SQL 执行接口。
创建数据空间
- 在 Studio 侧边栏点击 数据源
- 点击 新建数据源 → 新建数据空间
- 填写数据空间名称
- 创建完成
创建后即得到一个类型为 dataspace 的数据源,可通过 API / AI Skills 引用。
管理数据空间中的表
数据空间 SQL 执行接口可以运行任意合法的 DuckDB SQL。在数据空间内部执行时,表名使用裸表名 tablename 或 main.tablename:
-- 建表
CREATE TABLE products (id INTEGER, name VARCHAR, price DOUBLE);
-- 插入数据(支持占位符参数化)
INSERT INTO products VALUES (?, ?, ?);
-- 查看表结构
DESCRIBE products;
-- 删表
DROP TABLE IF EXISTS products;
提示
修改表结构后,建议触发一次 Schema 扫描 刷新数据源元数据,使新表 / 新列在平台元数据中可见。
查询结果超过 10000 行会被截断。
查询数据空间中的数据
录入数据后,通过查询引擎(execute-adhoc)读取——把数据空间挂载为数据源,使用如下命名引用其中的表:
"{attachAlias}".main."{tableName}"
main是 DuckDB 的固定 schemaattachAlias是查询时为数据源指定的挂载别名,惯例上复用数据源名称
例如为一个名为 sales 的数据空间挂载后,即可 SELECT * FROM "sales".main."products"。
使用场景
- 数据清洗 — 将 CSV 等文件上传后,通过 SQL 或 DQL/Python 脚本清洗和转换,结果写入数据空间
- 中间结果存储 — 保存数据处理的中间结果供后续分析
- 数据集成 — 将来自不同数据源的数据整合到统一的数据空间
- 脚本产出落地 — 承接爬虫 / ETL 脚本抓取的数据
相关文档
- 数据查询 — 通过查询引擎读取数据空间
- Datadata Manual — 通过 MCP 工具创建与管理数据空间
- Datadata REST API — 通过 REST 接口在脚本中管理数据空间