Forum Discussion

Anonymous's avatar
Anonymous
Not applicable
2 years ago
Solved

Create line graph for only Month end values based on date slicer

Hi, I have regualar transactional table where in data gets appended with every day load. Sample looks like below.

Every month last record would be last business working day. Like for June its 28th, July its 31st etc.

 

I have a regular date calendar joined to this table and Date from this table is used for slicer for users to pick date.

 

Coming to requirement, I need to create line graphs only with Month end data points. Based on date user selects on slicer, I gave few selection examples as well below.

 

I can bring in only Month end data records in dataset from database to simplify, that would look exaclty same as main table with only May 31st, June 28th, July 31st.. etc...

 

DateDealNameTimeRangeMetric AMetric B
June 1stA5Y/2Y100150
June 2ndA5Y100160
.A5Y/2Y100150
.A5Y100160
June 28thA5Y/2Y100150
July 1stA5Y100160
July 2ndA2Y100150
.A5Y100160
.A2Y100150
July 31stA5Y100160
Aug 1stA5Y/2Y100150
Aug 2ndA5Y100160
.A5Y100150
.A5Y100160
.A5Y/2Y100150
Aug 8thA5Y100160

 

selected valueLine graph should show data points for these Month ends
July 31stJuly 31st and all Month ends before
August 5thJuly 31st and all Month ends before
June 28thJune 28th and all Month ends before
June 10thMay 31st and all Month ends beofre
  • Step 0: I use your data below.

     

    Step 1: I add a 'Month' column and a 'Flag' column.

        Month = MONTH([Date])

        Flag = IF([Date]=CALCULATE(MAX(DATA[Date]),ALLEXCEPT('DATA','DATA'[Month])),1,0)

     

    Step 2: I make a graph and set 'Flag' filter.

     

  • Anonymous's avatar
    Anonymous
    2 years ago

    Thanks for the reply from mickey64 , 3CloudThomas and andrezmar   , please allow me to provide another insight:

    Hi, Anonymous 

    Regarding the issue you raised, my solution is as follows:

    1.First I have created the following table and the column names and data are the data you have given:

    2.Create calculated column references:

    LastWorkdayOfMonth = 
    VAR LastDay = EOMONTH('Table'[Date], 0)
    VAR LastWorkday = 
        SWITCH(
            WEEKDAY(LastDay, 2),
            6, LastDay - 1,  
            7, LastDay - 2,  
            LastDay          
        )
    RETURN LastWorkday

    3. Below are the measure I've created for your needs:

    MEASURE A = 
    VAR LastDay1 =
        EOMONTH ( MAX ( 'Table (2)'[selcet] ), 0 )
    VAR LastDay2 =
        EOMONTH ( MAX ( 'Table (2)'[selcet] ), -1 )
    VAR LastWorkday1 =
        SWITCH ( WEEKDAY ( LastDay1, 2 ), 6, LastDay1 - 1, 7, LastDay1 - 2, LastDay1 )
    VAR LastWorkday2 =
        SWITCH ( WEEKDAY ( LastDay2, 2 ), 6, LastDay2 - 1, 7, LastDay2 - 2, LastDay2 )
    RETURN
        IF (
            MAX ( 'Table (2)'[selcet] ) = LastWorkday1,
            CALCULATE (
                SUM ( 'Table'[Metric A] ),
                'Table'[LastWorkdayOfMonth] = MAX ( 'Table (2)'[selcet] )
            ),
            CALCULATE (
                SUM ( 'Table'[Metric A] ),
                'Table'[LastWorkdayOfMonth] = LastWorkday2
            )
        )
    Measure B = 
    VAR LastDay1 =
        EOMONTH ( MAX ( 'Table (2)'[selcet] ), 0 )
    VAR LastDay2 =
        EOMONTH ( MAX ( 'Table (2)'[selcet] ), -1 )
    VAR LastWorkday1 =
        SWITCH ( WEEKDAY ( LastDay1, 2 ), 6, LastDay1 - 1, 7, LastDay1 - 2, LastDay1 )
    VAR LastWorkday2 =
        SWITCH ( WEEKDAY ( LastDay2, 2 ), 6, LastDay2 - 1, 7, LastDay2 - 2, LastDay2 )
    RETURN
        IF (
            MAX ( 'Table (2)'[selcet] ) = LastWorkday1,
            CALCULATE (
                SUM ( 'Table'[Metric B] ),
                'Table'[LastWorkdayOfMonth] = MAX ( 'Table (2)'[selcet] )
            ),
            CALCULATE (
                SUM ( 'Table'[Metric B] ),
                'Table'[LastWorkdayOfMonth] = LastWorkday2
            )
        )
    

    4.Here's my final result, which I hope meets your requirements.

    Please find the attached pbix relevant to the case.

     

    Best Regards,

    Leroy Lu

    If this post helps, then please consider Accept it as the solution to help the other members find it more quickly.

