Forum Discussion

Shrujan1612's avatar
Shrujan1612
Helper I
1 year ago
Solved

Employee Headcount

Monthshort Fy yearHEADCOUNTCUMULATIVE HEADCOUNT
OCTFY202362696269
NOVFY2023631412583
DECFY2023636918952
JANFY2023645025402
FEBFY2023695932361
MARFY2023699739358
APRFY2023704946407
MAYFY2023710053507
JUNFY2023724060747
JULFY2023746668213
AUGFY2023754475757
SEPFY2023761383370

 

 

my expected result is column cumulative headcount. I have already created measure for Headcount column it is working fine. Can anyone help me how to achieve the cumulative headcount values based on date selection cumulative should start from last 12 months.

Headcount =

VAR seledate = MAX(Employee[EMP_HIRE_DT])

 

RETURN

    CALCULATE(

            DISTINCTCOUNT(Employee[EMPLOYEE_NUM]),

           FILTER(ALL(Employee), seledate >= Employee[EFFECTIVE_FROM_DT] &&

            seledate <= Employee[EFFECTIVE_TO_DT]

    ),

    CROSSFILTER('Time'[CALENDAR_DATE],Employee[EMP_HIRE_DT],None))

  • Shrujan1612 , Try using below measure

     

    CumulativeHeadcount =
    VAR MaxDate = MAX('Time'[CALENDAR_DATE])
    VAR MinDate = EDATE(MaxDate, -11) -- This will get the date 11 months before the MaxDate
    RETURN
    CALCULATE(
    SUM(Employee[Headcount]),
    FILTER(
    ALL('Time'),
    'Time'[CALENDAR_DATE] >= MinDate && 'Time'[CALENDAR_DATE] <= MaxDate
    )
    )

  • Anonymous's avatar
    Anonymous
    1 year ago

    Hi, Shrujan1612 

    Thanks for the reply from bhanu_gautam, please allow me to provide addition:

    Based on your information, I create sample tables:

    Employee table

    Table

     

    Since I didn't have accurate information about the people, I just summarized it into how many people there were in each month when I created the sample Employee table.

    Then create measures Headcount and cumulative headcount, try the following dax:

    HEADCOUNT = SUM('Empolyee'[EMPLOYEE])
    CUMULATIVE HEADCOUNT = 
    VAR MaxDate = MAX('Time'[CALENDAR_DATE])
    VAR MinDate = EDATE(MaxDate, -11) 
    RETURN
        CALCULATE(
            [HEADCOUNT],
            FILTER(
                ALL('Time'),
                'Time'[CALENDAR_DATE] >= MinDate &&
                'Time'[CALENDAR_DATE] <= MaxDate
            )
        )
    
    

     

    Create a table visual and put fields in table view, here is my preview:

     

    How to Get Your Question Answered Quickly

    Best Regards

    Yongkang Hua

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

4 Replies

  • Shrujan1612 , Try using below measure

     

    CumulativeHeadcount =
    VAR MaxDate = MAX('Time'[CALENDAR_DATE])
    VAR MinDate = EDATE(MaxDate, -11) -- This will get the date 11 months before the MaxDate
    RETURN
    CALCULATE(
    SUM(Employee[Headcount]),
    FILTER(
    ALL('Time'),
    'Time'[CALENDAR_DATE] >= MinDate && 'Time'[CALENDAR_DATE] <= MaxDate
    )
    )

      • bhanu_gautam's avatar
        bhanu_gautam
        Super User

        Shrujan1612 , try this then

         

        CumulativeHeadcount =
        VAR MaxDate = MAX('Time'[CALENDAR_DATE])
        VAR MinDate = EDATE(MaxDate, -12)
        RETURN
        CALCULATE(
        SUMX(
        FILTER(
        ALL('Time'),
        'Time'[CALENDAR_DATE] >= MinDate &&
        'Time'[CALENDAR_DATE] <= MaxDate
        ),
        [Headcount]
        )
        )

  • Anonymous's avatar
    Anonymous
    Not applicable

    Hi, Shrujan1612 

    Thanks for the reply from bhanu_gautam, please allow me to provide addition:

    Based on your information, I create sample tables:

    Employee table

    Table

     

    Since I didn't have accurate information about the people, I just summarized it into how many people there were in each month when I created the sample Employee table.

    Then create measures Headcount and cumulative headcount, try the following dax:

    HEADCOUNT = SUM('Empolyee'[EMPLOYEE])
    CUMULATIVE HEADCOUNT = 
    VAR MaxDate = MAX('Time'[CALENDAR_DATE])
    VAR MinDate = EDATE(MaxDate, -11) 
    RETURN
        CALCULATE(
            [HEADCOUNT],
            FILTER(
                ALL('Time'),
                'Time'[CALENDAR_DATE] >= MinDate &&
                'Time'[CALENDAR_DATE] <= MaxDate
            )
        )
    
    

     

    Create a table visual and put fields in table view, here is my preview:

     

    How to Get Your Question Answered Quickly

    Best Regards

    Yongkang Hua

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