查找每个客户每月的最后余额数量 (Power Pivot)
Find the last balance quantity per customer per month (Power Pivot)
我有以下数据集 (Table 1),我想创建一个新的计算列,以便仅包含每个月的最后余额数量顾客。
最后一栏(EOM 余额)说明了我需要什么。
-----------------------------------------------------
| Table 1 |
----------------------------------------------------- -------------------
| Date | Customer | Type | Qty | Balance Qty | | EOM Balance Qty |
|=============|==========|======|=====|=============| |=================|
| 1/Jan/2019 | Alan | Buy | 15 | 15 | | |
|-------------|----------|------|-----|-------------| |-----------------|
| 2/Jan/2019 | Alan | Use | 10 | 5 | | 5 |
|-------------|----------|------|-----|-------------| |-----------------|
| 2/Feb/2019 | Alan | Buy | 30 | 35 | | |
|-------------|----------|------|-----|-------------| |-----------------|
| 3/Feb/2019 | Alan | Use | 10 | 25 | | 25 |
|-------------|----------|------|-----|-------------| |-----------------|
| 3/Mar/2019 | Alan | Use | 15 | 10 | | 10 |
|-------------|----------|------|-----|-------------| |-----------------|
| 4/Apr/2019 | Alan | Buy | 100 | 110 | | |
|-------------|----------|------|-----|-------------| |-----------------|
| 5/Apr/2019 | Alan | Use | 35 | 75 | | 75 |
|-------------|----------|------|-----|-------------| |-----------------|
| 1/Jan/2019 | Bob | Buy | 10 | 10 | | |
|-------------|----------|------|-----|-------------| |-----------------|
| 2/Jan/2019 | Bob | Use | 10 | 0 | | 0 |
|-------------|----------|------|-----|-------------| |-----------------|
| 20/Jan/2019 | Charlie | Buy | 100 | 100 | | 100 |
|-------------|----------|------|-----|-------------| |-----------------|
| 1/Feb/2019 | Charlie | Use | 20 | 80 | | 80 |
|-------------|----------|------|-----|-------------| |-----------------|
| 5/Apr/2019 | Charlie | Use | 10 | 70 | | |
|-------------|----------|------|-----|-------------| |-----------------|
| 30/Apr/2019 | Charlie | Use | 55 | 15 | | 15 |
----------------------------------------------------- -------------------
我曾尝试搜索类似的解决方案,结果是 this。但是,当我将其添加为 Power Pivot 中的计算列或度量时出现错误。
我也尝试过使用 ENDOFMONTH
函数,但有些日期没有 return 应有的结果。
= CALCULATE ( SUM ( Table1[closing_balance_qty] ), ENDOFMONTH ( Table1[Date] ) )
非常感谢任何帮助。
根据评论更新:
我修改了你的新源数据如下:
我们现在将使用包含日期 + 时间的列 "Date-Time",而不是之前的列 "Date"。
您还需要在源文件中添加字段 "Year-Month",而不是作为计算列。请您的数据源提供商为您添加,或使用 PowerQuery。
接下来,创建一个计算列:
EOM Balance Qty =
VAR Last_Date_Time =
CALCULATE (
MAX ( Table1[Date-Time] ),
ALLEXCEPT ( Table1, Table1[Customer], Table1[Year-Month] )
)
RETURN
IF ( Table1[Date-Time] = Last_Date_Time, CALCULATE(SUM ( Table1[Balance Qty] )))
结果:
工作原理:
- 首先,我们使用 ALLEXCEPT 按客户和年月对数据进行分组,并在组内找到最大日期时间。
- 然后,对于当前记录,我们将其日期时间与我们找到的最新日期时间进行比较。如果它们相同,我们计算余额,否则 return 空白。
我有以下数据集 (Table 1),我想创建一个新的计算列,以便仅包含每个月的最后余额数量顾客。
最后一栏(EOM 余额)说明了我需要什么。
-----------------------------------------------------
| Table 1 |
----------------------------------------------------- -------------------
| Date | Customer | Type | Qty | Balance Qty | | EOM Balance Qty |
|=============|==========|======|=====|=============| |=================|
| 1/Jan/2019 | Alan | Buy | 15 | 15 | | |
|-------------|----------|------|-----|-------------| |-----------------|
| 2/Jan/2019 | Alan | Use | 10 | 5 | | 5 |
|-------------|----------|------|-----|-------------| |-----------------|
| 2/Feb/2019 | Alan | Buy | 30 | 35 | | |
|-------------|----------|------|-----|-------------| |-----------------|
| 3/Feb/2019 | Alan | Use | 10 | 25 | | 25 |
|-------------|----------|------|-----|-------------| |-----------------|
| 3/Mar/2019 | Alan | Use | 15 | 10 | | 10 |
|-------------|----------|------|-----|-------------| |-----------------|
| 4/Apr/2019 | Alan | Buy | 100 | 110 | | |
|-------------|----------|------|-----|-------------| |-----------------|
| 5/Apr/2019 | Alan | Use | 35 | 75 | | 75 |
|-------------|----------|------|-----|-------------| |-----------------|
| 1/Jan/2019 | Bob | Buy | 10 | 10 | | |
|-------------|----------|------|-----|-------------| |-----------------|
| 2/Jan/2019 | Bob | Use | 10 | 0 | | 0 |
|-------------|----------|------|-----|-------------| |-----------------|
| 20/Jan/2019 | Charlie | Buy | 100 | 100 | | 100 |
|-------------|----------|------|-----|-------------| |-----------------|
| 1/Feb/2019 | Charlie | Use | 20 | 80 | | 80 |
|-------------|----------|------|-----|-------------| |-----------------|
| 5/Apr/2019 | Charlie | Use | 10 | 70 | | |
|-------------|----------|------|-----|-------------| |-----------------|
| 30/Apr/2019 | Charlie | Use | 55 | 15 | | 15 |
----------------------------------------------------- -------------------
我曾尝试搜索类似的解决方案,结果是 this。但是,当我将其添加为 Power Pivot 中的计算列或度量时出现错误。
我也尝试过使用 ENDOFMONTH
函数,但有些日期没有 return 应有的结果。
= CALCULATE ( SUM ( Table1[closing_balance_qty] ), ENDOFMONTH ( Table1[Date] ) )
非常感谢任何帮助。
根据评论更新:
我修改了你的新源数据如下:
我们现在将使用包含日期 + 时间的列 "Date-Time",而不是之前的列 "Date"。
您还需要在源文件中添加字段 "Year-Month",而不是作为计算列。请您的数据源提供商为您添加,或使用 PowerQuery。
接下来,创建一个计算列:
EOM Balance Qty =
VAR Last_Date_Time =
CALCULATE (
MAX ( Table1[Date-Time] ),
ALLEXCEPT ( Table1, Table1[Customer], Table1[Year-Month] )
)
RETURN
IF ( Table1[Date-Time] = Last_Date_Time, CALCULATE(SUM ( Table1[Balance Qty] )))
结果:
工作原理:
- 首先,我们使用 ALLEXCEPT 按客户和年月对数据进行分组,并在组内找到最大日期时间。
- 然后,对于当前记录,我们将其日期时间与我们找到的最新日期时间进行比较。如果它们相同,我们计算余额,否则 return 空白。