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。