5 Replies

  • Step 0: I use your data below.

     

    Step 1: I add a 'Month' column and a 'Flag' column.

        Month = MONTH([Date])

        Flag = IF([Date]=CALCULATE(MAX(DATA[Date]),ALLEXCEPT('DATA','DATA'[Month])),1,0)

     

    Step 2: I make a graph and set 'Flag' filter.

     

    • Anonymous's avatar
      Anonymous
      Not applicable

      Many thanks for the response mickey64. I dont want August to be on graph as August month is not yet complete. Also when user selects any date in August, it should only display till July Monthends. 

       

      With the formula, even the current last day (currently some day in August) is also getting flag as 1. 

       

      Is there a way to control this?

       

      Thanks

      • Anonymous's avatar
        Anonymous
        Not applicable

        Thanks for the reply from mickey64 , 3CloudThomas and andrezmar   , please allow me to provide another insight:

        Hi, Anonymous 

        Regarding the issue you raised, my solution is as follows:

        1.First I have created the following table and the column names and data are the data you have given:

        2.Create calculated column references:

        LastWorkdayOfMonth = 
        VAR LastDay = EOMONTH('Table'[Date], 0)
        VAR LastWorkday = 
            SWITCH(
                WEEKDAY(LastDay, 2),
                6, LastDay - 1,  
                7, LastDay - 2,  
                LastDay          
            )
        RETURN LastWorkday

        3. Below are the measure I've created for your needs:

        MEASURE A = 
        VAR LastDay1 =
            EOMONTH ( MAX ( 'Table (2)'[selcet] ), 0 )
        VAR LastDay2 =
            EOMONTH ( MAX ( 'Table (2)'[selcet] ), -1 )
        VAR LastWorkday1 =
            SWITCH ( WEEKDAY ( LastDay1, 2 ), 6, LastDay1 - 1, 7, LastDay1 - 2, LastDay1 )
        VAR LastWorkday2 =
            SWITCH ( WEEKDAY ( LastDay2, 2 ), 6, LastDay2 - 1, 7, LastDay2 - 2, LastDay2 )
        RETURN
            IF (
                MAX ( 'Table (2)'[selcet] ) = LastWorkday1,
                CALCULATE (
                    SUM ( 'Table'[Metric A] ),
                    'Table'[LastWorkdayOfMonth] = MAX ( 'Table (2)'[selcet] )
                ),
                CALCULATE (
                    SUM ( 'Table'[Metric A] ),
                    'Table'[LastWorkdayOfMonth] = LastWorkday2
                )
            )
        Measure B = 
        VAR LastDay1 =
            EOMONTH ( MAX ( 'Table (2)'[selcet] ), 0 )
        VAR LastDay2 =
            EOMONTH ( MAX ( 'Table (2)'[selcet] ), -1 )
        VAR LastWorkday1 =
            SWITCH ( WEEKDAY ( LastDay1, 2 ), 6, LastDay1 - 1, 7, LastDay1 - 2, LastDay1 )
        VAR LastWorkday2 =
            SWITCH ( WEEKDAY ( LastDay2, 2 ), 6, LastDay2 - 1, 7, LastDay2 - 2, LastDay2 )
        RETURN
            IF (
                MAX ( 'Table (2)'[selcet] ) = LastWorkday1,
                CALCULATE (
                    SUM ( 'Table'[Metric B] ),
                    'Table'[LastWorkdayOfMonth] = MAX ( 'Table (2)'[selcet] )
                ),
                CALCULATE (
                    SUM ( 'Table'[Metric B] ),
                    'Table'[LastWorkdayOfMonth] = LastWorkday2
                )
            )
        

        4.Here's my final result, which I hope meets your requirements.

        Please find the attached pbix relevant to the case.

         

        Best Regards,

        Leroy Lu

        If this post helps, then please consider Accept it as the solution to help the other members find it more quickly.

  • Anonymous's avatar
    Anonymous
    Not applicable

    Hola manalla. Es importante que la columna de fecha, tenga formato de fecha.

    Crear una columna nueva con la siguiente formula dax que te calcula el ultimo dia.

    Último Día del Mes = ENDOFMONTH('Fechas'[Fecha])

     

    Para la visualizacion, use la matriz. Al usar el campo Último Día del Mes, me totaliza por la jerarquia de fechas.

    Cambiar la jerarquia de fechas por Ultimo dia del mes.

     

    Si está satisfecho con esta respuesta, márquela como solución para que otros la encuentren.

     

  • Anonymous's avatar
    Anonymous
    Not applicable

    Have an indicator in the Date dimension for Last Working Day of Month. Filter the page or visual by this column = 1(true)