知识卡片

标签增量更新的全连接upsert模式

专业/工作 · 1207

内容

像”近30日购买次数”这类滚动窗口标签,每天重算一遍全量数据成本很高,但只按当天增量数据更新又会导致没有新行为的用户标签被错误清空。解法是用全连接把”昨天存好的标签值”和”今天新算出的标签值”拼在一起,再用取非空优先的方式合并:今天有新值就用新值覆盖,没有新值就沿用旧值。这本质上是数仓场景里没有原生upsert语句时,用SQL手写出”存在则更新、不存在则保留”语义的通用手法,也是[[全量表与增量表的取舍]]中增量表理念在计算层的具体落地。

参考来源

- 位置:《用户画像:方法论与工程化解决方案》第4章《标签数据开发》(源文件:_epub-src/OEBPS/text00047.html) - 结论依据:原文围绕“as labelid, # 付款订单量标签id cast(user_id as st”给出定义、场景或处理方式,支撑卡片对“标签增量更新的全连接upsert模式”的概括。 - 原始内容:...as labelid, # 付款订单量标签id cast(user_id as string) as userid, count(distinct order_id) as labelweight # 付款订单量 from dw.order_info_fact # 商品订单表 where pa...