如何在Power BI中用DAX实现周期A与周期B的逐日期对应对比?
实现周期A与周期B逐日期对应对比的DAX方案
前置准备
确保你已完成以下配置:
- 基于主日期表复制出
Previous Date表,与销售事实表建立非活动的日期关系 - 已创建
[Sales Amount]和[Normalization Factor]基础度量值 - 添加两个切片器:一个用主
Date表筛选周期A的日期范围,另一个用Previous Date表筛选周期B的日期范围(需保证两个周期天数一致)
核心度量值实现
创建名为周期B对应销售的度量值,代码如下:
周期B对应销售 = VAR 周期A起止范围 = FILTER(ALL('Date'), 'Date'[Date] >= MIN('Date'[Date]) && 'Date'[Date] <= MAX('Date'[Date])) VAR 当前日期的周期位置 = RANKX(周期A起止范围, 'Date'[Date],, ASC, Dense) VAR 周期B起止范围 = FILTER(ALL('Previous Date'), 'Previous Date'[Date] >= MIN('Previous Date'[Date]) && 'Previous Date'[Date] <= MAX('Previous Date'[Date])) VAR 周期B对应日期 = CALCULATE( MIN('Previous Date'[Date]), FILTER( 周期B起止范围, RANKX(周期B起止范围, 'Previous Date'[Date],, ASC, Dense) = 当前日期的周期位置 ) ) RETURN CALCULATE( [Sales Amount], USERELATIONSHIP('Date'[Date], 'Previous Date'[Date]), 'Previous Date'[Date] = 周期B对应日期 ) * [Normalization Factor]
逻辑说明
- 定义周期范围:分别获取当前切片器筛选出的周期A和周期B的完整日期区间
- 计算相对位置:用
RANKX标记当前日期在周期A内的相对天数(比如周期A的第3天,对应周期B的第3天) - 匹配对应日期:在周期B的范围内,找到与当前日期相对位置一致的日期
- 计算对应销售额:激活非活动关系,筛选出周期B对应日期的销售额,再乘以归一化系数
可视化配置
- 矩阵视觉对象的行字段选择主
Date表的Date列(仅显示周期A内的日期) - 值字段添加
[Sales Amount](周期A销售额)和[周期B对应销售](周期B对应日期销售额)
这样就能实现周期A的第n天与周期B的第n天逐行对应的对比效果,解决原方案中重复返回周期B总和的问题。
内容的提问来源于stack exchange,提问作者gertrude89
相关产品推荐
相关产品推荐

