仓库主数据从金蝶云星辰拉到聚水潭:基于增量查询的同步策略实战
这个策略解决什么问题
某零售企业的仓库主数据长期由金蝶云星辰维护,聚水潭作为电商中台需要拿到一份"准、稳、新"的仓库清单用于打单、发货和库存锁定。直接把全量每天拉一遍,数据量大、跑得慢;改成"按修改时间增量查询",既能让两边编码长期对齐,也能让禁用仓库及时在聚水潭侧落地。本策略是整个仓库同步链路里偏"基础资料"的一段,常被排在销售出库、库存同步之前。
数据流向与字段映射
源系统为金蝶云星辰,中间承载体为轻易云数据集成平台(Qeasy),目标系统为聚水潭。
关键字段对照表(简化版):
| 源字段(金蝶云星辰) | 中间层 | 目标字段(聚水潭) | 说明 |
|---|---|---|---|
| number | number | 仓库编码 | 唯一标识,用作幂等键 |
| name | name | 仓库名称 | 显示用 |
| enable(是否启用) | enable | 状态 | 1启用 / 0禁用,需在目标侧反向落地 |
| id | id | 系统内ID | 用于回查 |
| modify_start_time / modify_end_time | 时间窗 | — | 仅用于查询入参,不写入目标 |
源接口为 GET /jdy/v2/bd/store,分页参数 page_size 与 page 由轻易云内置分页器接管;时间窗参数 {{LAST_SYNC_TIME}}000 与 {{CURRENT_TIME}}000 以毫秒戳形式传入,平台自动维护游标。
在轻易云上如何配置
我们用轻易云数据集成平台做这件事,典型配置分四块:
- 源平台接入:选「金蝶云星辰V2」适配器,填入接入参数并打通
/jdy/v2/bd/store的查询权限。idCheck设为 true,确保幂等;autoFillResponse打开,让返回结构自动展开。 - 目标平台接入:聚水潭侧若只把仓库作为外部引用,常先用一个"写入空操作"占位,等真正写入接口到位后再替换;这正是轻易云常见的"表头表体分阶段"打法——基础资料先到位,业务单据后接。
- 字段映射:把金蝶的
number作为主键,name做名称映射,enable做状态映射。编码映射建议集中在轻易云的映射表里维护,不要散落在脚本里,方便后续审计。 - 运行模式:源配置
crontab写为36 3 * * *(每日凌晨3:36触发),目标配置写为23 2 * * *(每日凌晨2:23),形成"目标先空跑、源侧后增量"的安全时序。
实施步骤
第一步,打通查询连通性。在轻易云里手动跑一次源接口,确认能拿到完整仓库列表,再讨论调度。
第二步,确定增量起点。取金蝶侧仓库表最早一条 modify_time 作为 LAST_SYNC_TIME 初值,先做一次全量回灌,确保两边零差异;之后切换到增量模式。
第三步,配调度频率。仓库主数据变化频率不高,每日一次足够;若客户在多仓切换或促销期,临时改为每4小时一次即可。
第四步,监控与对账。轻易云的运行日志会记录每次拉取条数与时间窗,人工每周抽 5 条做两端比对即可;一旦出现差异,以金蝶为准反向修复。
第五步,失败重试与告警。源接口偶发超时是常态,轻易云默认重试3次,建议在策略上把告警阈值设为"连续2次失败"。
踩坑复盘
**坑1:把 enable=1 当默认过滤条件,导致禁用仓库永远同步不过去。**源接口 enable 字段默认填了 1,看似合理,实则把禁用仓库挡在了门外。稳妥做法是先全量,再按需过滤;或者禁用仓库也同步进聚水潭,在目标侧落"停用"状态。
**坑2:时间窗用秒而不是毫秒。**金蝶侧要求毫秒戳,变量里没补 000,结果查询一直返回空,排查了一晚上。轻易云变量写法要严格按平台文档的毫秒约定。
**坑3:增量起点选错,漏数据。**直接把系统当前时间当成 LAST_SYNC_TIME 初值,导致接入之前修改过的仓库永远同步不过来。稳妥做法是先全量回灌一次,再切增量。
**坑4:目标侧没有真实写入,以为"空操作"等于成功。**目标配置成"写入空操作"仅是占位,日志里看似成功,实际聚水潭侧根本没数据。这类占位策略上线前必须在备注里写清"未落库",避免被当成已完成任务。
**坑5:编码映射写在脚本里,改一处忘三处。**有的客户把 number → 仓库编码 的映射写在每条策略的脚本里,后来新增了一条同步策略就漏改。轻易云常见的应对模式是把映射集中放到平台的映射表里,所有策略引用同一份。
适用场景与不适用场景
适用:金蝶云星辰作为主数据源、聚水潭作为电商中台,需要每日/每数小时把仓库、仓位、类别等基础资料增量拉到聚水潭;企业处于"多仓、多店"扩张期,编码与启用状态频繁变动。 不适用:双方都为强实时写入的库存系统;或仓库主数据实际由聚水潭维护、需要反向同步到金蝶的场景(那应该是另一条策略)。