问题描述
我正在尝试计算给定月份与一年前同月(例如 2021 年 1 月 - 2020 年 1 月)之间的销量差异。棘手的部分是它应该在客户层面上完成。我的表现在看起来像这样:
日期 | Customer_number | Sales_Volume |
---|---|---|
14.01.2020 | 1111 | 1000 |
13.01.2020 | 2222 | 2000 |
21.02.2020 | 1111 | 4000 |
17.02.2020 | 2222 | 5000 |
22.01.2021 | 1111 | 1500 |
24.01.2021 | 2222 | 2600 |
19.02.2021 | 1111 | 4700 |
18.02.2021 | 2222 | 5800 |
我的输出应该是这样的:
日期 | Customer_number | Sales_Volume | Volume_Difference |
---|---|---|---|
14.01.2020 | 1111 | 1000 | 0 |
13.01.2020 | 2222 | 2000 | 0 |
21.02.2020 | 1111 | 4000 | 0 |
17.02.2020 | 2222 | 5000 | 0 |
22.01.2021 | 1111 | 1500 | 500 |
24.01.2021 | 2222 | 2600 | 600 |
19.02.2021 | 1111 | 4700 | 700 |
18.02.2021 | 2222 | 5800 | 800 |
解决方法
在下面试试这个测量代码-
your_value =
var current_row_year = YEAR(MIN(your_table_name[Date]))
var current_row_month = MONTH(MIN(your_table_name[Date]))
var current_row_customer_number = MIN(your_table_name[Customer_number])
var current_row_sales_value = MIN(your_table_name[Sales_Volume])
var last_year_sales_volumne =
CALCULATE(
SUM(your_table_name[Sales_Volume]),FILTER(
ALL(your_table_name),YEAR(your_table_name[Date]) = current_row_year - 1
&& MONTH(your_table_name[Date]) = current_row_month
&& your_table_name[Customer_number] = current_row_customer_number
)
) + 0
RETURN IF(
last_year_sales_volumne = 0,current_row_sales_value - last_year_sales_volumne
)
这是输出-
,这是一个计算列:
Column =
VAR _y = YEAR([Date])
VAR _m = MONTH([Date])
VAR _c = [Customer_number]
VAR _tbl_prev = FILTER(ALL('Table'),[Customer_number] = _c && MONTH([Date]) = _m && YEAR([Date]) = _y - 1)
VAR _tbl_curr = FILTER(ALL('Table'),[Customer_number] = _c && MONTH([Date]) = _m && YEAR([Date]) = _y)
VAR _result = SUMX(_tbl_curr,[Sales_Volume]) - SUMX(_tbl_prev,[Sales_Volume])
RETURN IF(COUNTROWS(_tbl_prev),_result,0)