DAX:根据邮政编码计算从一站到另一站所花费的时间
DAX: Calculate time spent from one stop to other with respect to zipcode
我需要计算从一站到另一站所用的时间。
如果行程发生在同一邮政编码区域且超过一小时,我应该报告。
例如,
带有数据框的附加图像显示了同一邮政编码中从一站到另一站的到达时间差异大于一小时的实例。我发出信号。如果少于一小时,则无需采取任何措施。它应该按 RuteID、Sequence 和 arrivedTime 进行分组和排序。在附加示例中,从 zipCode 2300 到 2300 的行程不到一小时就可以了。但如果超过一小时,我应该通过新列 true/false 报告超过一小时的数字。
我会使用以下步骤在电源查询中执行此操作:
添加新列“NextSequence”= [Sequence]+1
与 table 本身进行嵌套连接,将 {"RoutID", "Sequence"} 与 {"RoutID", "NextSequence"} 链接起来,并且在扩展时,只保留departedTime 和 ZipCode 列将它们称为“prevDepTime”和“PrevZip”
写一个 IF 语句说 if [PrevZip] <> null and [PrevZip] = [ZipCode] and [ArrivedTime]-[PrevDepTime] >= #time(1,0,0) then "Late" else "OK"
清理 table,只保留您想要的列。
然后,当将新的 table 加载到 power bi 时,我有一些看起来像这样的东西(我在 RoutID2 上添加了一个用于测试的 ew 停止):
我的 M 代码:
AddNextSequence = Table.AddColumn(PREVIOUS_STEP_NAME, "NextSequence", each [Sequence]+1, Int64.Type),
NestedJoin = Table.NestedJoin(AddNextSequence, {"RouteID", "Sequence"}, AddNextSequence, {"RouteID", "NextSequence"}, "AddedTable", JoinKind.LeftOuter),
ExpandTable = Table.ExpandTableColumn(NestedJoin, "AddedTable", {"DepartedTime", "ZipCode"}, {"PrevDepTime", "PrevZip"}),
Add_OkLate = Table.AddColumn(Expandedtable, "OK_or_Late", each if [PrevZip] <> null and [PrevZip] = [ZipCode] and Number.From([ArriveedTime]) - Number.From([PrevDepTime]) > Number.From(#time(1,0,0) ) then "Late"
else
"OK", type text),
FinalizeTable = Table.SelectColumns(AddOkLate,{"RowNumber", "RouteID", "Sequence", "ArriveedTime", "DepartedTime", "ZipCode", "OK_or_Late"})
in
FinalizeTable
我需要计算从一站到另一站所用的时间。 如果行程发生在同一邮政编码区域且超过一小时,我应该报告。
例如,
带有数据框的附加图像显示了同一邮政编码中从一站到另一站的到达时间差异大于一小时的实例。我发出信号。如果少于一小时,则无需采取任何措施。它应该按 RuteID、Sequence 和 arrivedTime 进行分组和排序。在附加示例中,从 zipCode 2300 到 2300 的行程不到一小时就可以了。但如果超过一小时,我应该通过新列 true/false 报告超过一小时的数字。
我会使用以下步骤在电源查询中执行此操作:
添加新列“NextSequence”= [Sequence]+1
与 table 本身进行嵌套连接,将 {"RoutID", "Sequence"} 与 {"RoutID", "NextSequence"} 链接起来,并且在扩展时,只保留departedTime 和 ZipCode 列将它们称为“prevDepTime”和“PrevZip”
写一个 IF 语句说
if [PrevZip] <> null and [PrevZip] = [ZipCode] and [ArrivedTime]-[PrevDepTime] >= #time(1,0,0) then "Late" else "OK"
清理 table,只保留您想要的列。
然后,当将新的 table 加载到 power bi 时,我有一些看起来像这样的东西(我在 RoutID2 上添加了一个用于测试的 ew 停止):
我的 M 代码:
AddNextSequence = Table.AddColumn(PREVIOUS_STEP_NAME, "NextSequence", each [Sequence]+1, Int64.Type),
NestedJoin = Table.NestedJoin(AddNextSequence, {"RouteID", "Sequence"}, AddNextSequence, {"RouteID", "NextSequence"}, "AddedTable", JoinKind.LeftOuter),
ExpandTable = Table.ExpandTableColumn(NestedJoin, "AddedTable", {"DepartedTime", "ZipCode"}, {"PrevDepTime", "PrevZip"}),
Add_OkLate = Table.AddColumn(Expandedtable, "OK_or_Late", each if [PrevZip] <> null and [PrevZip] = [ZipCode] and Number.From([ArriveedTime]) - Number.From([PrevDepTime]) > Number.From(#time(1,0,0) ) then "Late"
else
"OK", type text),
FinalizeTable = Table.SelectColumns(AddOkLate,{"RowNumber", "RouteID", "Sequence", "ArriveedTime", "DepartedTime", "ZipCode", "OK_or_Late"})
in
FinalizeTable