项目库
数据 & MLAmazon · 商业智能工程实习生 · 2023

重做了一个没人信的退货看板——结果发现数字被重复计算了

分享者:J. Okafor · 前 Amazon 商业智能工程实习生

这位分享者在 Amazon 的面试环节里讲的就是这个项目,后来拿到了转正 offer。

走进这场面试

4 个当年真实追问 · 1 个 hard · 约 12 分钟

答完每一题,才翻开当事人当年的接法。

他们当时是怎么讲的

一个实习生接手了一个退货率看板,运营的 leader 早就悄悄不看了。真正有意思的是,他把查询真正捋了一遍之后发现的东西。

展开全文

我的实习项目本来是给某个品类团队“翻新”一个退货看板。很快就有个经理跟我说,没人看这东西,因为退货率看着高得离谱。所以我没光去改样式,而是把最上面那个卡片背后的 SQL 一路追了下去。退货率的算法是:同一时间窗里的退货数除以订单数,但退货比下单要晚好几周,结果 12 月的退货被拿去除以了 1 月的订单。除此之外,有个 join 在一个订单包含多个商品行时会发散,导致多商品订单的退货被算了两遍。我重写了逻辑,把退货按原始下单日期归到对应的 cohort,并在订单层面做了去重。原来那个吓人的 11% 掉到了 6.5% 左右,跟财务团队自己那套数字对上了。我用 QuickSight 搭了新版本,写了个简短的文档讲清楚 cohort 归集的逻辑,还加了一个数据质量检查:一旦某个 cohort 的退货数超过订单数就报警。我经理让品类团队在每周复盘里重新用起了它。这活儿不算光鲜,但它让我明白:一个错的数字,比没有数字更糟。

当年真实被问到的

你怎么知道 6.5% 是对的,而不只是换了一种错法?

困难

为什么按下单日期做 cohort,而不是直接用一个滚动窗口?

中等

如果底层的订单数据本身就是脏的,你会怎么办?

中等

在你修好之前,这个看板出错有没有导致过什么错误决策?

简单