DuckDB 实战笔记 - 2026-08-29

💸 别再手动对账了!5 行 SQL 自动揪出「消费刺客」

月底对账像破案?信用卡、微信、支付宝三份账单格式各异,Excel 合并到崩溃。今天用 DuckDB 直接读取 CSV 目录,一条 SQL 完成清洗+分类+异常检测。

场景:小张有 3 个 CSV(支付宝/微信/信用卡),字段名不同(金额 vs 交易额)。他想知道:哪笔钱花得最冤?

import duckdb

# 自动识别目录下所有 CSV,文件名作为来源表
duckdb.sql("""
INSTALL httpfs; LOAD httpfs;
-- 假设文件在本地 /data 目录
CREATE TABLE raw AS 
SELECT * FROM read_csv_auto('/data/*.csv', 
                             filename=true, 
                             header=true,
                             union_by_name=true);  -- 自动对齐不同列名

-- 统一字段 + 智能分类 + 异常标记(单笔超均值3倍)
CREATE TABLE clean AS 
SELECT 
    filename AS source,
    COALESCE(金额, 交易额, amount) AS amount,
    COALESCE(商品说明, 商品名称, description) AS item,
    CASE 
        WHEN item ILIKE '%外卖%' OR item ILIKE '%餐饮%' THEN '餐饮'
        WHEN item ILIKE '%滴滴%' OR item ILIKE '%地铁%' THEN '交通'
        ELSE '其他' END AS category,
    amount > 3 * (SELECT avg(amount) FROM raw) AS is_anomaly
FROM raw;

-- 直接输出「冤枉钱」排行
SELECT item, amount, source 
FROM clean 
WHERE is_anomaly 
ORDER BY amount DESC 
LIMIT 5;
""")

核心价值:

  • union_by_name=true 自动合并异构 CSV,省去 pandas 字段映射
  • 全程无 Python 循环,DuckDB 列式引擎处理百万行秒级完成
  • 一条 SQL 完成从文件扫描到异常检测,比 Excel 透视表灵活 10 倍

升级思路:/data/.csv 换成 s3://bucket/.csv,立刻变成云端账单分析器。配合 COPY clean TO ‘report.parquet’ 直接导出给 BI 工具。

今晚就用它给上个月的账单「体检」一遍。

📺 Watch video tutorials → Olap Studio YouTube

Subscribe for more DuckDB & AI automation tutorials

使用 Hugo 构建
主题 StackJimmy 设计

⚠️ 本站为独立社区项目,与 DuckDB 基金会及 DuckDB 官方项目无任何从属、背书或赞助关系。

"DuckDB" 是 DuckDB 基金会的注册商标,本站仅以事实描述方式使用该名称。

本站内容仅供教育与社区推广用途,不构成任何商业服务。