Forum Discussion

swestendorp's avatar
swestendorp
Icon for Helper I rankHelper I
7 years ago
Solved

Calculate score for each day

Good day, 

 

I have two tables containing (1) employeeNo, appraisal date and expiry date of the appraisal and (2) a date table. I want to visualize the rolling score of how many employees have a valid appraisal (expiry date <= today) at a given date (visualized in a graph). There might be an easy solution, but I can't wrap my head around it. 

 

I tried something like this, but it returns an error because I used LASTDATE as a true/false expression in a table filter expression which is not allowed

 

Valid appraisals =

CALCULATE (

    COUNTROWS ( 'Annual appraisal table' ),

    'Annual appraisal table'[ExpiryDate] >= LASTDATE ( 'Date table'[Date] )

)

    / CALCULATE (

        COUNTROWS ( 'Annual appraisal table' ),

        LASTDATE ( 'Date table'[Date] )

    )

 

I guess there needs to be some kind of relationship between this table and the date table? I am not sure which colums to link. 

 

As an example, looking at below table, today I'd have 2 valid appraisals against a total of 6 appraisals = a 33% score, whereas in September I'd have had 3 valid appraisal = a 50% score. Null should count as expired. 

 

EmployeeNoAppraisal dateExpiry date
aaa7-7-20187-7-2019
bbb28-9-201528-9-2016
ccc19-9-201719-9-2018
dddnullnull
eee23-10-201723-10-2018
fff29-12-201729-12-2018

 

Pleased to hear how you think I should solve this. Thanks a lot in advance!

  • AlB's avatar
    AlB
    7 years ago

    Hi swestendorp

    If I understand correctly, what you want is:

    Number of appraisals that took place (started) in the past AND will expire in the future

    divided by

    Number of appraisals that took place (started) in the past

     

    with the date determining the frontier between past and future LASTDATE (period selected). If this is correct, then:

     

    1. Create a relationship between 'Date'[Date] and 'Annual appraisal table'[Appraisal Date]

    2. Create a measure like the one below.

    3. Set the columns you're interested in from 'Date' (probably the months) on the rows of a matrix and use the measure

     

    Note: I have not tested it as i do not have your sample data but see if this can help. Attaching a sample data model on top of any pictures when explaining what your issue is makes things easier for people trying to help.

     

     

    DIVIDE (
        COUNTROWS (
            FILTER (
                CALCULATETABLE (
                    'Annual appraisal table',
                    FILTER ( ALL ( 'Date' ), 'Date'[Date] <= MAX ( 'Date'[Date] ) )
                ),
                'Annual appraisal table'[ExpiryDate] >= MAX ( 'Date table'[Date] )
            )
        ),
        COUNTROWS (
            CALCULATETABLE (
                'Annual appraisal table',
                FILTER ( ALL ( 'Date' ), 'Date'[Date] <= MAX ( 'Date'[Date] ) )
            )
        )
    )

     

     

13 Replies

  • Greg_Deckler's avatar
    Greg_Deckler
    Icon for Community Champion rankCommunity Champion

    From the data you provided, wouldn't there be 3? bbb, ccc and eee?

    • swestendorp's avatar
      swestendorp
      Icon for Helper I rankHelper I

      Yes, you are right, my bad. I was thinking of the last day of September, which then another one would have expired. Been Power BI'ing all day, not very sharp anymore! 

       

      Apart from that detail, was my question clear enough? Was a bit struggling with how to put in words :)

      Thanks for your help!

      • AlB's avatar
        AlB
        Icon for Community Champion rankCommunity Champion

        Hi swestendorp

        If I understand correctly, what you want is:

        Number of appraisals that took place (started) in the past AND will expire in the future

        divided by

        Number of appraisals that took place (started) in the past

         

        with the date determining the frontier between past and future LASTDATE (period selected). If this is correct, then:

         

        1. Create a relationship between 'Date'[Date] and 'Annual appraisal table'[Appraisal Date]

        2. Create a measure like the one below.

        3. Set the columns you're interested in from 'Date' (probably the months) on the rows of a matrix and use the measure

         

        Note: I have not tested it as i do not have your sample data but see if this can help. Attaching a sample data model on top of any pictures when explaining what your issue is makes things easier for people trying to help.

         

         

        DIVIDE (
            COUNTROWS (
                FILTER (
                    CALCULATETABLE (
                        'Annual appraisal table',
                        FILTER ( ALL ( 'Date' ), 'Date'[Date] <= MAX ( 'Date'[Date] ) )
                    ),
                    'Annual appraisal table'[ExpiryDate] >= MAX ( 'Date table'[Date] )
                )
            ),
            COUNTROWS (
                CALCULATETABLE (
                    'Annual appraisal table',
                    FILTER ( ALL ( 'Date' ), 'Date'[Date] <= MAX ( 'Date'[Date] ) )
                )
            )
        )