将行与下一行值相加,并在所选日期的其他列中获取下一个值
Sum row with next row value and grab next value in other column for the date selected
假设我有这个数据:
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 的行与下一行 2-May 的列相加 Earn 并获取列 Earn Cum. 的下一个值 52,106。结果应该是:
1-May 7,498 52,106
另一个例子:如果选择的日期是 4 月 30 日,结果必须是:
30-Apr 13,173 50,699
我正在挠头尝试使用 Power BI 中的度量来做到这一点。
访问日期情报会有所帮助,因此如果您还没有日期,请创建一个日期 table。下面的 dax 设置了一个小的 table,几乎没有覆盖示例中的样本数据。
Date = CALENDAR(Date(2019,4,10),Date(2019,5,5))
在 table 中的日期和新的日期维度之间建立关系。使用日期维度向您的视觉对象添加切片器。
我们可以使用 IF 和 ISFILTERED 来检查是否进行了过滤。如果我们不对 Date
进行过滤,那么我们会得到正常的 table 行为。如果是,我们将看到修改后的结果。
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.]))
结果:
-未过滤-
-过滤-
我会打电话给你的 table "Data"。
创建度量:
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 )
结果:
注意:代码假定您的日期是连续的(没有间隔)。如果他们有差距,事情就会更复杂一些。
假设我有这个数据:
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 的行与下一行 2-May 的列相加 Earn 并获取列 Earn Cum. 的下一个值 52,106。结果应该是:
1-May 7,498 52,106
另一个例子:如果选择的日期是 4 月 30 日,结果必须是:
30-Apr 13,173 50,699
我正在挠头尝试使用 Power BI 中的度量来做到这一点。
访问日期情报会有所帮助,因此如果您还没有日期,请创建一个日期 table。下面的 dax 设置了一个小的 table,几乎没有覆盖示例中的样本数据。
Date = CALENDAR(Date(2019,4,10),Date(2019,5,5))
在 table 中的日期和新的日期维度之间建立关系。使用日期维度向您的视觉对象添加切片器。
我们可以使用 IF 和 ISFILTERED 来检查是否进行了过滤。如果我们不对 Date
进行过滤,那么我们会得到正常的 table 行为。如果是,我们将看到修改后的结果。
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.]))
结果:
-未过滤-
-过滤-
我会打电话给你的 table "Data"。
创建度量:
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 )
结果:
注意:代码假定您的日期是连续的(没有间隔)。如果他们有差距,事情就会更复杂一些。