查找每个客户每月的最后余额数量 (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 |
  ----------------------------------------------------- -------------------

Sample Excel File Here

我曾尝试搜索类似的解决方案,结果是 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 空白。