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

基于其他列聚合值创建Power BI条件列

在Power BI中基于年度累计积分添加Tier分层列

根据你的需求,这里提供两种在Power BI中实现的方案,可根据实际场景选择:

方案一:使用DAX计算列

先计算每个applicantID对应Promo Year的累计积分,再基于积分区间划分Tier:

  1. 添加计算列计算年度累计积分:
年度累计积分 = 
CALCULATE(
    SUM('你的数据表名'[Points Earned]),
    ALLEXCEPT('你的数据表名', '你的数据表名'[applicantID], '你的数据表名'[Promo Year])
)
  • 替换你的数据表名为实际表名称
  • ALLEXCEPT函数会保留当前行的applicantID和Promo Year筛选上下文,计算该用户对应年份的总积分
  1. 添加Tier计算列:
Tier = 
SWITCH(
    TRUE(),
    [年度累计积分] >= 2000, "Tier 1",
    [年度累计积分] >= 1000, "Tier 2",
    [年度累计积分] >= 500, "Tier 3",
    "Tier 4"
)
  • 可根据实际业务需求调整积分阈值和对应的Tier等级

方案二:使用Power Query预处理数据

如果希望在数据加载阶段完成计算,减少DAX运行压力,可通过Power Query实现:

  1. 打开Power Query编辑器,选中你的数据集
  2. 执行分组操作:
    • 分组依据选择applicantID和Promo Year
    • 操作选「求和」,目标列选Points Earned,命名为「年度累计积分」
  3. 将原表与分组后的表通过applicantID和Promo Year进行左连接
  4. 添加条件列,根据「年度累计积分」设置Tier规则,对应的M代码示例:
let
    源 = Sql.Database("你的SQL服务器地址", "目标数据库名"),
    原始数据表 = 源{[Schema="dbo",Item="你的表名"]}[Data],
    // 分组计算年度累计积分
    分组计算 = Table.Group(原始数据表, {"applicantID", "Promo Year"}, {{"年度累计积分", each List.Sum([Points Earned]), type number}}),
    // 合并原表与分组结果
    合并数据表 = Table.NestedJoin(原始数据表, {"applicantID", "Promo Year"}, 分组计算, {"applicantID", "Promo Year"}, "分组数据", JoinKind.LeftOuter),
    展开累计积分列 = Table.ExpandTableColumn(合并数据表, "分组数据", {"年度累计积分"}, {"年度累计积分"}),
    // 添加Tier列
    添加Tier列 = Table.AddColumn(展开累计积分列, "Tier", each 
        if [年度累计积分] >= 2000 then "Tier 1"
        else if [年度累计积分] >= 1000 then "Tier 2"
        else if [年度累计积分] >= 500 then "Tier 3"
        else "Tier 4"
    )
in
    添加Tier列
  • 替换代码中的服务器地址、数据库名和表名称为实际信息
  • 同样可根据需求调整Tier的积分阈值

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 09:15:11