Forum Discussion

Gwin's avatar
Gwin
Regular Visitor
8 years ago
Solved

Seeking help implementing Dax - DriveTime

Can anyone help please?

 

Using this function from erik_tarnvik :

 

DriveTime =

VAR DT =

    DATEDIFF (

        MAXX (

            FILTER (

                ALLSELECTED ( Driving ),

                Driving[ID User] = MAX ( Driving[ID User] )

                    && Driving[Check Out] < MAX ( Driving[Check In] )

            ),

            Driving[Check Out]

        ),

        MAX ( Driving[Check In] ),

        DAY

    )

VAR DM =

    DATEDIFF (

        MAXX (

            FILTER (

                ALLSELECTED ( Driving ),

                Driving[ID User] = MAX ( Driving[ID User] )

                    && Driving[Check Out] < MAX ( Driving[Check In] )

            ),

            Driving[Check Out]

        ),

        MAX ( Driving[Check In] ),

        MINUTE

    )

RETURN

    IF ( DT = 0, DM, BLANK () )

 

I am getting an error massage:

MdxScript(Model) (5, 5) Calculation error in measure 'Driving'[DriveTime]: In DATEDIFF function, the start date cannot be greater than the end date) 

 

My data is:

ID UserID StoreCheck InCheck OutTime Diff
1A10/18/2017 9:1510/18/2017 9:580:43:12
1B10/18/2017 10:5610/18/2017 11:320:36:00
1C10/18/2017 12:2910/18/2017 13:200:50:24
1D10/18/2017 14:1710/18/2017 15:221:04:48
1W10/19/2017 9:0510/19/2017 9:260:21:36
1X10/19/2017 10:2410/19/2017 11:501:26:24
1Y10/19/2017 12:4810/19/2017 13:450:57:36
1Z10/19/2017 14:4310/19/2017 15:290:46:05

 

Thank you in advance.

Regards

Gwin

  • Hi Gwin,

     

    As the error message prompted, in DATEDIFF function, the start date cannot be greater than the end date. 

    Syntax: DATEDIFF(<start_date>, <end_date>, <interval>)

     

    So, please make a little modification to your formula:

    DriveTime 2 = 
    VAR DT =
        DATEDIFF (
            MAX ( Driving[Check In] ),
            MAXX (
                FILTER (
                    ALLSELECTED ( Driving ),
                    Driving[ID User] = MAX ( Driving[ID User] )
                        && Driving[Check Out] < MAX ( Driving[Check In] )
                ),
                Driving[Check Out]
            ),
            
            DAY
        )
    VAR DM =
        DATEDIFF (
            MAX ( Driving[Check In] ),
            MAXX (
                FILTER (
                    ALLSELECTED ( Driving ),
                    Driving[ID User] = MAX ( Driving[ID User] )
                        && Driving[Check Out] < MAX ( Driving[Check In] )
                ),
                Driving[Check Out]
            ),
            
            MINUTE
        )
    RETURN
        IF ( DT = 0, DM, BLANK () )

    Best regards,
    Yuliana Gu

3 Replies

  • MattAllington's avatar
    MattAllington
    Community Champion

    The error message suggests you have your check in and check out date comparisons back to front. 

    • Gwin's avatar
      Gwin
      Regular Visitor

      Do you mind running my DAX? the dates are labelled properly. Thanks

  • v-yulgu-msft's avatar
    v-yulgu-msft
    Microsoft Employee

    Hi Gwin,

     

    As the error message prompted, in DATEDIFF function, the start date cannot be greater than the end date. 

    Syntax: DATEDIFF(<start_date>, <end_date>, <interval>)

     

    So, please make a little modification to your formula:

    DriveTime 2 = 
    VAR DT =
        DATEDIFF (
            MAX ( Driving[Check In] ),
            MAXX (
                FILTER (
                    ALLSELECTED ( Driving ),
                    Driving[ID User] = MAX ( Driving[ID User] )
                        && Driving[Check Out] < MAX ( Driving[Check In] )
                ),
                Driving[Check Out]
            ),
            
            DAY
        )
    VAR DM =
        DATEDIFF (
            MAX ( Driving[Check In] ),
            MAXX (
                FILTER (
                    ALLSELECTED ( Driving ),
                    Driving[ID User] = MAX ( Driving[ID User] )
                        && Driving[Check Out] < MAX ( Driving[Check In] )
                ),
                Driving[Check Out]
            ),
            
            MINUTE
        )
    RETURN
        IF ( DT = 0, DM, BLANK () )

    Best regards,
    Yuliana Gu