PowerBi在条件

时间:2019-07-02 21:13:07

标签: powerbi dax

我想知道我想实现的目标是否可行,请查看图片并阅读以下说明:

enter image description here

我想在右侧添加一列,如果单元格表[ActionType] =“ TERMINATING”,它将计算时间戳之间的差异(TERMINATING的时间戳-下一行中STARTING的时间戳)。如果结果为正(> 0),则将其存储在相应行的列中(例如,要终止的时间戳旁边),如果结果为负,则不存储它。所有这些都适用于整个表。

我尝试了条件列,但我猜不能用它完成,或者至少我做不到。

将非常感谢您的答复和提示!

1 个答案:

答案 0 :(得分:1)

先决条件:-使用查询编辑器添加索引列。确保它们彼此相邻。

建议将TimeStamp列保留为DateTime列本身。

因此,如果您可以将TimeStamp列更改为DateTime列,请尝试以下操作:-

Difference = 
   Var Get_Action_Type = Table1[ActionType]
   Var required_Index_1 = Table1[Index] + 1
   Var required_Index = IF(required_Index_1 > MAX(Table1[Index]),required_Index_1-1, required_Index_1)
   Var Current_Action_TimeStamp = Table1[TimeStamp]
   Var next_Action_TimeStamp = CALCULATE(MAX(Table1[TimeStamp]),FILTER(Table1, Table1[Index] = required_Index))
   Var pre_result = IF(Get_Action_Type = "TERMINATING", DATEDIFF(Current_Action_TimeStamp, next_Action_TimeStamp,SECOND), BLANK())
   Var result = IF(pre_result > 0, pre_result, BLANK())
return result

如果无法将其更改为“日期时间”,请尝试计算此列

Difference_2 = 
   Var Get_Action_Type = Table1[ActionType]
   Var required_Index_1 = Table1[Index] + 1
   Var required_Index = IF(required_Index_1 > MAX(Table1[Index]),required_Index_1-1, required_Index_1)
   Var Current_Action_TimeStamp = Table1[Time_Stamp_Number]
   Var next_Action_TimeStamp = CALCULATE(MAX(Table1[Time_Stamp_Number]),FILTER(Table1, Table1[Index] = required_Index))
   Var pre_result = IF(Get_Action_Type = "TERMINATING", next_Action_TimeStamp - Current_Action_TimeStamp, BLANK())
   Var result = IF(pre_result > 0, pre_result, BLANK())
return result

输出如下:-

enter image description here

请接受答案(如果有帮助的话),并告诉我它如何为您服务。