Excel Power Pivot中无日期格式源数据的DAX YtD度量值实现问询
解决方案:Excel Power Pivot 实现动态YtD本年累计度量值
无需转换日期格式的DAX度量值
利用你已有的Table 2(月份名称-数字映射表),可以直接通过月份数字实现动态累计,无需将月份转换为日期格式。修改后的YtD度量值如下:
Val. := SUM(Table1[Value]) YtD := CALCULATE( [Val.], FILTER( ALL('Table 2'), 'Table 2'[Number] <= MAX('Table 2'[Number]) ) )
度量值逻辑说明
ALL('Table 2'):清除当前透视表/筛选器中对Table 2的月份筛选,确保能获取全年的月份范围。MAX('Table 2'[Number]):动态获取当前筛选范围内的最大月份数字(比如筛选2月时返回2,筛选2+3月时返回3)。FILTER:保留所有月份数字小于等于上述最大数字的月份,从而实现从年初到筛选截止月的累计求和。
适配你的示例验证
- 筛选2月时:
MAX('Table 2'[Number])=2,累计1-2月数据:- Store 1 Sales YtD = 200+80=280,Costs YtD=100+20=120,与预期一致。
- Store 2 仅2月有数据,YtD与当月值相同,符合预期。
- 筛选2月+3月时:
MAX('Table 2'[Number])=3,累计1-3月数据:- Store 1 Sales YtD=200+80+80=360,Costs YtD=100+20+30=150,与预期一致。
单月筛选场景的适配
上述度量值完全支持单月筛选场景,无需额外修改。当仅选择单个月份时,MAX('Table 2'[Number])就是该月的数字,自动累计从年初到该月的所有数据。
为什么你之前的YtD2不符合预期?
你之前的YtD2= calculate(Val., filter(Table2;Table2[Number]<=2))使用了固定的数字2,无法动态响应不同的筛选条件,替换为MAX('Table 2'[Number])即可解决问题。
内容的提问来源于stack exchange,提问作者honkhonk
相关产品推荐
相关产品推荐

