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

Power BI中基于CUSTNAME列创建上月数据计算列的需求

在Power BI中创建获取客户上月销售额的计算列PERMDATA

原始数据

CUSTNAME    DATE         SALES
  AAAA     2022-12-31      30
  BBBB     2022-12-31      40
  AAAA     2023-01-31      50
  BBBB     2023-01-31      60
  AAAA     2023-02-28      70
  BBBB     2023-02-28      80

需求说明

需要创建计算列PERMDATA,获取当前行对应客户上月的销售额数据,期望输出如下:

CUSTNAME    DATE         SALES  PERMDATA
  AAAA     2022-12-31      30    NULL
  BBBB     2022-12-31      40    NULL
  AAAA     2023-01-31      50     30
  BBBB     2023-01-31      60     40
  AAAA     2023-02-28      70     50
  BBBB     2023-02-28      80     60

实现方案

方案1:匹配上月对应日期的销售额(适用于样本数据结构,每月仅一条记录)

在Power BI中新建计算列,使用以下DAX公式(注意替换'表名'为你的实际表名称):

PERMDATA = 
VAR CurrentCustomer = '表名'[CUSTNAME]
VAR CurrentDate = '表名'[DATE]
VAR PreviousMonthDate = DATE(YEAR(CurrentDate), MONTH(CurrentDate)-1, DAY(CurrentDate))
RETURN
CALCULATE(
    MAX('表名'[SALES]),
    FILTER(
        '表名',
        '表名'[CUSTNAME] = CurrentCustomer &&
        '表名'[DATE] = PreviousMonthDate
    )
)
  • 逻辑说明:先捕获当前行的客户和日期,计算出上月的对应日期,再筛选同一客户上月该日期的销售额,无匹配时返回NULL。由于样本中每个客户每月仅一条记录,用MAX/MIN/SUM均可取出唯一值。

方案2:获取客户上月总销售额(通用版,支持同一客户当月多条记录)

如果你的数据中存在同一客户当月多条销售记录,可使用以下公式获取上月的总销售额:

PERMDATA = 
VAR CurrentCustomer = '表名'[CUSTNAME]
VAR CurrentMonthStart = STARTOFMONTH('表名'[DATE])
VAR PreviousMonthStart = DATEADD(CurrentMonthStart, -1, MONTH)
RETURN
CALCULATE(
    SUM('表名'[SALES]),
    FILTER(
        ALL('表名'),
        '表名'[CUSTNAME] = CurrentCustomer &&
        STARTOFMONTH('表名'[DATE]) = PreviousMonthStart
    )
)
  • 逻辑说明:通过STARTOFMONTH定位当前行所属月份的起始日,再计算上月起始日,最后筛选同一客户上月所有记录的销售额总和。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 07:22:42