一笔销售今天记作 10 件、1 万元,明天可能改成 8 件,机会状态也可能从进行中变为关闭。它不像事件流——每次动作只追加一条记录——而是在反复改写同一项业务事实。最近一位数据工程师在 Reddit 提问:面对 Salesforce 中“每个销售机会、每件产品一行”的事实表,增量加载该怎么做?
常见的 MERGE 会按主键插入新行或更新旧行,但前提是能可靠找出发生变化的记录。这里仅看 Salesforce 的最后更新时间并不够,因为部分派生字段还依赖其他系统。提问者考虑过重算完整视图,再用哈希值识别不同记录,只更新变化行;问题是,全量重算本身可能很贵。
真正要先回答的不是“套哪种加载模板”,而是报表究竟要什么:只保留当前状态,还是保存审计历史——某个值何时从旧版本变成新版本——或两者兼顾。只覆盖当前行,历史报表可能随着源数据更新而改变;保留版本则需要额外设计。原帖提出了这个取舍,但没有给出成本数据或最终方案。