# ODPS Skills — 自包含数据分析工具包 独立的 Python 包,包含 3 个 CLI 工具(skill),用于 ODPS/MaxCompute 数据分析。 ## 安装 & 配置 ### 1. 安装包 ```bash cd skills uv pip install -e . ``` ### 2. 配置产出路径(必选) 所有 skill 的产出文件(production_code/、output/ 等)都基于一个固定的基础路径。 安装后必须配置,配置一次即可: ```bash export ODPS_SKILLS_DATA_DIR=/your/project/root ``` 写入 shell 配置文件(如 `~/.zshrc`、`~/.bashrc`、`.env` 等)可永久生效。 > 后续维护:如果项目目录迁移,只需改这一个环境变量。 ### 3. 验证 ```bash run-sql --help fetch-daily --help fetch-table-code --help ``` ## Skills 一览 | 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 ```