在 DAX 中减去行值;电力BI
Subtracting row values in DAX ; Power BI
如果我有这样的数据:
我想在 PowerBI 中计算 Bi 和 Bi+1 中的值之间的时间差。也就是说,在一个新的列中,在查询编辑器中(用 M 写),我想要:
C3 = B3-B2
C4 = B4 - B3
等等。
你知道如何在 PowerBI 中实现这一点吗?
您可以使用如下所示的计算列将每一行与前一行进行比较,然后使用 DATEDIFF
函数计算以秒为单位的差异:
Difference in Seconds =
DATEDIFF (
'Table'[Time],
CALCULATE (
MIN ( [Time] ),
FILTER ( ALL ( 'Table' ), [ID] < EARLIER ( 'Table'[ID] ) )
),
SECOND
)
如果你想将它与之前的 ID 时间值进行比较,无论时间值是否更高,你可以简单地使用:
Difference in Seconds =
DATEDIFF (
'Table'[Time],
CALCULATE (
MIN ( [Time] ),
FILTER ( ALL ( 'Table' ), [ID] = EARLIER ( 'Table'[ID] ) - 1 )
),
SECOND
)
使用LOOKUPVALUE
:
Difference in Seconds =
DATEDIFF (
'Table'[Time],
LOOKUPVALUE ( 'Table'[Time], 'Table'[ID], [ID] - 1 ),
SECOND
)
更新:通过 M 语言从源添加列。
在自定义列中使用类似这样的内容:
=Table.AddColumn(#"YourLastStep", "Diff",
each
(try DateTime.From(#"YourLastStep"[Time]{[ID]-2})
otherwise DateTime.From([Time])) - [Time]
)
希望对您有所帮助。
如果我有这样的数据:
我想在 PowerBI 中计算 Bi 和 Bi+1 中的值之间的时间差。也就是说,在一个新的列中,在查询编辑器中(用 M 写),我想要:
C3 = B3-B2
C4 = B4 - B3
等等。
你知道如何在 PowerBI 中实现这一点吗?
您可以使用如下所示的计算列将每一行与前一行进行比较,然后使用 DATEDIFF
函数计算以秒为单位的差异:
Difference in Seconds =
DATEDIFF (
'Table'[Time],
CALCULATE (
MIN ( [Time] ),
FILTER ( ALL ( 'Table' ), [ID] < EARLIER ( 'Table'[ID] ) )
),
SECOND
)
如果你想将它与之前的 ID 时间值进行比较,无论时间值是否更高,你可以简单地使用:
Difference in Seconds =
DATEDIFF (
'Table'[Time],
CALCULATE (
MIN ( [Time] ),
FILTER ( ALL ( 'Table' ), [ID] = EARLIER ( 'Table'[ID] ) - 1 )
),
SECOND
)
使用LOOKUPVALUE
:
Difference in Seconds =
DATEDIFF (
'Table'[Time],
LOOKUPVALUE ( 'Table'[Time], 'Table'[ID], [ID] - 1 ),
SECOND
)
更新:通过 M 语言从源添加列。
在自定义列中使用类似这样的内容:
=Table.AddColumn(#"YourLastStep", "Diff",
each
(try DateTime.From(#"YourLastStep"[Time]{[ID]-2})
otherwise DateTime.From([Time])) - [Time]
)
希望对您有所帮助。