基于Gross Revenue在Power Query中分配渠道C总值至A、B渠道
在Power Query中用M语言分配渠道C的Gross Revenue至A和B
需求说明
将渠道C的GR总值按A、B各自GR占A+B总GR的比例分配给A和B,最终新增GR2列:
- 渠道C的
GR2为0 - 渠道A/B的
GR2= 原GR + (自身GR / A+B总GR) × 渠道C总GR
示例数据
输入表:
| Channel | GR |
|---|---|
| A | 6 |
| B | 4 |
| C | 4 |
期望输出表:
| Channel | GR | GR2 |
|---|---|---|
| A | 6 | 8.4 |
| B | 4 | 5.6 |
| C | 4 | 0 |
M语言实现步骤
打开Power Query的高级编辑器,替换为以下代码(注意替换YourSQLQuerySource为你的实际数据源):
let // 加载你的SQL查询数据源 Source = YourSQLQuerySource, // 计算渠道C的GR总值 TotalC = List.Sum(Table.SelectRows(Source, each [Channel] = "C")[GR]), // 计算渠道A+B的GR总值 TotalAB = List.Sum(Table.SelectRows(Source, each [Channel] = "A" or [Channel] = "B")[GR]), // 新增GR2列并计算分配后的值 AddGR2Column = Table.AddColumn(Source, "GR2", each if [Channel] = "C" then 0 else [GR] + (if TotalAB = 0 then 0 else [GR] / TotalAB) * TotalC ) in AddGR2Column
代码解释
- Source:替换为你的SQL查询返回的表(比如Power BI中"从SQL数据库导入"生成的数据源步骤)
- TotalC:筛选出渠道C的行,提取GR列并求和,得到待分配的总值
- TotalAB:筛选出渠道A和B的行,求和得到它们的GR总和,用于计算分配比例
- AddGR2Column:新增
GR2列,通过条件判断处理不同渠道:- 渠道C直接设为0
- 渠道A/B计算分配值,同时加入
TotalAB=0的判断,避免除数为0报错
额外注意
- 确保
Channel列的文本值与代码中的"A"/"B"/"C"大小写完全一致 - 如果你的渠道名称有变体(比如"Channel A"),需同步修改代码中的判断条件
内容的提问来源于stack exchange,提问作者Bl4nk
相关产品推荐
相关产品推荐

