如何用Power Pivot创建学期前天数的非未来累计求和数据透视表
在Power Pivot中实现按学期前天数的累计申请量(不含未来日期)
没问题,我来帮你搞定这个需求!要实现这种按学期倒推天数累计求和且不包含未来日期的效果,咱们可以通过DAX度量值+合理的数据模型来完成,步骤如下:
一、先确认你的数据模型
首先得确保你的数据结构满足基础要求:
- 有一个事实表(比如命名为
Applications),至少包含三列:学期(比如2016FA、2017FA)、学期前天数(数字5/4/3/2/1/0,代表离学期开始的倒数天数)、每日申请量(当天的申请数量) - 有一个维度表(比如
学期天数维度表),单独列出所有需要展示的学期前天数值(0到5),并且和事实表的学期前天数列建立关系(这一步很关键,能保证透视表的列能完整显示所有天数,哪怕某天没有申请量)
二、创建DAX累计度量值
在Power Pivot中新建一个度量值,用下面的公式:
累计申请量 = CALCULATE( SUM(Applications[每日申请量]), -- 筛选出大于等于当前天数的所有历史天数(排除未来天数) FILTER( ALL('学期天数维度表'[学期前天数]), '学期天数维度表'[学期前天数] >= MAX('学期天数维度表'[学期前天数]) ), -- 确保累计按单个学期独立计算,不跨学期求和 ALLEXCEPT(Applications, Applications[学期]) )
公式解释:
SUM(Applications[每日申请量]):核心是计算每日申请量的总和FILTER(ALL(...)):移除当前单元格的天数筛选,只保留比当前天数大或相等的天数(比如当前列是“2”,就只算5、4、3、2这几天,自动排除1、0这些“未来日期”)ALLEXCEPT(...):锁定学期作为唯一筛选条件,保证每个学期的累计都是独立的,不会把2016FA和2017FA的数混在一起
三、构建数据透视表
现在把字段拖到对应区域:
- 把
学期拖到行区域 - 把
学期天数维度表里的学期前天数拖到列区域,记得把列排序改成从大到小(5→4→3→2→1→0,和你的示例格式一致) - 把刚创建的
累计申请量拖到值区域
四、可选:处理空白值
如果某些学期的某几天没有申请记录,透视表可能会显示空白,你可以用COALESCE函数把空白转成0,修改后的度量值如下:
累计申请量(含空值处理) = COALESCE( CALCULATE( SUM(Applications[每日申请量]), FILTER( ALL('学期天数维度表'[学期前天数]), '学期天数维度表'[学期前天数] >= MAX('学期天数维度表'[学期前天数]) ), ALLEXCEPT(Applications, Applications[学期]) ), 0 )
这样设置后,就能得到和你示例完全一致的效果啦——比如2016FA学期前2天的累计值是5,就是把该学期前5、4、3、2天的申请量全部加起来的结果。
内容的提问来源于stack exchange,提问作者dmonder
相关产品推荐
相关产品推荐

