7. 快取与数据重复利用
快取功能让你将某次查询的结果「暂存」为一张可查询的表,方便在其他查询中直接引用。
7.1 什么是快取表(Cached Table)
当你使用持久标签页执行查询时,查询结果会自动被快取为一张以标签页名称命名的暂存表。这张表会出现在侧边栏 Data 区块下的 Cached 一级节点中,你可以在其他 SQL 查询中直接引用它。
7.2 如何产生快取
- 建立一个标签页并撰写 SQL 查询。
- 保存标签页(使其成为持久标签页)。
- 执行查询 — 结果会自动快取为一张与标签页同名的表。
例如,你有一个名为 clean_orders 的持久标签页,执行后,它的查询结果就会变成一张名为 clean_orders 的快取表。
7.3 在 SQL 中引用其他标签页的快取结果
你可以在任何 SQL 中直接使用快取表的名称。例如:
SELECT category, SUM(amount) AS total
FROM "clean_orders"
GROUP BY category
这里的 "clean_orders" 就是另一个持久标签页的快取结果。
提示: 展开 Data → Cached,双击快取表名称,即可自动将其插入编辑器。
7.4 管理快取(查看 / 刷新 / 删除)
快取表清单会随 Data 标题列的 Refresh(重新加载图标)一并更新——该按钮会同时重新扫描本地文件、刷新快取列表、并对已加载的外部连接重新抓取 schema。
Cached (n) 父列(清单标题列):
在 Cached (n) 父列右键可:
| 操作 | 说明 |
|---|---|
| Sort by… | Name 或 Modified time 四种组合;默认为修改时间最新优先(见 §4.1「列表排序」) |
| Clear Agent Cache | 删除目前工作区内所有 Agent 快取 |
| Clear All Cache | 删除目前工作区内全部快取表(含 persist 与 agent) |
批量清除进行中时,上述选单项会暂时停用。
单一快取项目:
每个快取项目以单行呈现:快取表名称在左,更新时间在右。右键点击快取项目可打开操作选单。
所有快取项目共有的操作:
| 操作 | 说明 |
|---|---|
| SELECT 100 rows | 将 SELECT * FROM "表名" LIMIT 100 插入编辑器,快速预览 |
| 查看 SQL | 打开只读对话框,显示产生该快取的 SQL;可复制或插入编辑器 |
| Delete | 删除此快取表 |
由持久标签页产生的快取表(persist 快取) 另提供:
| 操作 | 说明 |
|---|---|
| Run | 重新执行产生该快取的标签页 SQL |
| Source Run | 执行来源执行(见第 8 章) |
| Open Tab | 打开产生该快取的持久标签页 |
| Check Lineage | 查看血统分析图(见第 8 章) |
由 AI Agent 产生的快取表(agent 快取):
AI 在后台多步分析时,系统会依条件物化策略将中间结果注册为可查表(见 §12.6)。agent 快取不参与 Source Run,但可在其他 SQL 中 FROM 引用。查看 SQL 时,副标题显示「Agent 快取」;persist 快取显示「持久标签页快取」,SQL 通常来自标签页内容。
若 SQL 已不可用(例如旧版快取或结果已过期),对话框会显示提示文案,仍可删除快取或重新执行对应标签页。
删除快取与对话步骤记录: 右键 Delete 会从 DuckDB 移除快取表,并在对话级 Query Step Ledger 将对应步骤标记为 deleted(不删除历史 JSON)。之后 AI 的 Recent Query Steps 摘要与 list_query_steps 默认不再列出已删快取;若需重新分析,Agent 应重新执行查询并物化新快取。
注意: 快取表在以下情况会被清除:切换工作区、重新启动应用程序。需要时,重新执行对应标签页即可重新产生。
[图片] 侧边栏 Data 下的 Cached 节点,显示快取表列表与右键选单
[图片] SQL 引用快取表的示例
设计说明: 快取语意、条件物化与查看 SQL 的设计 rationale 见 统一查询层 §7.1。