如何在PowerPivot/DAX中按规则分配渠道销量并汇总?
在PowerPivot/DAX中实现销量渠道重分配汇总
针对需求中指定的销量分配规则,我们可以通过DAX度量值或计算列两种方式实现,以下是具体方案:
方式一:使用度量值(推荐,适合动态透视分析)
创建如下度量值,在透视表中搭配渠道字段使用即可得到结果:
分配后销量 = VAR 原始Ch1销量 = CALCULATE(SUM('销售表'[Qty]), '销售表'[Channel] = "Ch1") VAR 原始Ch2销量 = CALCULATE(SUM('销售表'[Qty]), '销售表'[Channel] = "Ch2") VAR 原始Ch3销量 = CALCULATE(SUM('销售表'[Qty]), '销售表'[Channel] = "Ch3") VAR D2D总销量 = CALCULATE(SUM('销售表'[Qty]), '销售表'[Channel] = "D2D") VAR Ext总销量 = CALCULATE(SUM('销售表'[Qty]), '销售表'[Channel] = "Ext") VAR Ch1分配增量 = D2D总销量 * 0.5 + Ext总销量 * 0.8 VAR Ch2分配增量 = D2D总销量 * 0.5 + Ext总销量 * 0.2 RETURN SWITCH( SELECTEDVALUE('销售表'[Channel]), "Ch1", 原始Ch1销量 + Ch1分配增量, "Ch2", 原始Ch2销量 + Ch2分配增量, "Ch3", 原始Ch3销量, BLANK() )
代码说明:
- 用
VAR定义变量,分别计算各渠道原始销量、D2D和Ext渠道的总销量 - 按规则计算Ch1、Ch2需额外分配的销量增量
- 通过
SWITCH函数根据当前选中的渠道,返回对应的最终汇总销量
方式二:使用计算列(需配合维度表)
如果需要固定的结果列,可先创建一个包含目标渠道(Ch1、Ch2、Ch3)的渠道维度表,并与销售表建立关联,然后在维度表中创建计算列:
最终销量 = VAR 原始销量 = CALCULATE(SUM('销售表'[Qty]), '销售表'[Channel] = '渠道维度表'[Channel]) VAR D2D分配 = CALCULATE(SUM('销售表'[Qty]), '销售表'[Channel] = "D2D") * IF('渠道维度表'[Channel] IN {"Ch1","Ch2"}, 0.5, 0) VAR Ext分配 = CALCULATE(SUM('销售表'[Qty]), '销售表'[Channel] = "Ext") * SWITCH('渠道维度表'[Channel], "Ch1", 0.8, "Ch2", 0.2, 0) RETURN 原始销量 + D2D分配 + Ext分配
使用方式:
将渠道维度表的Channel列和最终销量列拖入透视表,即可得到符合要求的汇总结果。
内容的提问来源于stack exchange,提问作者sbrbot
相关产品推荐
相关产品推荐

