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

如何用Power Query创建上月值条件列?附可用DAX实现代码

在Power Query中实现上月群组值计算(对应DAX逻辑)

你原有的DAX代码逻辑是:按membership_id分组,获取该会员上月对应的最大cohort值。以下是用Power Query(高级编辑器)实现相同逻辑的步骤和代码:

可视化操作步骤

  • 加载Dim__cluster表到Power Query,先确保month_id为日期类型(若为数字格式如YYYYMM,需先转成日期:Date.FromText(Text.From([month_id]) & "01"))
  • 添加自定义列prev_month_id,公式为Date.AddMonths([month_id], -1),用于定位上月
  • 将表与自身合并:匹配条件设为membership_id相等,且当前表的prev_month_id等于合并表的month_id
  • 展开合并后的表,仅保留cohort列,重命名为prev_cohort
  • 按membership_id和month_id分组,对prev_cohort列取最大值,命名为lm_cohort

高级编辑器直接可用的M代码

let
    Source = YourDataSource, // 替换为你的实际数据源(如Excel、SQL等)
    // 转换列类型,根据数据实际类型调整
    #"Changed Type" = Table.TransformColumnTypes(Source, {
        {"month_id", type date}, 
        {"membership_id", type text}, 
        {"cohort", type text}
    }),
    // 添加上月日期列
    #"Added Previous Month" = Table.AddColumn(#"Changed Type", "prev_month_id", each Date.AddMonths([month_id], -1)),
    // 自合并匹配上月数据
    #"Merged Queries" = Table.NestedJoin(
        #"Added Previous Month", 
        {"membership_id", "prev_month_id"}, 
        #"Changed Type", 
        {"membership_id", "month_id"}, 
        "PrevMonthData", 
        JoinKind.LeftOuter
    ),
    // 展开上月群组值
    #"Expanded PrevMonthData" = Table.ExpandTableColumn(#"Merged Queries", "PrevMonthData", {"cohort"}, {"prev_cohort"}),
    // 分组取最大群组值,对应DAX的MAX逻辑
    #"Grouped Rows" = Table.Group(
        #"Expanded PrevMonthData", 
        {"membership_id", "month_id"}, 
        {{"lm_cohort", each List.Max([prev_cohort]), type text}}
    )
in
    #"Grouped Rows"

特殊场景处理

  • 若month_id是YYYYMM数字格式,需修改Added Previous Month步骤的公式,先转日期再计算上月,最后转回数字:
    each Date.Year(Date.AddMonths(Date.FromText(Text.From([month_id]) & "01"), -1)) * 100 + Date.Month(Date.AddMonths(Date.FromText(Text.From([month_id]) & "01"), -1))
    
  • 如果每个会员每月仅对应一条cohort记录,List.Max可直接替换为List.First([prev_cohort]),结果一致

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 06:11:14