来自不同来源的数据合并
来自不同来源的数据合并
数据融合是将异构流(产品DB,CRM,支付提供商,事件日志和第三方注册表)组合成整体实体和一致性店面的过程。目的是获得"金唱片"(Golden Record)和用于分析,ML和运营案例的统一切口。
1)示范设想方桉和目标
实体360°:客户/玩家,设备,支付工具,商人。
交易整合:多个PSP/结帐 →具有强制性等效性的单一日志。
事件正常化:Web/mobile/backend logi →一个事件词典。
丰富:外部目录(地理,FX,AML/制裁,营销来源)。
统一度量标准:货币/时间区、电路和编码匹配。
2)来源和计划合同
开始之前-每个源的数据合同:- 图:字段、类型、零值、键(和)、值域。
- 语义:每个字段(字典)的含义。
- SLA:新鲜/频率,最大延迟和订单外。
- 演变:方案更改策略(backward/forward),deprecation。
- 质量:按键唯一性、有效范围、参考完整性。
3)识别: 密钥和匹配(记录链接)
3.1.硬标识符
自然键:'user_id','transaction_id','device_id','iban'。
代理密钥:电子邮件/电话(标准化:寄存器,空格,国家代码)。
在没有通用密钥的情况下,在中心表中表示"surrogate_id"。
3.2.软匹配规则
确定性:归一化电子邮件+DR的精确匹配;"家庭"/"暴民"电话→ E.164。
概率(fazzy):名称/地址为Jaro-Winkler/Levenshtein,字符串为TF-IDF/embeddings,粗略哈希/前缀为"锁定"(阻塞)以加速。
图形方法:实体为节点,重合为边缘;聚类连通性组件。
"步进"策略:从严格到宽松的规则,手动咆哮"在边境"。
3.3.整合规则(生存)
当存在值冲突时,源优先级为"KYC注册表>CRM> logi"。
新鲜度:新的时间戳获胜(经有效性调整)。
占用:prefer non-NULL;地址/标签合并为集合。
审计:保留"解决方桉足迹"-覆盖的内容和原因。
4)重复数据消除和MDM
MDM层(Master Data Management):"主实体"+"istochnik→master"链接表。
金唱片:带有"confidence"字段/真相来源的汇总唱片。
历史:SCD类型2用于时间相关属性(地址,KYC状态)。
身份:具有"合并"/"熔化"日期的商品表(merge map)。
5)更改流: CDC,延迟和重复
CDC (Change Data Capture): события `insert/update/delete` + `source_lsn`/offset.
迟到的事件:水印(水标)和等待窗口(grace period),后期更新存储以进行调整。
按顺序排序:按键排序,时间补偿升级。
重复:等效密钥("event_id","idempotency_key"),在窗口中。
Exactly once: 事务单曲/stor, "MERGE"具有确定性逻辑。
6)时间,货币和日历
时间:存储在UTC+本地化切口;显式存储"ingested_at"和"event_time"。
货币:保留"原始货币"和标准化的"base_ccy",其汇率为交易日。
日历:按地区划分的假期/工作日表,以进行诚实的比较。
7)用于合并的伪SQL(upsert/merge)
7.1.交易(偶数日志)
sql
MERGE INTO fact_transactions t
USING staging_transactions s
ON t. txn_id = s. txn_id
WHEN MATCHED AND s. updated_at > t. updated_at THEN
UPDATE SET amount = s. amount,
currency = s. currency,
status = s. status,
updated_at = s. updated_at
WHEN NOT MATCHED THEN
INSERT (txn_id, user_ext_id, amount, currency, status, event_time, updated_at)
VALUES (s. txn_id, s. user_ext_id, s. amount, s. currency, s. status, s. event_time, s. updated_at);
7.2.用户的"黄金记录"(来源优先级+新鲜度)
sql
WITH ranked AS (
SELECT s. ext_user_id,
s. norm_email,
s. phone_e164,
s. addr_struct,
s. source,
s. updated_at,
ROW_NUMBER() OVER (
PARTITION BY s. ext_user_id
ORDER BY
CASE s. source
WHEN 'KYC' THEN 1 WHEN 'CRM' THEN 2 ELSE 3 END,
s. updated_at DESC
) AS rn
FROM staging_users s
)
MERGE INTO dim_user_golden g
USING ranked r
ON g. ext_user_id = r. ext_user_id
WHEN MATCHED AND r. rn = 1 THEN
UPDATE SET email = COALESCE(r. norm_email, g. email),
phone = COALESCE(r. phone_e164, g. phone),
address = COALESCE(r. addr_struct, g. address),
source_of_truth = r. source,
updated_at = r. updated_at
WHEN NOT MATCHED AND r. rn = 1 THEN
INSERT (ext_user_id, email, phone, address, source_of_truth, updated_at)
VALUES (r. ext_user_id, r. norm_email, r. phone_e164, r. addr_struct, r. source, r. updated_at);
8)质量与测试
方案测试:强制性字段,类型,域。
逻辑测试:键的唯一性,没有重复,没有时间倒退。
对账(重新计算):根据来源vs最终展示的金额;差异→字幕。
分析:分布、NULL比例、"长尾巴"。
合并度量:precision/Recall映射,"CONFLICT"的份额,具有一致性的条目的百分比≥阈值。
9)可观察性和SLO
SLO新鲜度:一阵陈列柜≤ N分钟/小时;监控延迟和backlog。
Alerts:复制增长、冲突激增、密钥覆盖率下降。
Logi lineage:从哪个来源获取字段,何时以及由谁覆盖。
Runibuki:事件情景(迟到的批次,CDC风暴,错误的FX)。
10)安全,隐私,合规性
PII:别名,标识符哈希,屏蔽BI。
RLS/CLS:按角色和字符串访问;导出-带有令牌和有效期。
数据寿命:保留时间表;删除权(DSAR)和"法律保留"。
反连接(re-Identification):将敏感表的joins最小化的规则。
11)模型和数据组织
图层:"raw"(原样)→ "staging"(清理/正常化)→ "core"(主实体,事实/测量)→ "marts"(分析/ML下的店面)。
SCD:属性类型2,类型类型1-纠正错误;显式的"valid_from/valid_to"。
功能商店:转换功能与在线/离线相同;定时正确性。
12)实现模式
具有语义层的ELT:合并逻辑是声明性的(规则,优先级,键)。
Stream+microbatch:对于近实时店面-1-15 min microbatchi with watermarks。
图形链接:用于复杂识别(devays,地图,地址)的单独图集。
步进验证:在阴影模式下包含新的链接规则,收集准确性指标。
13)合并路径发布前的支票清单
- 签订了来源合同;图和字段字典是一致的
- 已定义链接/规则;有一个重复数据消除策略
- 确定了生存规则和来源优先次序;审计日志已启用
- CDC/等效性/后期数据处理实现
- 货币/时区/日历标准化
- 定制质量测试和验证;可观察性达什板是
- 记录了新鲜度和可用性的SLO;Alerta和Runibucs准备就绪
- PII/出入/存储符合合规要求
- 文档:实体护照,线路图,查询示例
14)"黄金记录"护照(模板)
本质: "USER_GOLDEN"
密钥: 'user_master_id' (surrogate), mappings 'source_user_id[]'
字段和规则:- "电子邮件":正常化+优先级'KYC> CRM> LOGS'
- "电话":E.164正常化,通过验证拆分
- `name`: Jaro-Winkler ≥ 0.92, fallback-"KYC"来源"
- 'address':复合对象;结合+新鲜度优先级
- 历史:SCD2("valid_from/valid_to")
- Lineage:捐赠领域参考列表
- 质量:coverage≥98%,dublikaty≤0。3%
- SLO:新鲜≤ 1小时,可用性≥ 99。9%
- 所有者:数据平台,KYC/AML
- 风险:名称冲突、"家庭"电话、共享设备
15)结果和建议
合并不仅是"JOIN按键",而且是轮廓:来源合同 识别和去除 优先级和CDC的"黄金记录" 以及迟到的质量和可观察性 安全性和更改历史。
透明地构建规则,存储每个解决方桉的审核,支持SCD和exactly-once。因此,来自数十个来源的数据正在转化为产品、分析师和ML的可靠展示和可持续指标。