【问题标题】:Power BI calculate sum only last value of duplicate IDPower BI 仅计算重复 ID 的最后一个值的总和
【发布时间】:2021-03-10 18:05:33
【问题描述】:

我正在努力创建一个对一列求和的度量,并让它过滤掉重复的 ID,同时只取最新的行。

比如有这样一张表:

UID | Quantity | Status    | StatusDate
aaa | 3        | Shipped   | 11/1/2020
aaa | 3        | Delivered | 11/5/2020
bbb | 5        | Ordered   | 10/29/2020
ccc | 8        | Shipped   | 11/4/2020

所以这个想法是对数量求和,但我只想计算一次 id “aaa” 的数量,并且只计入最新状态(在这种情况下为“已交付”)。我会制作一个视觉效果,以状态为轴显示数量。我还需要添加一个日期切片器,以便及时返回。因此,当我在 2020 年 11 月 5 日之前去时,它会切换回“已发货”,而不是“已发货”。

我尝试了几种方法:

  1. 如果 UID 相同,则汇总到过滤“MAX”日期值的表格。我发现这不适用于日期切片器,因为它似乎实际上并没有重新计算过滤,只是切掉了日期之外的行。无论 SUMMARIZE 在 Measure 中设置为新表还是 VAR,似乎都是一样的。

  2. CALCULATE 看起来很有希望,但我似乎无法弄清楚语法 我需要的过滤器。一个不起作用的例子(我也尝试过 SUMX 而不是 SUM,但这也不起作用):

    计算( 总和(表 1 [数量]), FILTER(Table1, [StatusDate]=MAXX(FILTER(Table1,[UID]=EARLIER([UID])),[StatusDate]) )

  3. 我还尝试添加一列,说明该行是否为“旧”以及不同状态的数字“等级”。但是再一次,我遇到了日期切片器没有完全过滤以重新计算这些列的问题。例如,如果日期切片器设置为 2020 年 11 月 3 日,则应将“3”添加到“已发货”而不是“已交付”。但不是那样,它只是删除了告诉我它实际上并没有重新计算列的行(如#1)。

任何帮助将不胜感激 :-) 谢谢!

【问题讨论】:

    标签: powerbi dax powerbi-desktop


    【解决方案1】:

    你可以试试这样的:

    Measure = 
    VAR d = LASTDATE(Table1[StatusDate])
    VAR tb = SUMMARIZE(FILTER(Table1, Table1[StatusDate] <= d), 
                      Table1[UID], 
                      "last", LASTDATE(Table1[StatusDate]))
    
    RETURN CALCULATE(SUM(Table1[Quantity]), TREATAS(tb, Table1[UID], Table1[StatusDate]))
    

    tb 变量包含一个表,该表具有每个 UID 的最新日期。然后,您可以使用 TREATAS 函数过滤您的主表。

    另一种选择是使用按日期排序的 RANK 函数创建一个表,然后对该表执行 SUM,其中 Rank = 1。

    【讨论】:

      猜你喜欢
      • 2021-05-12
      • 2022-01-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-04-29
      • 1970-01-01
      • 1970-01-01
      • 2021-12-05
      相关资源
      最近更新 更多