PowerBi вычитает две ячейки в разных рядах с условием - PullRequest
2 голосов
/ 03 июля 2019

Мне интересно, возможно ли что-то, чего я хотел бы достичь, пожалуйста, посмотрите на картинку и прочитайте описание ниже:

enter image description here

Я хотел бы добавить столбец справа, где, если таблица ячеек [ActionType] = "TERMINATING", она вычисляет разницу между временными метками (timestamp for TERMINATING - временная метка для STARTING в строке ниже). Если результат положительный (> 0), сохраните его в столбце в соответствующей строке (например, рядом с отметкой времени для завершения), если результат отрицательный, не сохраняйте его. И все это относится ко всей таблице.

Я попробовал условный столбец, и я думаю, что это не может быть сделано с этим или, по крайней мере, я не мог сделать это.

Буду очень благодарен за отзывы и советы!

1 Ответ

1 голос
/ 03 июля 2019

Предварительное условие: - Добавить столбец индекса с помощью редактора запросов.Убедитесь, что они находятся в следующей строке друг для друга.

Рекомендуется сохранить столбец 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

И если вы не можете изменить его на Date Time, попробуйте этот вычисленный столбец,

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

Пожалуйста, примите ответ, если он поможет, и дайте мне знать, как он работает для вас.

...