PowerBI中如何获取上一个有销售额的季度数据做对比
PowerBI实现取最近有销售额的上一季度数据
你可以通过以下DAX度量值实现需求,核心思路是先筛选出所有有销售记录的季度,再找到当前季度之前最近的那个季度,最后计算对应销售额:
完整度量值写法
可以直接创建一个合并后的度量值,也可以拆分两个辅助度量(便于调试):
合并版度量值
Sales - Previous Quarter (Last with Sales) = VAR CurrentQtrEnd = MAX(CALENDER_DIM[ENDOFMONTH]) VAR AllSalesQtrs = CALCULATETABLE( VALUES(CALENDER_DIM[ENDOFMONTH]), SALES_FACT[SALES] <> BLANK(), ALL(CALENDER_DIM) ) VAR FilteredQtrs = FILTER(AllSalesQtrs, [ENDOFMONTH] < CurrentQtrEnd) VAR LastQtrDate = MAXX(FilteredQtrs, [ENDOFMONTH]) RETURN IF(NOT ISEMPTY(FilteredQtrs), CALCULATE([Sales - This Quarter], CALENDER_DIM[ENDOFMONTH] = LastQtrDate), BLANK() )
拆分版(便于调试)
- 先创建辅助度量获取最近有销售的季度日期:
Last Quarter with Sales Date = VAR CurrentQtrEnd = MAX(CALENDER_DIM[ENDOFMONTH]) VAR AllSalesQtrs = CALCULATETABLE( VALUES(CALENDER_DIM[ENDOFMONTH]), SALES_FACT[SALES] <> BLANK(), ALL(CALENDER_DIM) ) VAR FilteredQtrs = FILTER(AllSalesQtrs, [ENDOFMONTH] < CurrentQtrEnd) RETURN IF(NOT ISEMPTY(FilteredQtrs), MAXX(FilteredQtrs, [ENDOFMONTH]), BLANK())
- 再基于上述日期计算销售额:
Sales - Previous Quarter (Last with Sales) = VAR LastQtrDate = [Last Quarter with Sales Date] RETURN CALCULATE([Sales - This Quarter], CALENDER_DIM[ENDOFMONTH] = LastQtrDate)
关键逻辑说明
CurrentQtrEnd:获取当前筛选上下文对应的季度结束日期(比如2021Q3对应2021-09-30)。AllSalesQtrs:提取全局所有有销售记录的季度的结束日期,确保不受当前筛选限制,只保留有销售额的季度。FilteredQtrs:从有销售的季度列表中筛选出早于当前季度的所有季度。LastQtrDate:取筛选后列表里最大的日期,也就是当前季度之前最近的有销售的季度。- 最终通过
CALCULATE锁定该季度,计算对应的销售额;如果没有符合条件的历史季度,则返回空白。
注意事项
- 确保
CALENDER_DIM和SALES_FACT已通过ENDOFMONTH字段建立一对多关系,否则筛选逻辑会失效。 - 若需按
PRODUCTID维度单独计算(每个产品各自找最近有销售的季度),当前逻辑已自动支持,因为上下文会包含产品的筛选条件;如果需要忽略产品维度统一取全局最近季度,可将ALL(CALENDER_DIM)改为ALL(CALENDER_DIM, SALES_FACT[PRODUCTID])。
内容的提问来源于stack exchange,提问作者Bilal Shafqat
相关产品推荐
相关产品推荐

