在Tableau中,累计求和(runningsum)函数是一种非常有用的表计算函数,可以帮助我们更好地理解数据的总体趋势和变化。表计算是基于视图数据进行的二次计算,这里的关键就是视图数据,但是在Prep中并没有视图数据的概念,也就没有表计算的概念。
要在Prep中实现累计求和的效果,就必须使用一种特殊的技术——自连接,也就是数据表与自己进行join联接,然后再将得到的新表的相关值进行聚合,实现累计求和的效果。
我们以Preppin' Data项目2023年第9周的一个挑战为案例。讲解其中的实现逻辑。
我们省略掉前面的步骤,只考虑实现累计求和的内容。
数据源为虚拟的银行交易数据,每个账户每天的交易明细,这里只截取了一个账户。
首先利用partition和orderby函数,对数据进行排序,以便给每笔交易唯一的区分标记。
为了便于区分联接后的字段,将左表“rank”字段改为“rank1”,“Transaction Value”改为“Transaction Value 1”.
然后将两张表进行联接,连接条件为Account=Account,rank1>=rank
过程如下图所示:
联接之后的结果如下图所示:
我们看到当rank1=1的时候,rank=1,只保留了1条数据。Transaction Value1和Transaction Value没有区别。
我们看到当rank1=2的时候,rank=1和2,保留了2条数据。Transaction Value1仍然是该笔交易金额,而Transaction Value则保留了累计的2笔交易金额。
我们看到当rank1=3的时候,rank=1、2和3,保留了3条数据。Transaction Value1仍然是该笔交易金额,而Transaction Value则保留了累计的3笔交易金额。
后面的数据以此类推。
最后只需要增加一个聚合步骤,将结果按下图聚合,即可完成用时输出交易额和累计交易额的效果。
这部分内容的视频教学,可以到我的B站专栏《Prep案例集》第9期中观看。欢迎一键三连!
网友评论