2

如果我有这种数据: 在此处输入图像描述

我想在 PowerBI 中计算 Bi 和 Bi+1 中的值之间的时间差。也就是说,在一个新的列中,在查询编辑器中(所以用 M 编写),我想要:

C3 = B3-B2

C4 = B4 - B3

等等。

你知道如何在 PowerBI 中实现这一点吗?

4

1 回答 1

3

您可以使用如下所示的计算列将每一行与前一行进行比较,然后使用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]  
 )

在此处输入图像描述

希望能帮助到你。

于 2017-03-16T15:49:12.727 回答