● 社群
AltimateAI
⚡ 即開即用
data-engineering-skills
作者 AltimateAI · AltimateAI/data-engineering-skills
9 個 Claude Code 技能,專為分析工程師設計:7 個 dbt 工作流程 + 2 個 Snowflake 查詢最佳化工具。在真實 dbt 任務上通過率 53%,Snowflake 調校通過率 84%。
涵蓋分析工程師日常工作的技能集。dbt 技能包括建立、除錯、測試、撰寫文件、遷移、重構及漸進式模型。Snowflake 技能可找出高成本查詢,並透過查詢文字或 query_id 進行最佳化。核心理念:「先讀再寫,寫完再建,建完再驗證。」
為什麼要用
核心特性
- 7 個 dbt 技能 — 建立、除錯、測試、撰寫文件、遷移、重構、漸進式模型
- 2 個 Snowflake 技能 — 找出高成本查詢、依文字或 id 最佳化
- 技能依任務情境自動啟用
- 已基準測試:真實環境 dbt 通過率 53%,Snowflake 最佳化通過率 84%
- 包含相依性追蹤與輸出驗證步驟
即時演示
實際使用效果
data-engineering-skill.replay
▶ 就緒
使用場景
實戰用法: data-engineering-skills
何時使用: dbt run 剛以不明確的錯誤訊息失敗,你不確定問題出在 schema、lineage 還是 SQL。
步驟
-
將錯誤與模型提供給 Claude
Use debugging-dbt-errors. Here's the stderr and models/marts/fct_orders.sql. Diagnose the root cause — don't guess.✓ 已複製
→ Claude 讀取上游 ref,依序診斷:schema → lineage → SQL
-
套用修復並驗證
Apply the fix and run dbt build --select fct_orders+. Show me the before/after row counts.✓ 已複製
→ 執行成功 + 資料列數驗證
結果: CI 通過,並記錄根本原因以防日後重現。
注意事項
- 修復了下游的症狀,但問題根源在上游 — 此技能強制從上游優先診斷;不要跳過 lineage 步驟
何時使用: 財務部門反映 Snowflake 帳單異常,你需要在不破壞儀表板的前提下降低成本。
前置條件
- 具備 ACCOUNT_USAGE 存取權限的 Snowflake 角色 — 通常為 ACCOUNTADMIN,或專用的成本管理角色
步驟
-
找出最耗費資源的查詢
Use finding-expensive-queries to list the top 20 queries in the past 30 days by credit cost. Group by app/user.✓ 已複製
→ 依 credits、執行時間、warehouse 排序的表格
-
逐一最佳化排名最高的查詢
For the top offender, use optimizing-query-by-id <query_id>. Propose rewrites with estimated savings.✓ 已複製
→ 重寫後的 SQL + 前後執行計畫比較
-
驗證並部署
Run the rewrite in a test warehouse — confirm same row count and shape before we swap.✓ 已複製
→ 可安全替換的候選版本
結果: 取得優先修復清單,並附有可量化的費用節省估算。
注意事項
- 重寫後資料列數悄悄改變 — 部署前務必比較差異——此技能會強制執行這個步驟
何時使用: 你接手了一個充滿巢狀 CTE 的資料倉儲,想將它們轉為有文件、有測試的 dbt 模型。
步驟
-
將來源 SQL 指定給技能處理
Use migrating-sql-to-dbt. Here's proc_monthly_revenue.sql. Convert it to dbt models with refs, documentation, and at least 2 tests per model.✓ 已複製
→ 一個或多個 .sql 檔案,以及包含文件與測試的 schema.yml
-
建置並驗證
dbt build the new models and compare row counts to the legacy output.✓ 已複製
→ 資料列數在允許誤差範圍內吻合
結果: 舊有邏輯以可測試的 dbt 模型形式保留。
注意事項
- Procedure 中有隱藏的副作用(例如 UPDATE) — 此技能會標記副作用——請將它們分離出來,不要盲目轉換
何時使用: 某個每日模型的資料量已大到無法進行全量刷新。
步驟
-
分析模型
Use developing-incremental-models on models/events.sql. Pick a strategy (merge / insert_overwrite / delete+insert) and justify.✓ 已複製
→ 建議的策略 + unique_key + partition / cluster 鍵
-
實作並回填
Apply the incremental config; outline a safe back-fill plan.✓ 已複製
→ 模型 + 回填步驟
結果: 每日執行從數小時縮短至數分鐘。
注意事項
- 遲到資料導致 unique_key 出現重複 — 使用 merge 策略並加以測試
組合
與其他 MCP 搭配,撬動十倍槓桿
將相同的依 id 最佳化模式套用至 BigQuery 高成本查詢
Adapt finding-expensive-queries for BigQuery INFORMATION_SCHEMA.JOBS and list top 20.✓ 已複製
data-engineering-skill +
github
每個遷移的模型各自開一個 PR,方便逐一審查
For every migrated model, open a GitHub PR with dbt test output attached.✓ 已複製
成本與限制
運行它的成本
- API 配額
- Snowflake 查詢與其他操作一樣會消耗 credits——讀取 ACCOUNT_USAGE 的費用很低
- 每次呼叫 Token 數
- 每次呼叫 dbt 技能約消耗 5–15k tokens
- 費用
- 免費技能
- 提示
- 每週執行一次 finding-expensive-queries,而非每次工作階段都執行
安全
權限、密鑰、影響範圍
最小權限: dbt: read + write to your project Snowflake: ACCOUNT_USAGE for cost skills
憑證儲存: dbt profiles.yml / Snowflake 金鑰對存放於環境變數;此技能不會儲存任何憑證
資料出站: 技能本身不會對外傳送任何資料
切勿授予: SYSADMIN to the Claude session unless absolutely needed
故障排查
常見錯誤與修復
dbt compile succeeds, run fails with column not found
lineage 快取過時——執行 dbt deps + dbt clean + dbt build --select model+
finding-expensive-queries returns nothing
ACCOUNT_USAGE 有約 45 分鐘延遲;另請確認角色已被授予 SNOWFLAKE.ACCOUNT_USAGE 權限
驗證: SHOW GRANTS TO ROLE <role>
替代方案
data-engineering-skills 對比其他方案
| 替代方案 | 何時用它替代 | 權衡 |
| dbt Cloud IDE | 偏好使用托管介面而非終端機操作時 | 無法在流程中使用 Claude |
| SQL query optimizers (Select.dev, etc.) | 需要視覺化查詢計畫時 | 獨立工具,需切換情境 |