查找每个客户每月的最后余额数量(Power Pivot)

时间:2019-11-05 09:20:50

标签: dax powerpivot

我有下面的数据集(表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函数,但是某些日期未按预期返回结果。

= CALCULATE ( SUM ( Table1[closing_balance_qty] ), ENDOFMONTH ( Table1[Date] ) )

非常感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

根据评论进行了更新:

我修改了您的新源数据,如下所示:

enter image description here

现在,我们将使用列“ Date-Time”代替上一列“ Date”,其中包含日期和时间。

您还需要在源文件中添加“年月”字段,而不是将其作为计算列。要求您的数据源提供者为您添加它,或者使用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] )))

结果:

enter image description here

工作原理:

  • 首先,我们使用ALLEXCEPT按客户和年份和月份对数据进行分组,然后在组中找到最大日期时间。
  • 然后,对于当前记录,我们将其日期时间与找到的最新日期时间进行比较。如果它们相同,我们将计算余额,否则返回空白。