给所有表统一加上 created_at、updated_at,看起来像给文件盖日期章。但 Reddit 上这则提问暴露了真正的难点:这个时间究竟指业务发生、数据入仓,还是表被提交?迟到的数据可能今天才进仓,却属于上周。若把几种时间混在一起,报表和增量处理都会失真。
写入规则也比“每次任务结束后补两列”重要。created_at 应表示记录首次产生,updated_at 表示当前版本最近改变;如果重跑时都填“当前时间”,同一批数据会凭空变成新更新,无法做到幂等重跑——重复执行仍得到相同结果。跨系统还应统一存 UTC,再在展示时转换时区。
据 Databricks 官方文档,Delta 的 Change Data Feed 能记录行级增删改及提交版本、提交时间,可用于增量 ETL 和审计轨迹;但它受保留期约束,并非永久档案。给既有表新增列时,历史记录也只会得到 NULL,后设默认值不能自动补齐。换句话说,审计设计要先定义语义和历史策略,不能只追加字段。