【问题标题】:Sum row with next row value and grab next value in other column for the date selected将行与下一行值相加,并在其他列中获取所选日期的下一个值
【发布时间】:2019-11-01 13:30:06
【问题描述】:

假设我有这些数据:

         Earn     Earn Cum.
13-Apr       -        -   
14-Apr      48        48 
15-Apr     257       305 
16-Apr     518       823 
17-Apr     489     1,312 
18-Apr     837     2,149 
19-Apr   1,005     3,154 
20-Apr   1,021     4,175 
21-Apr   1,463     5,638 
22-Apr   2,630     8,268 
23-Apr   2,993    11,261 
24-Apr   3,354    14,615 
25-Apr   4,332    18,947 
26-Apr   4,885    23,832 
27-Apr   4,514    28,346 
28-Apr   4,356    32,702 
29-Apr   4,824    37,526 
30-Apr   7,082    44,608 
1-May    6,091    50,699 
2-May    1,407    52,106 

当在下拉切片器中选择日期时,例如:1-May 我想将 1-May 的行与 Earn 列的下一行 2-May 相加并获取Earn Cum. 列的下一个值 52,106。结果应该是:

1-May    7,498    52,106

另一个例子:如果选择的日期是 4 月 30 日,结果必须是:

30-Apr  13,173    50,699    

我正在摸索着尝试使用 Power BI 中的度量来做到这一点。

【问题讨论】:

  • 问题是什么?你想写几个度量吗?
  • 是的...我想把它放在一个衡量标准中。

标签: row powerbi dax next calculation


【解决方案1】:

我会将您的表称为“数据”。

创建一个度量:

Next Earn =
VAR Current_Date = MAX ( Data[Date] )
VAR Next_Date = Current_Date + 1
RETURN
    CALCULATE (
        SUM ( Data[Earn] ),
        Data[Date] = Current_Date || Data[Date] = Next_Date
    )

创建另一个度量:

Next Cum Earn = 
VAR Current_Date =  MAX ( Data[Date] )
VAR Next_Date = Current_Date + 1
RETURN
    CALCULATE ( SUM ( Data[Earn Cum] ), Data[Date] = Next_Date )

结果:

注意:代码假定您的日期是连续的(没有间隔)。如果他们有差距,事情会更复杂一些。

【讨论】:

  • 感谢您的回答...我会尝试...您也可以在这里阐明一下吗? stackoverflow.com/q/56658634/114029
  • RADO...这个问题也适用于那个样本。 .pbix我在另一个问题中分享了。 drive.google.com/open?id=1r7kiIkwgHnI5GUssJ6KlXBAoeDRISEuC。已应用所有过滤器。我添加了Next Earn 度量,它将赚取值移动到上一行。 14-Apr 的值为 48,这个值被移动到 13-Apr 并且在某种程度上它正在改变所有的值。它应该只对最后一个值求和,同时将这些值保留在各自的日期中。不是让用户选择切割日期,而是在 .pbix 的新表中设置此日期。我们称之为Cut date
  • @LenielMaccaferri - 我很难理解你的评论
  • 我将上传一个不同的测试 .pbix 以便您可以使用它。
  • 这里是:drive.google.com/open?id=1OG7keqhdvDUDYkFQFMHyxcpi9Zi6Pn3d 看到它没有按预期工作。我将更新问题并添加打印屏幕。
【解决方案2】:

访问日期情报会有所帮助,因此如果您还没有日期表,请创建一个日期表。以下 dax 设置了一个小表,几乎不包含示例中的示例数据。

Date = CALENDAR(Date(2019,4,10),Date(2019,5,5))

在表中的 Dates 和新的 Date 维度之间创建关系。使用 Date 维度向您的视觉对象添加切片器。

我们可以使用 IF 和 ISFILTERED 来检查是否正在进行过滤。如果我们不对Date 进行过滤,那么我们会得到正常的表行为。如果是,我们将看到修改后的结果。

Earn _ Alt = 
var tomorrow = CALCULATE (
    SUM(Table1[Earn]),
    dateadd('Table1'[Date], 1, DAY)
 )

return Sum(Table1[Earn]) + IF(ISFILTERED`('Date'[Date]),tomorrow,0)`

Earn Cum. _ Alt = IF(ISFILTERED('Date'[Date]),
CALCULATE (
    SUM(Table1[Earn Cum.]),
    dateadd('Table1'[Date], 1, DAY)
 ),
SUM(Table1[Earn Cum.]))

结果:

-未过滤-

-过滤-

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-12-24
  • 1970-01-01
  • 1970-01-01
  • 2020-05-11
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多