Forum Discussion

usomaraju's avatar
usomaraju
Helper II
6 years ago
Solved

DateDiff with Conditions

Hi,
Can someone help me out with the datediff measure with Conditions


I need to calculate the datediff based on Response code i.e the first occurrence of 500 and the next occurrence of 200, that means the Time diff between Index ‘0’ row and index ‘4’ row (2/22/2020 17:23 - 2/22/2020 17:12 = 11 min)

 

Event timeResponse codeRequest NameIndex
2/22/2020 17:12500POST Write/CaseSavedEvent0
2/22/2020 17:13500POST Write/CaseSavedEvent1
2/22/2020 17:14500POST Write/CaseSavedEvent2
2/22/2020 17:15500POST Write/CaseSavedEvent3
2/22/2020 17:23200POST Write/CaseSavedEvent4
  • Well, you have two problems here. First, you need to flag the correct 500 rows to do your calculation on. Second, you need to do your calculation.

     

    The first part is something like this:

     

    IsFirst500After200 = 
        VAR __Table500 = FILTER(ALL('Table'),[Response code] = 500 && 'Table'[Index]<EARLIER('Table'[Index]))
        VAR __Table200 = FILTER(ALL('Table'),[Response code] = 200 && 'Table'[Index]<EARLIER('Table'[Index]))
        VAR __Max500 = MAXX(__Table500,[Index])
        VAR __Max200 = MAXX(__Table200,[Index])    
        VAR __Flag = 
            SWITCH(TRUE(),
                [Response code] = 200,FALSE(),
                __Max500 > __Max200,FALSE(),
                __Max500 < 'Table'[Index] && ISBLANK(__Max200),FALSE(),
                TRUE()
            )
    RETURN
        __Flag

     

    The second part:

     

    Duration = 
        IF(
            [IsFirst500After200],
            VAR __Next200 = MINX(FILTER(ALL('Table'),'Table'[Index] > EARLIER('Table'[Index]) && 'Table'[Response code] = 200),[Event time])
            RETURN DATEDIFF([Event time],__Next200,SECOND),
            BLANK()
        )

     

    This second part is the identical technique used in MTBF. http://community.powerbi.com/t5/Community-Blog/Mean-Time-Between-Failure-MTBF-and-Power-BI/ba-p/339586. 

     

    I have attached the PBIX file. 

     

6 Replies

  • Anonymous's avatar
    Anonymous
    Not applicable

    Hello!!

    Measure = DATEDIFF(CALCULATE(MAX(Hoja1[Event time]);Hoja1[Response code] =200 );CALCULATE(MIN(Hoja1[Event time]);Hoja1[Response code] = 500);MINUTE)

    Hope this helps!!

    Regards!! 

    • usomaraju's avatar
      usomaraju
      Helper II

      Hi , 

       

      The Query that you given did not work,it gives the null values.

      here i'm posting my complete table, can you please help on this.

      We are trying to calculate time difference between (first occurance of 500 - first occurance of 200) and continue the same for the next occurance of 500 and 200.

      example:event time of index '0' - event time of index '4' 

      event time of index '8' - event time of index '9' 

      and so forth.

       

       

      • Anonymous's avatar
        Anonymous
        Not applicable

        Can you share plz your dataset? No as image.

        Thanks