DuckDB + Python + Cron:用 50 行代码打造自动化收入报表系统
你是否曾经每天花费数小时在重复的取数、合并、计算工作上?作为一名运营或财务分析师,你是否被那些从不同后台导出的 Excel/CSV 表格所困扰?我接触过一位叫阿成的电商运营分析师,他曾经每天要花 2 小时手动合并各业务线的销售数据,计算 GMV、转化率等核心指标。直到他学会了用 DuckDB + Python + Cron 构建自动化报表系统后,每天节省下来的 2 小时不仅让他能深入分析数据,还帮他开发出了新的内部数据产品。
这就是今天我们要分享的——如何用一套轻量但强大的组合,打造一个真正能提升工作效率的自动化日报系统。你不需要 Airflow 这样重量级的调度工具,对一个人或小型团队来说,这套方案已经足够强大,而且实施成本几乎为零。
一、场景:你的电商日报
假设你有多个业务线的销售数据,分别存在不同的 CSV 文件中:
data/
├── day1_beige.csv # 米色服装线
├── day2_black.csv # 黑色服装线
└── day3_white.csv # 白色服装线
每份 CSV 包含字段:order_id, product_name, amount, region, sale_date。
目标是:每天早上 8 点自动读取所有 CSV,按区域和品类汇总销售额,生成当日报告。
这个看似简单的需求,背后其实涉及了多个关键技术点:多文件合并读取、SQL 聚合分析、结果格式化和定时任务部署。而 DuckDB 恰好能在每一个环节都提供出色的表现。
二、核心实现:一个完整的 Python 脚本
让我来展示一个可直接运行的完整脚本。这段代码只有不到 50 行,却能完成从数据读取到报告生成的全流程。
# daily_income_report.py
import duckdb
import pandas as pd
from pathlib import Path
from datetime import datetime
import os
# ============================================================
# 步骤 1:批量读取所有 CSV 文件(使用 DuckDB 原生支持)
# ============================================================
data_dir = Path("data")
os.makedirs(data_dir, exist_ok=True)
# DuckDB 的 globbing 功能可以直接匹配多个文件,比 Pandas 快 10 倍以上
con = duckdb.ATTACH ()
result = con.execute("""
