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
相关产品推荐
相关产品推荐

