写在前面
研究主题:库存问题
攻克难点:数据的跨行计算(上篇);可加事实与不可加事实的混合处理(下篇)
计算工具:SAP HANA(数据分析计算);POWER BI(前端可视化展示)
引子
蝶谷毒仙胡青牛望着庭外天空,出神半晌,幽幽地道:我少年时心高气傲,以为自己能济世救人普度众生,如今,安身立命已成奢求,青羊之仇尚未了结,蝶谷生意也不如从前,无忌,定要好好经营,毕生心血全交付于你。
无忌看着手中的退货单和催货单,陷入了沉思……
话不多说,无忌查阅了库存记录表,发现该张表里记录了每笔药材的入库和出库明细,凌乱至极,无忌只觉头脑中早已人仰马翻,如同一万只蝇虫在耳边飞舞……
未几,无忌若有所思,只见他将那一叠黄麻纸一遍又一遍的翻来覆去,宛如寻得《九阳真经》,忽地定神,仿佛如梦初醒,掩卷静思:每日库存变更记录表便是这事务事实表,每种药物每次增减记作一条(粒度),前两列描述了“何种药物,何时”(维度)发生了数量变更(事实/维度);药物清单表(维度表)记录了所有的药物种类,唯有本谷经营药品种类发生变化时才会变更。
师傅年时已高,琐事繁多,不如无忌整理出日报、月报、年报(周期快照事实表)给师傅过目。他存了这个念头,短短两个月时光,便已将卷中所载抽丝剥茧,一蹴而就。
数据底表: 事务事实表 + 维度表 目标结果 : 周期快照事实表无忌只略懂算术,对数据分析甚是陌生,从数据底表到目标结果,无忌心里并无多少胜算,只能先硬着头皮将过程分为两步:首先将数据底表整合成库存日报(上篇),再将库存日报转化为库存月报和库存年报(下篇)。
计算过程
本篇仅详述从数据底表到库存日报的过程 ……
无忌摸索许久发觉数据底表中几点问题甚为迷惑:
问题1:每日库存变更记录表(事务事实表)中既有入库数据又有出库数据;
问题2:每日记录中同一药物出库、入库可能有多条记录;
问题3:数据底表日期不连贯;
问题4:数据计算需跨行:后一日库存=前一日库存+后一日入库数量-后一日出库数量;
问题5:可拓展性(当药物品种出现变更时如何维护……)
蝶谷所有的算经叫无忌翻了个遍,不由得思如潮涌,不到半个时辰,计算思路已跃然纸上……
计算思路步骤a:通过计算视图,筛选出每日库存变更记录中的入库记录,并对同一天同一种药物的入库记录进行相加,得到结果:每日入库记录,解决问题1、问题2。
步骤a-HANA建模 步骤a-计算结果步骤b:通过计算视图,筛选出每日库存变更记录中的出库记录,并对同一天同一种药物的出库记录进行相加,得到结果:每日出库记录,解决问题1、问题2。
步骤b-HANA建模 步骤b-计算结果步骤c:
1. 新建一张日报表,通过PROCEDURE,将初始值写入日报表。
步骤c-初始化代码 步骤c-初始化结果(最小日期)2. 获取日报表初始值后,可通过PROCEDURE将最小日期至指定日期的每一天的库存记录都写入日报表中,通过循环和左关联,既保证日期连贯,又实现对每个品种进行跨行计算,解决问题3和问题4;将维度表(药物清单)与步骤a、b计算结果左关联,保证目标结果中药物品种的完整性,解决问题5。
步骤c-计算代码 步骤c-计算结果(截止到指定日期)可视化展示
库存日报表可视化展示张无忌彻夜未眠,还好心中所想已见雏形,无忌嘴角略微扬起,向东北方眺望,这时天已黎明。
无忌此时并未全然放心,毕竟月报、年报尚无眉目,任重而道远……
网友评论