独立的 Python 包,包含 3 个 CLI 工具(skill),用于 ODPS/MaxCompute 数据分析。
cd skills
uv pip install -e .
所有 skill 的产出文件(production_code/、output/ 等)都基于一个固定的基础路径。 安装后必须配置,配置一次即可:
export ODPS_SKILLS_DATA_DIR=/your/project/root
写入 shell 配置文件(如 ~/.zshrc、~/.bashrc、.env 等)可永久生效。
后续维护:如果项目目录迁移,只需改这一个环境变量。
run-sql --help
fetch-daily --help
fetch-table-code --help
| Skill | CLI 命令 | 用途 |
|---|---|---|
odps-run-query |
run-sql |
执行 SQL 查询,输出 CSV |
odps-fetch-daily |
fetch-daily |
按天增量获取数据(并发) |
odps-fetch-table-code |
fetch-table-code |
获取表的生产代码和 schema |
所有产出基于 $ODPS_SKILLS_DATA_DIR(下文简称 $ROOT):
$ROOT/
├── tasks/某个分析/
│ ├── query.sql
│ └── output/
│ ├── query_20260301_20260305.csv ← run-sql
│ └── query/ ← fetch-daily
│ ├── 20260301.csv
│ └── 20260302.csv
│
└── production_code/ ← fetch-table-code
├── loghubods.my_table.sql ← 生产 ETL 代码
└── loghubods.my_table.json ← schema(列名、类型、上游依赖)
| 目录 | 来源 | 说明 |
|---|---|---|
{sql_dir}/output/ |
run-sql / fetch-daily | 跟随 SQL 文件位置 |
$ROOT/production_code/ |
fetch-table-code | 表的代码 .sql + 结构 .json 统一存放 |
| 优先级 | 方式 | 适用场景 |
|---|---|---|
| 1 | --output-dir /path |
临时覆盖(仅 fetch-table-code 支持) |
| 2 | ODPS_SKILLS_DATA_DIR=/path |
推荐,配置一次永久生效 |
未配置环境变量且未传 --output-dir 时,CLI 会报错并提示配置方法。
skills/
├── pyproject.toml
├── README.md
├── src/odps_skills/
│ ├── __init__.py
│ ├── config.py # 路径配置(ODPS_SKILLS_DATA_DIR)
│ ├── client.py # ODPSClient
│ ├── dataworks.py # DataWorksClient
│ ├── feishu.py # 飞书 API
│ ├── run_sql.py # run-sql CLI
│ ├── fetch_daily.py # fetch-daily CLI
│ └── fetch_table_code.py # fetch-table-code CLI
├── odps-run-query/SKILL.md
├── odps-fetch-daily/SKILL.md
└── odps-fetch-table-code/SKILL.md