受众:产品 / CTO。实现细节见
14-埋点同步-开发.md;全量事件+字段目录见16-埋点raw建模.md;事件粒度重构见93-架构决策.mdADR-13。
_search 导出为 NDJSON.gz(每行一个 ES hit,载荷在 _source)/data/upload/traces/traces-YYYY-MM-DD.json.gz;历史存量一次性补receiverName / receiverTelephone / receiverArea / receiverAddress),出现在 5 个下单/地址类事件(明细见 16-埋点raw建模.md)固定服务器 gz(运维每日放昨日 + 历史一次性)
│ hdfs put 到临时目录
▼
Spark SQL(读 gz text → 脱敏 UDF) ← 入仓前脱敏(合规破例,见 §4)
▼
raw 薄表(脱敏后 _source 整行 JSON)
▼
ods(解析拍平公共属性 + params 半结构化)
▼
dwd(事件分类,待埋点重构后建,ADR-13)
kb/20 §6 脚注)。历史与增量同一套 SQL + 包装脚本,仅 -dt 传参不同(增量=昨日,历史=补跑多 dt)。raw.raw_usr_traces_apd_d(不可变事件流 → apd_d 追加)。数仓默认 raw 走 schema-on-read landing(原样落、ods 再解析)。本场景主动破例——入仓前先脱敏:
22-业务库raw建模 §0.1 理由 |
适用 | 说明 |
|---|---|---|
| 1. 隔离源端类型变化 | ✗ | 埋点 schema 长尾,新事件/字段需协作通知 |
| 2. 同步阶段不可失败 | △ | 对 JSON 解析失败做容错(返回 null,raw 兜底) |
| 3. 保留原始精度与原文 | ✗ | 合规就是要丢字段 |
| 4. 脏数据可观测 | △ | 事件可观测,脱敏后字段不可回溯(合规接受) |
| 5. schema-on-read 契合 | ✗ | 合规要求物理拦截,不能等 ods |
破例最小化:raw 只做脱敏、不拍平(仍是"近原样落 _source",只是删了敏感字段);拍平/类型转换归 ods、事件分类归 dwd。
| 动作 | 含义 | 现状 |
|---|---|---|
drop(=trim) |
整字段删除,不入 raw | 当前唯一启用(收货四要素) |
mask |
字段保留、值脱敏 | 备用,方法见下 |
脱敏方法清单复用项目单一真值(conf/templates/datax/mask/mask.template.ini):md5 / month_trunc / mask_middle / keep_first_n / keep_last_n。机制不复用 datax/mask.py(那是源 DB 端 SQL 脱敏;埋点无源库),方法语义与 ini 格式复用、执行另写(dw_base/tracking/mask.py)。
脱敏规则集中在 conf/tracking-mask.ini,按事件分段 [event:<事件名>],作用于 properties 顶层与 params 两层。
| 场景 | 处理 |
|---|---|
| 新事件 + 无敏感字段 | 默认入仓,无需通知 |
| 新事件 + 有敏感字段 / 老事件加敏感字段 | 强制走流程:埋点开发方注明 → 数仓更新 tracking-mask.ini |