治理落地清单
元数据与血缘
- Glue Catalog 统一注册所有表,禁止游离的裸文件
- 每张表必须有 owner、业务口径说明与更新频率
- 字段级注释完整,特别是枚举值含义
- 加工任务的输入输出关系自动采集成血缘图
- 表的下游使用方可查,废弃前能通知到人
数据质量
- 关键表配置质量规则:非空、唯一、值域、行数波动
- 质量检查跑在加工流水线里,不通过就阻断下游
- 质量问题分级:阻断级、告警级、记录级
- 质量看板对业务方可见,建立信任
分级与权限
- 数据按敏感度分级:公开、内部、机密、绝密
- PII 字段识别(Macie 扫描)并标记
- Lake Formation 做表级、列级、行级权限控制
- 敏感字段对分析师默认脱敏,需申请才能看明文
- 所有查询留审计日志,可追溯谁在何时查了什么
Glue 数据质量规则示例
# Glue Data Quality 规则集:订单表
# 挂在 ETL 作业里,不通过则阻断下游加工
Rules = [
# 完整性:关键字段不能为空
IsComplete "order_id",
IsComplete "user_id",
IsComplete "created_at",
# 唯一性:主键不能重复
IsUnique "order_id",
# 值域:状态必须在枚举范围内
ColumnValues "order_status" in [
"created", "paid", "shipped", "completed", "cancelled", "refunded"
],
# 合理性:金额不能为负,也不该异常巨大
ColumnValues "total_amount" between 0 and 10000000,
# 时效性:当日分区必须有当日数据
ColumnValues "created_at" > (now() - 2 days),
# 体量波动:行数与 7 日均值偏差不超过 40%
# 突然暴涨或暴跌通常意味着上游出问题了
RowCount between 8000 and 200000,
# 引用完整性:用户 ID 必须存在于用户维表
ReferentialIntegrity "user_id" "silver.users.user_id" >= 0.99,
# 格式:手机号字段格式校验(已脱敏字段除外)
ColumnValues "contact_phone" matches "^1[3-9][0-9]{9}$" with threshold >= 0.95,
# 分布:渠道占比不应该突变(可能是埋点故障)
DistinctValuesCount "channel" between 3 and 20
]
RowCount 这条规则最实用。上游接口挂了导致数据量骤减,这条能第一时间拦住,避免错误数据流到看板。