data-asset-query
SKILL.md
数据资产查询技能
查询数据平台中表或字段的完整元数据信息。
快速开始
# 查询表信息(包含所有接口调用)
python data_asset_query.py <表名> [--product=项目名]
# 查询指定数据库中的表信息
python data_asset_query.py <库名.表名> [--product=项目名]
# 查询表信息和字段血缘
python data_asset_query.py <表名> --field=<字段名> [--product=项目名]
环境变量配置
使用本技能前,需要在本地机器上设置以下环境变量(环境变量值获取方式可参考:https://study.sf.163.com/documents/read/service_support/dsc-p-a-0116):
| 变量名 | 描述 | 示例 |
|---|---|---|
OPENAPI_DOMAIN |
OpenAPI域名 | http://111.124.204.156:10098 |
ACCESS_KEY |
访问密钥 | your_access_key |
SECRET_KEY |
密钥 | your_secret_key |
DEFAULT_USER |
默认用户邮箱 | user@example.com |
DEFAULT_PRODUCT |
默认项目名 | product_name |
DEFAULT_GROUP_ID |
默认项目组ID | 2 |
设置环境变量
Windows (PowerShell):
$env:OPENAPI_DOMAIN = "http://your-domain:port"
$env:ACCESS_KEY = "your_access_key"
$env:SECRET_KEY = "your_secret_key"
$env:DEFAULT_USER = "user@example.com"
$env:DEFAULT_PRODUCT = "product_name"
$env:DEFAULT_GROUP_ID = "2"
Linux/Mac:
export OPENAPI_DOMAIN="http://your-domain:port"
export ACCESS_KEY="your_access_key"
export SECRET_KEY="your_secret_key"
export DEFAULT_USER="user@example.com"
export DEFAULT_PRODUCT="product_name"
export DEFAULT_GROUP_ID="2"
调用的接口列表
查询表信息时,会调用以下6个接口:
| 接口名称 | 子产品 | 方法 | 路径 | 说明 |
|---|---|---|---|---|
| 表详情 | easydmap | POST | /table/v1/info/get | 获取表的详细信息 |
| 字段信息 | easydmap | POST | /field/v1/info/get | 获取表的所有字段信息 |
| Hive数据预览 | easydmap | POST | /table/v1/data/preview | 获取表的数据预览 |
| DML记录 | easydmap | GET | /table/v1/dml/get | 获取表的DML操作记录 |
| 表血缘 | easymetahub | GET | /lineage/v1/table/get | 获取表的上游/下游血缘 |
| 字段血缘 | easymetahub | GET | /lineage/v1/field/get | 获取字段的上游/下游血缘(仅当指定字段名时调用) |
功能说明
查询表时(输入表名):
获取完整的表信息,包括:
- 表详情(库名、表名、数据源、集群、负责人、主键等)
- 业务信息(主题域、分层、是否核心表、是否推荐表等)
- 存储信息(大小、文件数、存储类型、位置、创建/更新时间等)
- 字段信息(所有列的类型、主键、分区信息、描述等)
- 数据预览(样例数据)
- DML记录(最近操作记录:SELECT、INSERT、UPDATE、DELETE)
- 表血缘信息(上游/下游表)
查询字段血缘时(使用 --field 参数):
在表信息基础上,额外获取:
- 字段上游血缘(该字段的数据来源)
- 字段下游血缘(该字段被哪些字段使用)
使用示例
# 查询表信息
python data_asset_query.py dwd_ecom_order_fact_di --product=porduct_training
# 查询指定数据库中的表信息
python data_asset_query.py porduct_training.dwd_ecom_order_fact_di --product=porduct_training
# 查询表信息和字段血缘
python data_asset_query.py dwd_ecom_order_fact_di --field=channel_code --product=porduct_training
# 查询指定数据库中表的字段血缘
python data_asset_query.py porduct_training.dwd_ecom_order_fact_di --field=channel_code --product=porduct_training
输出格式
输出包含两部分:
- 格式化报告:易读的表信息汇总
- 原始API响应:所有接口的完整JSON响应
错误处理
| 错误码 | 描述 | 处理方式 |
|---|---|---|
| 42201 | 表/字段在血缘中不存在 | 该表/字段无血缘数据 |
| 42001 | 数据源ID不存在 | 检查数据源配置 |
| -2 | 系统异常 | 联系管理员 |
| -1 | 请求失败 | 检查网络/域名 |
| 缺少环境变量 | 配置错误 | 设置环境变量 |
| 无结果 | 表/字段未找到 | 检查名称拼写 |
依赖
- Python 3.7+
- requests库
安装依赖:
pip install -r requirements.txt
注意事项
- 时间戳必须在服务器时间的5分钟内
- 签名(sig)必须是32位小写MD5
- POST请求需要Content-Type: application/json请求头
- 部分API可能需要特定权限
- 血缘信息仅当表/字段有血缘数据时才可用