项目约定
目录结构
data_analysis/
├── lib/ # 核心库
│ └── odps_module.py # ODPS 客户端
├── tasks/ # 分析任务
│ ├── 00_表的洞察/ # 表结构探索(按表名建子目录)
│ ├── archive/ # 归档的旧任务
│ ├── 头部/ # 头部相关分析
│ ├── 承接/ # 承接相关分析
│ └── 其他分类.../ # 按主题分类
│ └── 任务名/
│ ├── query.sql
│ └── output/
├── fetch_daily.py # 按天增量获取数据(并发)
└── run_sql.py # SQL 执行入口脚本(日期范围)
命名规范
- 任务目录:中文表意,按主题分类存放
- SQL 文件:统一用
query.sql
- 输出目录:统一用
output/
- 归档:旧任务移至
archive/
SQL 变量
run_sql.py(日期范围查询)
${start} - dt 分区起始日期
${end} - dt 分区结束日期
- 默认值:最近 7 天(T-7 ~ T-1)
- 输出:
output/{start}_{end}.csv
fetch_daily.py(按天增量获取)
${dt} - 单天日期
- 支持并发,自动跳过已有数据
- 输出:
output/SQL文件名/{dt}.csv
运行任务
日期范围查询
python run_sql.py tasks/xxx/query.sql
按天增量获取
python fetch_daily.py tasks/xxx/query.sql # 最近7天
python fetch_daily.py tasks/xxx/query.sql --days 30 # 最近30天
python fetch_daily.py tasks/xxx/query.sql --start 20260101 --end 20260107
python fetch_daily.py tasks/xxx/query.sql --date 20260105 # 单天
python fetch_daily.py tasks/xxx/query.sql --force # 强制重新获取
python fetch_daily.py tasks/xxx/query.sql --workers 10 # 设置并发数
新建任务
- 在对应分类目录下创建任务目录,如
tasks/头部/任务名/
- 编写
query.sql,日期变量根据脚本选择:
- run_sql.py →
${start} 和 ${end}
- fetch_daily.py →
${dt}
- 运行对应脚本获取数据