2.32 PowerBI数据建模-INDEX筛选每个客户的最后一条订单,再求和

加入 PowerBI自己学 知识星球:下载源文件,边学边练;遇到问题,提问交流,有问必答。

有些场景下,客户在一段时间内产生多次数据,在不进行数据清洗按需保留数据的前提下,需要以最后一次(或者数值最大的一次等)数据去进行统计分析,比如竞拍者的最后一次出价、运动员的最高一次记录等。

解决方案

首先,不能直接在事实表中打标记,因为这样的标记是静态的,不受画布中的筛选影响,所以要在VAR过程表中给每个客户的最后一次数据打标记。

其次,打标记的本质是,每个客户按日期降序排名,这一步用RANK函数就可以实现,然后筛选排名为1的数据。这样操作略显复杂,与RANK同为窗口函数的INDEX,可以直接取出排名第几的数据。

最后,根据取出来的数据,去做求和等运算。

举例

有如下订单表,求所选时间段内的按每个客户最后一天的订单销量。

度量值

销量:

Sales = SUM(Fact_Sales[销量])

每个客户最后一天的订单销量:

Sales_LastDatePerAccount_Index =

VAR _vt_Index = INDEX(1, ALLSELECTED(Fact_Sales[客户], Fact_Sales[日期]), ORDERBY('Fact_Sales'[日期], DESC), PARTITIONBY(Fact_Sales[客户]))

RETURN CALCULATE([Sales], _vt_Index)

选择1月的日期,如下:

选择2月的日期,如下:

拓展

调节INDEX的第一个参数和升降序参数,可以按需要取正数或倒数第N名的数据;修改排序依据,可以取日期以外的某个数值最大或最小的数据。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值