name: chat2duckdb description: 基於 DuckDB 引擎的高效資料分析工具;當用戶需要對 CSV/JSON/Parquet/Excel 等資料檔案進行 SQL 查詢、資料分析、資料抽樣或需要自動糾錯的查詢執行時使用 dependency: python: - duckdb>=1.5.0 - pandas>=2.0.0 - numpy>=1.24.0 - openpyxl>=3.1.0
duckdb>=1.5.0
pandas>=2.0.0小蔥技能站7w4.net每天更新,海量AI技能等你發現。
確認資料檔案路徑(CSV/JSON/Parquet/Excel 等格式)
# 完整統計模式(推薦)
python scripts/duckdb_analyzer.py --file_path ./data.csv --mode describe
# 簡單模式(僅基本資訊)
python scripts/duckdb_analyzer.py --file_path ./data.csv --mode describe --simple
# 匯出分析報告
python scripts/duckdb_analyzer.py --file_path ./data.csv --mode describe --output report.json
# Excel 檔案(預設讀取第一個工作表)
python scripts/duckdb_analyzer.py --file_path ./data.xlsx --mode describe
# Excel 檔案(指定工作表)
python scripts/duckdb_analyzer.py --file_path ./data.xlsx --excel_sheet "sheetTitle" --mode describe
# 基礎查詢
python scripts/duckdb_analyzer.py --file_path ./data.csv --mode query \
--sql "SELECT * FROM data LIMIT 10"
# 聚合查詢
python scripts/duckdb_analyzer.py --file_path ./data.csv --mode query \
--sql "SELECT category, SUM(price * quantity) as total_sales FROM data GROUP BY category"
# 抽樣驗證(先在小樣本上測試)
python scripts/duckdb_analyzer.py --file_path ./data.csv --mode query \
--sql "SELECT * FROM data WHERE price > 100" --sample_fraction 0.1
# 匯出查詢結果(支援 CSV/Excel/JSON/Parquet)
python scripts/duckdb_analyzer.py --file_path ./data.csv --mode query \
--sql "SELECT * FROM data" --output result.csv
python scripts/duckdb_analyzer.py --file_path ./data.csv --mode query \
--sql "SELECT * FROM data" --output result.xlsx
# 持久化到 DuckDB 檔案(後續可直接關聯查詢)
python scripts/duckdb_analyzer.py --file_path ./data.csv --mode query \
--persist_db_path ./analysis.duckdb --persist_table \
--sql "SELECT category, SUM(price * quantity) as total_sales FROM data GROUP BY category"
--persist_db_path:指定 DuckDB 資料庫檔案路徑--persist_table:將登錄檔持久化為普通表(預設是臨時表)--sample_fraction 引數在小樣本上驗證--max_retries 引數調整重試次數場景:拿到新資料集,需要了解資料結構和質量
命令:
python scripts/duckdb_analyzer.py --file_path ./sales_data.csv --mode describe
輸出包含: - 基本資訊:20 行,7 列 - 表結構:各欄位名稱和資料型別 - 數值列統計:price 的平均值 356.99,中位數 264.99 等 - 分類列統計:category 有 2 個唯一值,Electronics 出現 12 次 - 日期列統計:sale_date 從 2024-01-15 到 2024-02-02 - 資料質量:所有列資料完整,無缺失值
場景:分析各類別產品的銷售表現
命令:
python scripts/duckdb_analyzer.py --file_path ./sales_data.csv --mode query \
--sql "SELECT category, COUNT(*) as num_products, SUM(price * quantity) as total_revenue, AVG(price) as avg_price FROM data GROUP BY category ORDER BY total_revenue DESC"
輸出:
執行 SQL: SELECT category, COUNT(*) as num_products, SUM(price * quantity) as total_revenue, AVG(price) as avg_price FROM data GROUP BY category ORDER BY total_revenue DESC
【查詢結果】
執行時間:0.05 秒
重試次數:0
結果行數:2
資料預覽:
category num_products total_revenue avg_price
Electronics 12 42938.24 356.99
Furniture 8 19949.23 356.99
業務洞察: - Electronics 類別貢獻了 68% 的總收入 - 兩個類別的平均價格相同,但 Electronics 銷量更高
場景:分析不同區域的銷售情況
命令:
python scripts/duckdb_analyzer.py --file_path ./sales_data.csv --mode query \
--sql "SELECT region, COUNT(*) as num_orders, SUM(price * quantity) as total_sales, AVG(price) as avg_order_value FROM data GROUP BY region ORDER BY total_sales DESC"
場景:找出高價產品(price > 200),先在 10% 樣本上驗證
命令:
# 先在樣本上驗證
python scripts/duckdb_analyzer.py --file_path ./sales_data.csv --mode query \
--sql "SELECT product_name, category, price FROM data WHERE price > 200" --sample_fraction 0.1
# 驗證無誤後執行完整查詢
python scripts/duckdb_analyzer.py --file_path ./sales_data.csv --mode query \
--sql "SELECT product_name, category, price FROM data WHERE price > 200 ORDER BY price DESC"
場景:SQL 有語法錯誤(多餘分號),系統自動校正
命令:
python scripts/duckdb_analyzer.py --file_path ./sales_data.csv --mode query \
--sql "SELECT * FROM data WHERE price > 100;"
輸出:
【SQL 校正記錄】
✓ 語法校正:;\s*$ ->
【查詢結果】
執行時間:0.03 秒
重試次數:1
結果行數:15
場景:將查詢結果儲存為 CSV、Excel、JSON 或 Parquet 檔案
CSV 匯出:
python scripts/duckdb_analyzer.py --file_path ./sales_data.csv --mode query \
--sql "SELECT category, region, SUM(price * quantity) as sales FROM data GROUP BY category, region" \
--output sales_summary.csv
Excel 匯出:
python scripts/duckdb_analyzer.py --file_path ./sales_data.csv --mode query \
--sql "SELECT category, region, SUM(price * quantity) as sales FROM data GROUP BY category, region" \
--output sales_summary.xlsx
JSON 匯出:
python scripts/duckdb_analyzer.py --file_path ./sales_data.csv --mode query \
--sql "SELECT category, region, SUM(price * quantity) as sales FROM data GROUP BY category, region" \
--output sales_summary.json
Parquet 匯出:
python scripts/duckdb_analyzer.py --file_path ./sales_data.csv --mode query \
--sql "SELECT category, region, SUM(price * quantity) as sales FROM data GROUP BY category, region" \
--output sales_summary.parquet
結果:根據副檔名自動選擇匯出格式,儲存為相應檔案
場景:分析銷售趨勢
命令:
python scripts/duckdb_analyzer.py --file_path ./sales_data.csv --mode query \
--sql "SELECT DATE_TRUNC('month', sale_date) as month, SUM(price * quantity) as monthly_sales FROM data GROUP BY month ORDER BY month"
Q1: 檔案找不到?
錯誤:資料檔案不存在:./data.csv
解決:檢查檔案路徑是否正確,使用絕對路徑試試
Q2: Excel 讀取失敗?
錯誤:無法註冊資料表:...
解決:
- 確認檔案為 .xlsx 或 .xls
- 如工作表不在第一個,新增引數 --excel_sheet "工作表名"
- 檢查是否安裝 openpyxl
Q3: SQL 執行失敗? 系統會自動重試和校正 SQL,如果仍然失敗,檢查: - 列名是否正確(區分大小寫) - SQL 語法是否正確 - 表名是否使用了預設的 'data'
Q4: 記憶體不足?
解決:
- 使用抽樣查詢:--sample_fraction 0.1
- 新增 LIMIT 限制結果數量
- 使用聚合查詢而非全表查詢
先用 describe 瞭解資料,再執行多個查詢:
# 步驟 1:探索資料
python scripts/duckdb_analyzer.py --file_path ./data.csv --mode describe
# 步驟 2:基於瞭解執行針對性查詢
python scripts/duckdb_analyzer.py --file_path ./data.csv --mode query \
--sql "SELECT category, AVG(price) as avg_price FROM data GROUP BY category"
對於大數據集:
# 先用 1% 樣本快速驗證
python scripts/duckdb_analyzer.py --file_path ./large_data.csv --mode query \
--sql "SELECT ..." --sample_fraction 0.01
# 驗證通過後再執行完整查詢
python scripts/duckdb_analyzer.py --file_path ./large_data.csv --mode query \
--sql "SELECT ..."
python scripts/duckdb_analyzer.py --file_path ./data.csv --mode describe | grep "缺失"
,;() 轉 ,;())datainf/-inf -> NULL)data 表生成SELECT "銷售渠道", SUM("售後退款-僅退貨金額") AS total_return
FROM data
GROUP BY "銷售渠道"
ORDER BY total_return DESC
LIMIT 10
SELECT 銷售渠道, SUM(售後退款-僅退貨金額) AS total_return
FROM data
GROUP BY 銷售渠道
這個 Skill 質量較好,能滿足日常資料分析和 SQL 查詢需求。它支援多種常見資料格式,可以快速瞭解資料結構和統計特徵,還具備智慧糾錯能力來自動修復 SQL 小錯誤。功能比較全面,但如果你不熟悉 SQL 可能需要一定學習成本。另外部分功能說明與實際支援情況存在小出入,使用時需要注意。總體而言是一款實用、可靠的資料分析工具。