跨境知识库数据团队

全量算清楚还是抽样估一下,看这个数最后要拿去干什么

同一个数,全量跑一遍和抽样估一个,差往往不到一个点。但这两个数落到不同用途上,错的代价能差两个量级。

·

全量计算抽样估计决策用途

同一个数,全量跑一遍和抽样估一个,差往往不到一个点。但这两个数落到不同用途上,错的代价能差两个量级。

分岔点是这个数最后要拿去干什么

抽样估本身不脏。随机抽 5000 行,每个站点按销量比例分配,跑出来误差在千分之三以内,这个精度拿去判断一个品要不要砍,绰绰有余。

问题出在它被拿去对账。月末跟仓库的数对不上,全量跑出来的和抽样估出来的差 9 万,这 9 万里有 6 万是估出来的余量,不是真的差异。对账只认一个数。

分岔点因此很具体:这个数是拿去判断的,还是拿去对账的。判断用抽样,对账必须全量。

全量计算与抽样估计的分岔点与代价
全量计算与抽样估计的分岔点与代价

全量算还是抽样估,取决于这个数最后要拿去干什么

两条路摆在这张表里

维度A 路 全量算B 路 抽样估
触发场景月末要和仓库的数对上只用来决定砍不砍一个品
前提条件上游能留 24 小时快照抽样框覆盖全部站点
执行动作整表跑一遍,出确定值抽 5000 行,估一个区间
选错的代价机时 40 分钟,每周一次,一年 34 小时误差 0.3%,月流水 3000 万,差 9 万
回退方案不用退,抽样是它的子集改回全量,机时 40 分钟
什么时候必须停上游不留快照,重跑要两天差值没有上限,没人敢签这个数

全量的好处是结果唯一,坏处是每次都要占机器和人的注意力。抽样的好处是快,坏处是它永远给不出一个能签字的数。

选错的代价差在哪

A 路选错的代价是时间。全量每周跑一次,一次 40 分钟,一年 34 小时机时。这个数看得见,也能补。

B 路选错的代价是决策偏差。月流水 3000 万,误差 0.3% 就是 9 万。这 9 万摊进备货,就是错判一个品的库存水位。我带过的团队里,抽样估出来的数被财务拿去对账,账上被追着改了三天,那三天里财务做的全是无用功,因为两个数本来就不该相等。

退回来要花多少

全量改成抽样不用退,抽样本来就是全量的子集,随时可以切。

抽样改回全量,代价是 40 分钟机时,前提是上游还留着 24 小时快照。上游不留快照就没有退路,重跑要两天。退成本最低的时间窗是这次抽样结果发出之前——发出去了,业务方已经在用这个数做判断,那时候再改全量,等于承认前面那个数不能用。

优劣在什么条件下翻转

上游快照能力会翻转优劣。上游能留 24 小时快照,全量的成本降到几分钟,抽样就没有意义了。反过来上游不留快照、每次全量都要从头重跑两天的场景里,抽样是唯一能用的路。

另一个翻转在用途。同一个数,月初用来判断、周末用来对账,那它两条路都得走,月初抽样、月末全量。让一个数服务两种用途,通常是把两个数混成了一个。

两条都不该走的情况

三条同时命中,全量和抽样都别选:上游不留快照、这个数要进对外报表、月流水低于 100 万。100 万的流水用抽样省下的时间,还不够抵一次口径理解错带来的决策偏差。

我自己的做法是先问一句这个数要拿去干什么,再问它出去之后有没有人拿它签字。两个问题都答不上来的时候,我先不做这个数。

← 返回数据团队板块