Row 将行与下一行值相加,并在其他列中获取所选日期的下一个值
假设我有以下数据:Row 将行与下一行值相加,并在其他列中获取所选日期的下一个值,row,powerbi,dax,next,calculation,Row,Powerbi,Dax,Next,Calculation,假设我有以下数据: 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-
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我想对列Earn的行1-May与下一行2-May求和,并获取列Earn Cum的下一个值52106。。结果应该是:
1-May 7,498 52,106
另一个示例:如果选择的日期是4月30日,则结果必须是:
30-Apr 13,173 50,699
我正绞尽脑汁试图使用Power BI中的一个度量值来实现这一点。这将有助于访问日期智能,因此如果您还没有日期表,请创建一个日期表。下面的dax设置了一个小表,它几乎不包含示例中的示例数据
Date = CALENDAR(Date(2019,4,10),Date(2019,5,5))
在表中的日期和新的日期维度之间创建关系。使用日期维度向视觉效果添加切片器
我们可以使用IF和isfilter来检查是否正在进行过滤。如果我们不在Date
上进行筛选,则会得到正常的表行为。如果是,我们将看到修改后的结果
Earn _ Alt =
var tomorrow = CALCULATE (
SUM(Table1[Earn]),
dateadd('Table1'[Date], 1, DAY)
)
return Sum(Table1[Earn]) + IF(ISFILTERED`('Date'[Date]),tomorrow,0)`
及
结果:
-未过滤-
-过滤-
它将有助于访问日期智能,因此,如果您还没有日期表,请创建一个日期表。下面的dax设置了一个小表,它几乎不包含示例中的示例数据
Date = CALENDAR(Date(2019,4,10),Date(2019,5,5))
在表中的日期和新的日期维度之间创建关系。使用日期维度向视觉效果添加切片器
我们可以使用IF和isfilter来检查是否正在进行过滤。如果我们不在Date
上进行筛选,则会得到正常的表行为。如果是,我们将看到修改后的结果
Earn _ Alt =
var tomorrow = CALCULATE (
SUM(Table1[Earn]),
dateadd('Table1'[Date], 1, DAY)
)
return Sum(Table1[Earn]) + IF(ISFILTERED`('Date'[Date]),tomorrow,0)`
及
结果:
-未过滤-
-过滤-
我将您的表格称为“数据”
创建一个度量:
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 )
结果:
注意:代码假定您的日期是连续的(没有间隔)。如果他们有差距,事情就更复杂了 我将您的表称为“数据”
创建一个度量:
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/114029RADO。。。这个问题也适用于该样本
.pbix
我在另一个问题中分享了。所有过滤器均已应用。我添加了Next Earn
measure,它将挣值移到上面一行。4月14日的值为48,该值被移动到4月13日,并在一定程度上改变了所有值。它应该只求最后一个值的和,同时将值保留在各自的日期中。不是让用户选择切割日期,而是在.pbix中的新表中设置该日期。让我们称之为Cut date
@LenielMaccaferri-我很难理解您的评论我将上传一个不同的testing.pbix,以便您可以使用它。这里是:查看它是否按预期工作。我将更新问题并添加打印屏幕。谢谢您的回答。。。我试试看。。。你能不能也在这里说明一下?stackoverflow.com/q/56658634/114029RADO。。。这个问题也适用于该样本.pbix
我在另一个问题中分享了。所有过滤器均已应用。我添加了Next Earn
measure,它将挣值移到上面一行。4月14日的值为48,该值被移动到4月13日,并在一定程度上改变了所有值。它应该只求最后一个值的和,同时将值保留在各自的日期中。不是让用户选择切割日期,而是在.pbix中的新表中设置该日期。让我们称之为Cut date
@LenielMaccaferri-我很难理解您的评论我将上传一个不同的testing.pbix,以便您可以使用它。这里是:查看它是否按预期工作。我将更新问题并添加打印屏幕。