
加入 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名的数据;修改排序依据,可以取日期以外的某个数值最大或最小的数据。
3029

被折叠的 条评论
为什么被折叠?



