name: solve-question description: 解析 Databricks 認證考試題目,產出符合 analysis-template 的完整分析,包含考點識別、正解說明、逐項排除邏輯、記憶法與官方文件引用。當需要解析考試題目或建立題目解析時使用。 allowed-tools: Read, Edit, Write, Grep
Solve Question - 題目解析技能
依照標準模板解析 Databricks 認證考試題目,著重「逐項排除邏輯」
🎯 技能目的
此技能用於將單一考試題目轉化為符合 analysis-template.md 格式的完整解析,確保:
- 邏輯清晰 - 每個錯誤選項都有明確的排除理由
- 結構一致 - 輸出符合專案標準模板
- 可複習性 - 包含記憶法與解題技巧
📥 輸入格式
必要資訊
**題目 ID:** Q-XXX
**題幹:** [題目描述]
**選項:**
- A. [選項 A]
- B. [選項 B]
- C. [選項 C]
- D. [選項 D]
**正確答案:** [A/B/C/D]
選填資訊
- 來源: 題目來源(Mock Exam / Official / Community)
- 難度: 預估難度等級
- 相關文件: 已知的官方文件連結
📤 輸出結構
輸出必須符合 question-bank/_template/analysis-template.md 的完整結構:
核心區塊(必須包含)
- 📍 考點識別 - 主要與次要考點
- ✅ 正解說明 - 為什麼正確答案是對的
- ❌ 錯誤選項排除 - 逐一拆解每個錯誤選項
- 🧠 記憶法與解題技巧 - 記憶口訣、解題步驟、陷阱警示
- 📚 官方文件與延伸閱讀 - 至少 1 個官方文件連結
- 🏷️ 標籤與分類 - Topic Tags, Trap Tags, Level Tags
🔑 核心原則:逐項排除邏輯
排除邏輯的四個層次
1. 語法錯誤排除
指出選項的語法、拼寫、參數順序等明顯錯誤。
範例:
### 選項 A - `VACCUM table_name RETAIN 30 HOURS`
**錯誤原因:** 語法錯誤
**詳細分析:**
指令拼寫錯誤,正確應為 `VACUUM`(有 U),而非 `VACCUM`。
這是典型的「拼寫陷阱」,測試是否熟悉正確語法。
2. 概念混淆排除
指出選項混淆了不同概念或功能。
範例:
### 選項 B - `OPTIMIZE table_name ZORDER BY (date_column)`
**錯誤原因:** 指令用途錯誤
**詳細分析:**
OPTIMIZE 用於合併小檔案與重新排序資料,**不會刪除舊版本檔案**。
此選項混淆了 OPTIMIZE(效能優化)與 VACUUM(空間清理)的用途。
**易混淆點:**
兩者都是 Delta Lake 維護指令,但目的完全不同:
- OPTIMIZE: 提升查詢效能
- VACUUM: 釋放儲存空間
3. 參數錯誤排除
指出選項的參數值、單位、或條件設定錯誤。
範例:
### 選項 C - `VACUUM table_name RETAIN 30 HOURS`
**錯誤原因:** 時間單位換算錯誤
**詳細分析:**
題目要求「刪除超過 30 天的舊版本」,30 天 = 30 × 24 = **720 小時**。
此選項僅保留 30 小時(約 1.25 天),與需求不符。
**易混淆點:**
數字陷阱 - 題目中的「30 天」與選項中的「30」數字相同,但單位不同。
VACUUM 只接受 HOURS 作為單位,需自行換算。
4. 行為誤解排除
指出選項對指令執行行為、副作用、或結果的誤解。
範例:
### 選項 D - `DELETE FROM table_name WHERE _commit_timestamp < current_date() - 30`
**錯誤原因:** 混淆邏輯刪除與實體刪除
**詳細分析:**
DELETE 只會**標記資料為刪除**(邏輯刪除),不會實際釋放儲存空間。
舊版本檔案仍保留在儲存層,需配合 VACUUM 才能真正清理。
**易混淆點:**
- DELETE: 邏輯刪除,資料仍可透過 Time Travel 復原
- VACUUM: 實體刪除,永久釋放空間
📋 完整使用範例
輸入
**題目 ID:** Q-MOCK01-023
**題幹:** 在 Delta Lake 中,您需要永久刪除超過 30 天的舊版本資料以節省儲存空間。以下哪個指令可以達成此目的?
**選項:**
- A. VACUUM table_name RETAIN 30 HOURS
- B. VACUUM table_name RETAIN 720 HOURS
- C. DELETE FROM table_name WHERE _commit_timestamp < current_date() - 30
- D. OPTIMIZE table_name ZORDER BY (date_column)
**正確答案:** B
輸出
# 題目解析
## 題目回顧
**題目 ID:** Q-MOCK01-023
**正解:** B
---
## 📍 考點識別
### 主要考點
**核心技術:** Delta Lake VACUUM 指令
**知識領域:** Delta Lake - Data Retention
**關鍵概念:**
- VACUUM 的預設保留期限
- 時間單位換算 (HOURS)
- 儲存空間管理
### 次要考點
- VACUUM 與 DELETE、OPTIMIZE 的差異
- Delta Lake 版本管理機制
---
## ✅ 正解說明
### 為什麼 B (VACUUM table_name RETAIN 720 HOURS) 是正確的?
**技術原理:**
VACUUM 會永久刪除不再被任何版本參照的舊資料檔案。RETAIN 參數指定要保留的最小時間閾值,預設為 168 小時(7 天)。
**符合需求:**
題目要求「刪除超過 30 天的舊版本」,30 天 = 30 × 24 = 720 小時,因此 `RETAIN 720 HOURS` 正確。
**實務應用:**
\`\`\`sql
VACUUM my_table RETAIN 720 HOURS; -- 保留 30 天內的資料
\`\`\`
執行後,30 天前的舊版本檔案將被永久刪除,無法透過 Time Travel 復原。
---
## ❌ 錯誤選項排除
### 選項 A - VACUUM table_name RETAIN 30 HOURS
**錯誤原因:** 時間單位換算錯誤
**詳細分析:**
此選項僅保留 30 小時(約 1.25 天)的資料,而非 30 天。
這是典型的「數字陷阱」,誤將天數直接當作小時數使用。
**易混淆點:**
- 題目中的「30 天」數字與選項中的「30」數字相同,但單位不同
- VACUUM 只接受 HOURS 作為單位,需自行換算天數
---
### 選項 C - DELETE FROM table_name WHERE _commit_timestamp < current_date() - 30
**錯誤原因:** 混淆邏輯刪除與實體刪除
**詳細分析:**
1. DELETE 只會標記資料為刪除(邏輯刪除),**不會實際釋放儲存空間**
2. `_commit_timestamp` 不是標準欄位,無法直接使用
3. 即使刪除成功,舊版本檔案仍保留,需配合 VACUUM 才能清理
**易混淆點:**
- DELETE: 邏輯刪除,資料仍可透過 Time Travel 復原
- VACUUM: 實體刪除,永久釋放空間
---
### 選項 D - OPTIMIZE table_name ZORDER BY (date_column)
**錯誤原因:** 指令用途錯誤
**詳細分析:**
OPTIMIZE 用於合併小檔案與重新排序資料(Z-Order),**不會刪除舊版本檔案**。
此選項混淆了 OPTIMIZE(效能優化)與 VACUUM(空間清理)的用途。
**易混淆點:**
兩者都是 Delta Lake 維護指令,但目的完全不同:
- OPTIMIZE: 提升查詢效能(合併檔案、重新排序)
- VACUUM: 釋放儲存空間(刪除舊版本)
---
## 🧠 記憶法與解題技巧
### 記憶口訣
"**VACUUM 吸塵器,清理舊檔案;RETAIN 加小時,天數要乘 24**"
### 解題步驟
1. **識別關鍵字「永久刪除」** → 想到 VACUUM
2. **排除明顯錯誤** → DELETE (邏輯刪除) 和 OPTIMIZE (效能優化)
3. **計算時間** → 30 天 × 24 小時 = 720 小時
4. **選擇正解** → VACUUM ... RETAIN 720 HOURS
### 常見陷阱警示
⚠️ **陷阱 1:** 時間單位混淆 - VACUUM 只接受 HOURS,需自行換算
⚠️ **陷阱 2:** 指令用途混淆 - DELETE、VACUUM、OPTIMIZE 功能完全不同
⚠️ **陷阱 3:** 數字陷阱 - 題目中的數字可能與選項數字相同但單位不同
---
## 📚 官方文件與延伸閱讀
### 官方文件
1. **[VACUUM | Databricks Documentation](https://docs.databricks.com/sql/language-manual/delta-vacuum.html)** - VACUUM 指令的完整說明與參數
2. **[Delta Lake Data Retention](https://docs.databricks.com/delta/history.html)** - Delta Lake 版本管理機制
### 延伸閱讀
- [Delta Lake Best Practices](https://docs.databricks.com/delta/best-practices.html)
### 相關題目
- `Q-DELTA-018` - Delta Lake Time Travel 功能
- `Q-DELTA-031` - OPTIMIZE 與 ZORDER 效能調校
---
## 🏷️ 標籤與分類
**Topics:** `Delta-Lake`, `Data-Retention`, `Storage-Management`
**Traps:** `Unit-Confusion`, `Number-Trap`
**Difficulty:** `L2-Intermediate`
💡 使用技巧
1. 按順序分析
先識別考點 → 說明正解 → 逐項排除錯誤選項 → 總結技巧
2. 重視排除邏輯
每個錯誤選項都要回答:
- 為什麼錯? (錯誤原因)
- 錯在哪裡? (詳細分析)
- 為什麼容易誤選? (易混淆點)
3. 提供實務價值
- 記憶口訣要具體可用
- 解題步驟可套用同類題目
- 陷阱警示幫助避開常見錯誤
🔍 品質檢查清單
在完成解析前,請確認:
- 所有錯誤選項都有明確的排除理由
- 至少提供 1 個官方文件連結
- 包含記憶口訣或解題技巧
- 標籤符合
.github/skills/tagging-schema/references/tagging-schema.md規範 - 輸出結構符合
analysis-template.md
📞 相關資源
- analysis-template.md - 標準解析模板
- tagging-schema.md - 標籤規範
- contribution-guide.md - 貢獻指南
透過逐項排除邏輯,將每個題目轉化為可複習的知識資產!🎓