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

Power Query数据聚合求助:NewPay列值不符合预期

Power Query 数据聚合问题修正方案

问题分析

你的核心问题在于原代码未正确关联每个事件(creation/increase/decrease)对应的Pay值,且分组、Unpivot后的逻辑无法匹配预期的NewPay填充规则,导致结果不符合预期。

修正后的M代码

let
    Source = Excel.CurrentWorkbook(){[Name="Table14"]}[Content],
    // 清理无关列
    #"Removed Unneeded Columns" = Table.RemoveColumns(Source,{"Column1", "Column2", "Column3", "Column4"}),
    // 按ID分组,在组内完成状态判断与过滤
    #"Grouped by ID" = Table.Group(#"Removed Unneeded Columns", {"ID"}, {
        {"GroupData", each let
            // 提取当前ID的creation日期
            CreationRecord = Table.SelectRows(_, each [Event] = "creation"),
            CreationDate = if Table.RowCount(CreationRecord) > 0 then CreationRecord{0}[Date] else null,
            // 判断当前ID的状态:ok/yes/no
            Status = if Table.RowCount(Table.SelectRows(_, each [Event] <> "creation")) = 0 then "ok"
                     else if List.AllTrue(List.Transform(Table.SelectRows(_, each [Event] <> "creation"), each [Date] = CreationDate)) then "yes"
                     else "no",
            // 仅保留非no状态的组数据
            FilteredGroup = if Status <> "no" then Table.AddColumn(_, "Status", each Status) else null
        in FilteredGroup, type table}
    }),
    // 移除标记为no的ID组
    #"Removed Null Groups" = Table.SelectRows(#"Grouped by ID", each [GroupData] <> null),
    // 展开组内的完整数据
    #"Expanded GroupData" = Table.ExpandTableColumn(#"Removed Null Groups", "GroupData", {"Pay", "Event", "Date", "Status"}, {"Pay", "Event", "Date", "Status"}),
    // 按规则填充NewPay列
    #"Added NewPay Column" = Table.AddColumn(#"Expanded GroupData", "NewPay", each 
        if [Status] = "ok" then [Pay]
        else if [Status] = "yes" and [Event] <> "creation" then [Pay]
        else null
    )
in
    #"Added NewPay Column"

关键修改说明

  1. 分组内直接处理状态:在ID分组时就完成ok/yes/no的标记,同时过滤掉标记为no的组,避免后续重复操作。
  2. 准确判断状态逻辑:用List.AllTrue检查所有非creation事件的日期是否与creation日期一致,替代原代码中List.Max的取最大值逻辑,确保符合需求。
  3. 保留事件与Pay的关联:不再使用Pivot/Unpivot操作破坏原数据的事件-Pay对应关系,直接基于原始事件类型填充NewPay。
  4. 精准填充NewPay:
    • 状态为ok时(仅存在creation),直接填充对应Pay值
    • 状态为yes时,仅给increase/decrease事件填充对应Pay,creation事件留空

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 15:16:08