# 项目约定 ## 目录结构 ``` 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` ## 运行任务 ### 日期范围查询 ```bash python run_sql.py tasks/xxx/query.sql ``` ### 按天增量获取 ```bash 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 # 设置并发数 ``` ## 新建任务 1. 在对应分类目录下创建任务目录,如 `tasks/头部/任务名/` 2. 编写 `query.sql`,日期变量根据脚本选择: - run_sql.py → `${start}` 和 `${end}` - fetch_daily.py → `${dt}` 3. 运行对应脚本获取数据