Forum Discussion

IMarvinTPA's avatar
IMarvinTPA
Regular Visitor
8 years ago
Solved

Consolidating Dates in a Report Title.

Hi, I have a report that has daily data which can be filtered by date.  I also need to show the dates in the title.  I have that much sorted out using https://blog.crossjoin.co.uk/2016/04/25/dynamic...
  • Phil_Seamark's avatar
    8 years ago

    Hi IMarvinTPA

     

    DAX can compress vertical sequences, but it's not super optimised for it.

     

    This is pretty close, but you can see it's not a trivial peice of code.

     

    But this measure.

     

    Date Measure = 
    VAR A = VALUES('DD'[Day Date])
    VAR B = CALENDAR(MIN('DD'[Day Date]),MAX('DD'[Day Date]))
    VAR Gaps = SELECTCOLUMNS(EXCEPT(B,A),"Gap Day",[Date]) 
    VAR C = SELECTCOLUMNS(A,"End Date",[Day Date])
    --- Get a bunch of possible sequences
    VAR D = GENERATE(
                A,
                FILTER(
                   C,
                    [End Date] >= [Day Date])
                    )
    -- Make a list of sequences WTIH a gap in them
    VAR E = SELECTCOLUMNS(
                GENERATE(
                    D , 
                    FILTER(
                            Gaps,
                            [Gap Day]>=[Day Date] && [Gap Day] <= [End Date])
                            ),
                "Day Date",[Day Date] ,
                "End Date",[End Date])   
    VAR F = EXCEPT(D,E)
    
    VAR G = 
        SELECTCOLUMNS( 
            GENERATE(
                F,
                FILTER(
                    SELECTCOLUMNS(
                        f,
                        "D",[Day Date],
                        "E",[End Date]
                        ) ,
                    ([D]>[Day Date] && [D]<=[End Date])
                    ||    
                    ([E]>=[Day Date] && [E]<[End Date])
                    )
               )
                    ,"D",[D],"E",[E])
    VAR H =  
        SELECTCOLUMNS(
            EXCEPT(F,G),
            "Output", 
                IF(
                    [Day Date] = [End Date],
                    FORMAT([Day Date],"DD/MM/YYYY"),
                    FORMAT([Day Date],"DD/MM") & "-" & FORMAT([End Date],"DD/MM/YYYY")
                         ))
        
    RETURN CONCATENATEX(H,[Output], ", ")

    Compresses this data

     

    Into this

     

     

    Phew!