Forum Discussion

Anonymous's avatar
Anonymous
Not applicable
5 years ago
Solved

Filter data between two dates but not another

Hello everyone,   I am trying to summarise a data table using the following DAX;   VAR _table = CALCULATETABLE( SUMMARIZE('GPS Data','GPS Data'[Name],'GPS Data'[Session ID],'GPS Data'[Maximum V...
  • AlB's avatar
    5 years ago

    Hi Anonymous 

    Try this

     

    VAR _table =
    CALCULATETABLE (
        SUMMARIZE (
            'GPS Data',
            'GPS Data'[Name],
            'GPS Data'[Session ID],
            'GPS Data'[Maximum Velocity (m/s)]
        ),
        VAR date1_ =
            DATE ( 2017, 07, 03 )
        VAR date2_ =
            DATE ( 2018, 08, 16 )
        RETURN
            UNION (
                FILTER (
                    ALL ( 'GPS Data'[Date], 'GPS Data'[Matchday (+/-)] ),
                    'GPS Data'[Date] >= date1_
                        && 'GPS Data'[Date] <= date2_
                        && NOT 'GPS Data'[Matchday (+/-)] IN { "MD", "PSF", "Off Season", BLANK () }
                ),
                FILTER (
                    ALL ( 'GPS Data'[Date], 'GPS Data'[Matchday (+/-)] ),
                    'GPS Data'[Date] > date2_
                        && NOT 'GPS Data'[Matchday (+/-)] IN { "PSF", "Off Season", BLANK () }
                )
            )
    )

    or this

    VAR _table =
    CALCULATETABLE (
        SUMMARIZE (
            'GPS Data',
            'GPS Data'[Name],
            'GPS Data'[Session ID],
            'GPS Data'[Maximum Velocity (m/s)]
        ),
        VAR date1_ =
            DATE ( 2017, 07, 03 )
        VAR date2_ =
            DATE ( 2018, 08, 16 )
        RETURN
            FILTER (
                ALL ( 'GPS Data'[Date], 'GPS Data'[Matchday (+/-)] ),
                IF (
                    'GPS Data'[Date] >= date1_
                        && 'GPS Data'[Date] <= date2_,
                    NOT 'GPS Data'[Matchday (+/-)] IN { "MD", "PSF", "Off Season", BLANK () },
                    NOT 'GPS Data'[Matchday (+/-)] IN { "PSF", "Off Season", BLANK () }
                )
            )
    )

    Both approaches filter out everything before 03/07/2018

     

    Please mark the question solved when done and consider giving a thumbs up if posts are helpful.

    Contact me privately for support with any larger-scale BI needs, tutoring, etc.

    Cheers 

  • AlB's avatar
    AlB
    5 years ago

    Anonymous 

    What slicers exactly? Are they all on from the Date table?

    Variables in DAX are immutable. Their value, assigned at creation, will never change. Think of them as constants. So the CALCULATE ( ..... , ALL( ...)) will have no effect whatsoever in  _table

    You would have to apply that when creating the VAR _table, not afterwards.  Something like (based on the previous code):

     

    VAR _table =
    CALCULATETABLE (
        SUMMARIZE (
            'GPS Data',
            'GPS Data'[Name],
            'GPS Data'[Session ID],
            'GPS Data'[Maximum Velocity (m/s)]
        ),
        VAR date1_ = DATE ( 20170703 )
        VAR date2_ = DATE ( 20180816 )
        RETURN
            FILTER (
                ALL ( 'GPS Data'[Date], 'GPS Data'[Matchday (+/-)] ),
                IF (
                    'GPS Data'[Date] >= date1_ && 'GPS Data'[Date] <= date2_,
                    NOT 'GPS Data'[Matchday (+/-)] IN { "MD""PSF""Off Season"BLANK () },
                    NOT 'GPS Data'[Matchday (+/-)] IN { "PSF""Off Season"BLANK () }
                )
            ),
        ALL ( Dates )
    )

     

     

     

    Please mark the question solved when done and consider giving a thumbs up if posts are helpful.

    Contact me privately for support with any larger-scale BI needs, tutoring, etc.

    Cheers