OLAP SQL 之美
我的日常工作是构建分析仪表板的后端系统。这些仪表板通过数据可视化,帮助用户深入洞察其业务数据。今天,我将分享一个利用 SQL 编写强大 OLAP 查询的真实案例。
请设想您正在运营一系列披萨品牌,目标是评估您的产品货架份额与主要竞争对手的差距。您最关心的业务问题可能包括:
- 您在披萨品类中的铺货份额(Share of Assortment, SOA)是多少?在沃尔玛分销的披萨产品中,有 50% 是您的吗?还是只有 5%?
- 平均而言,您的披萨产品有多少在 Kroger 进行了分销?您有 5 种不同的产品,但平均只有 2 种有售?是更多还是更少?
- 您的铺货份额随时间推移是如何变化的?与去年/上个月相比,是增加 10% 还是减少 5%?
- 哪些竞争对手占据了大部分货架份额?您与他们的比较如何?
- 谁正在投放新产品?谁在减少投放?
- 您的哪个品牌是成功的?哪个需要撤市或通过广告/更优惠的价格等进行改进?
数据结构如下所示(已匿名化):
| p_id | manufacturer | category | brand | retailer | period | distributed_days |
|---|---|---|---|---|---|---|
| i64 | i64 | i64 | i64 | i64 | str | i64 |
| 6581 | 61 | 20 | 273 | 1 | 2023_52 | 31407 |
| 8563 | 34 | 4 | 274 | 1 | 2023_52 | 27515 |
| 8411 | 11 | 6 | 276 | 1 | 2023_52 | 30693 |
| … | … | … | … | … | … | … |