Página 1 de 1

Calcular HEADCOUNT, baseado em um range de data

Enviado: 22 Jan 2019 11:49
por jrcoutinho
Ola,

Recebo mensalmente um arquivo do meu prestador de folha, o qual adiciono sempre a minha base de dados do powerBI. Esta tabela esta relacionada com a tabela calendário.

Estou tentando criar uma medida que calcule o numero de headcount baseado em alguns critérios.

Criei a seguinte DAX:
Código: Selecionar todos
HC - Headcount = IF (
    [Data Date] >= MIN ( 'Calendar'[Date] ),
    CALCULATE (
        DISTINCTCOUNT ( 'Payroll'[Payroll nb] ),
        FILTER (
            'Payroll',
            COUNTROWS (
                FILTER (
                    RELATEDTABLE ( Payroll),
                    'Payroll'[Most Recent Hire Date] <= MAX ( Calendar[Date] )
                        && (
                            ISBLANK ( 'Payroll'[Administrative End Date]) 
                                || 'Payroll'[Administrative End Date] >= MAX ( Calendar[Date] )
                        )
                   )
            )
                > 0
        )
    )
)
Quando tenho no Slicer ANO e MES selecionado tenho o retorno correto do numero de headcount, entretanto quando tenho o slicer ANO selecionado e o slicer MES esta em branco/Tudo, o que tenho de total 566 e o resultado que queria fosse a media do ano por 530.

alguem sabe onde estou errando ?

Re: Calcular HEADCOUNT, baseado em um range de data  [Resolvido]

Enviado: 23 Jan 2019 10:04
por jrcoutinho
Pensei um pouco mais e otimizei a formula:

Criei um measure para retornar o mês selecionado no filtro, caso não selecionado retornar o ultimo mês da base de dados:
Código: Selecionar todos
Month_LastPayroll = IF( HASONEFILTER('Calendar'[Month]), [Month_selected], MONTH(LASTDATE(Payroll[Reference])))
E otimizei a formula para calcular o headcount e dividindo pelo measure acima :
Código: Selecionar todos
HC_BY_YEAR = SUMX (
    VALUES ( 'Calendar'[Month] ),
    CALCULATE (
        COUNTROWS (
            FILTER (
                Payroll,
                ( Payroll[Payroll nb] <> 376 )
                    && ( Payroll[Payroll nb] <> 377 )
                    && ( Payroll[Payroll nb] <> 445 ) //exclude 3 specifics employees Expat
                    && 'Payroll'[Most Recent Hire Date] <= MAX ( Calendar[Date] )
                    && (
                        ISBLANK ( 'Payroll'[Administrative End Date] )
                            || 'Payroll'[Administrative End Date] >= MAX ( Calendar[Date] )
                    )
            )
        )
    )
)/[Month_LastPayroll]