You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于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

示例数据

输入表:

ChannelGR
A6
B4
C4

期望输出表:

ChannelGRGR2
A68.4
B45.6
C40

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

代码解释

  1. Source:替换为你的SQL查询返回的表(比如Power BI中"从SQL数据库导入"生成的数据源步骤)
  2. TotalC:筛选出渠道C的行,提取GR列并求和,得到待分配的总值
  3. TotalAB:筛选出渠道A和B的行,求和得到它们的GR总和,用于计算分配比例
  4. AddGR2Column:新增GR2列,通过条件判断处理不同渠道:
    • 渠道C直接设为0
    • 渠道A/B计算分配值,同时加入TotalAB=0的判断,避免除数为0报错

额外注意

  • 确保Channel列的文本值与代码中的"A"/"B"/"C"大小写完全一致
  • 如果你的渠道名称有变体(比如"Channel A"),需同步修改代码中的判断条件

内容的提问来源于stack exchange,提问作者Bl4nk

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.01 01:35:15