Forum Discussion

Lalit_101's avatar
Lalit_101
Regular Visitor
3 years ago
Solved

employee master and transfer data

Hi

I have to crack i more logic i have two table like below

1. Live employee Master table

empcodeBUfunction
E100AGRIHR
E101ECER&D
E102AGRIFin
E103AGRIHR

 

2. Transfer table

empcodeAttributeTypeDescriptionNewAttributeDescOLDAttributeDescEffectiveDate
E100BUAGRIECE01-Apr-22
E101FunctionR&DFin5-May-22

 

i have already created calender table

need to create data like if slicer ( BU is AGRI and Fun is HR) 

Monthheadcount
feb-221
mar-221
apr-222
may-222
june-222
and so on2

 

if slicer  (BU is ECE and Fun is R&D)

Monthheadcount
feb-220
mar-220
apr-220
may-221
june-221
and so on1

 

pls help

  • Hi Lalit_101 ,

     

    Please follow these steps:

    (1) Create a new Table

    Table = 
    SELECTCOLUMNS (
        'Transfer',
        "empcode", [empcode],
        "EffectiveDate", [EffectiveDate],
        "BU",
            IF (
                CALCULATE (
                    DISTINCTCOUNT ( 'Transfer'[AttributeTypeDescription] ),
                    FILTER (
                        ALLEXCEPT ( 'Transfer', 'Transfer'[empcode] ),
                        [AttributeTypeDescription] = "BU"
                    )
                ) > 0,
                IF ( [AttributeTypeDescription] = "BU", [OLDAttributeDesc] ),
                CALCULATE (
                    MAX ( 'Live employee'[BU] ),
                    FILTER ( 'Live employee', [empcode] = EARLIER ( 'Transfer'[empcode] ) )
                )
            ),
        "Funtion",
            IF (
                CALCULATE (
                    DISTINCTCOUNT ( 'Transfer'[AttributeTypeDescription] ),
                    FILTER (
                        ALLEXCEPT ( 'Transfer', 'Transfer'[empcode] ),
                        [AttributeTypeDescription] = "Function"
                    )
                ) > 0,
                IF ( [AttributeTypeDescription] = "Function", [OLDAttributeDesc] ),
                CALCULATE (
                    MAX ( 'Live employee'[function] ),
                    FILTER ( 'Live employee', [empcode] = EARLIER ( 'Transfer'[empcode] ) )
                )
            )
    )
    

    (2) Create a new measure

    headcount = 
    CALCULATE (
        COUNT ( 'Live employee'[empcode] ),
        FILTER (
            'Live employee',
            RELATED ( 'Transfer'[EffectiveDate] ) = BLANK ()
                || EOMONTH ( RELATED ( Transfer[EffectiveDate] ), 0 )
                    <= EOMONTH ( MIN ( 'calender'[Date] ), 0 )
        )
    )
        + CALCULATE (
            COUNT ( 'Table'[empcode] ),
            FILTER (
                'Table',
                EOMONTH ( [EffectiveDate], 0 ) > EOMONTH ( MAX ( 'calender'[Date] ), 0 )
                    && [Funtion]
                        IN VALUES ( 'Live employee'[function] )
                            && [BU] IN VALUES ( 'Live employee'[BU] )
            )
        )
    
    

    (3)Final output

     

     

     

    Best Regards,

    Gallen Luo

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

1 Reply

  • v-jialluo-msft's avatar
    v-jialluo-msft
    Icon for Community Support rankCommunity Support

    Hi Lalit_101 ,

     

    Please follow these steps:

    (1) Create a new Table

    Table = 
    SELECTCOLUMNS (
        'Transfer',
        "empcode", [empcode],
        "EffectiveDate", [EffectiveDate],
        "BU",
            IF (
                CALCULATE (
                    DISTINCTCOUNT ( 'Transfer'[AttributeTypeDescription] ),
                    FILTER (
                        ALLEXCEPT ( 'Transfer', 'Transfer'[empcode] ),
                        [AttributeTypeDescription] = "BU"
                    )
                ) > 0,
                IF ( [AttributeTypeDescription] = "BU", [OLDAttributeDesc] ),
                CALCULATE (
                    MAX ( 'Live employee'[BU] ),
                    FILTER ( 'Live employee', [empcode] = EARLIER ( 'Transfer'[empcode] ) )
                )
            ),
        "Funtion",
            IF (
                CALCULATE (
                    DISTINCTCOUNT ( 'Transfer'[AttributeTypeDescription] ),
                    FILTER (
                        ALLEXCEPT ( 'Transfer', 'Transfer'[empcode] ),
                        [AttributeTypeDescription] = "Function"
                    )
                ) > 0,
                IF ( [AttributeTypeDescription] = "Function", [OLDAttributeDesc] ),
                CALCULATE (
                    MAX ( 'Live employee'[function] ),
                    FILTER ( 'Live employee', [empcode] = EARLIER ( 'Transfer'[empcode] ) )
                )
            )
    )
    

    (2) Create a new measure

    headcount = 
    CALCULATE (
        COUNT ( 'Live employee'[empcode] ),
        FILTER (
            'Live employee',
            RELATED ( 'Transfer'[EffectiveDate] ) = BLANK ()
                || EOMONTH ( RELATED ( Transfer[EffectiveDate] ), 0 )
                    <= EOMONTH ( MIN ( 'calender'[Date] ), 0 )
        )
    )
        + CALCULATE (
            COUNT ( 'Table'[empcode] ),
            FILTER (
                'Table',
                EOMONTH ( [EffectiveDate], 0 ) > EOMONTH ( MAX ( 'calender'[Date] ), 0 )
                    && [Funtion]
                        IN VALUES ( 'Live employee'[function] )
                            && [BU] IN VALUES ( 'Live employee'[BU] )
            )
        )
    
    

    (3)Final output

     

     

     

    Best Regards,

    Gallen Luo

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