Qlik Community

Qlik Brasil

Group community for Brazil users. discussion only in Portuguese.

Highlighted
thalitaqcapuano
New Contributor

Turn Over

Boa tarde,

Gostaria de uma ajuda...

Preciso da quantidade total que tinha de funcionários ativos no mês, pois o sistema só me da a quantidade atual na data de hoje.

Tenho como ajuda a data de admissão, e a data de demissão de funcionários, porem os ativos só me da na data atual e pra fazer o turn over preciso do historico... quantos tinham naquele determinado mês.

Alguem pode me ajudar??

Obrigada!!

Tags (1)
1 Solution

Accepted Solutions
jacyqlik
Visitor

Re: Turn Over

Você pode fazer de duas formas, criando os dados na base ou via set analise.

Segue script:

//Criação de Período para filtro

Periodo_Filtro_TMP:

LOAD * Inline [

Ano

1964

1971

1972

1973

1974

1976

1977

1978

1979

1980

1981

1982

1983

1984

1985

1986

1987

1988

1989

1990

1991

1992

1993

1994

1995

1996

1997

1998

1999

2000

2001

2002

2003

2004

2005

2006

2007

2008

2009

2010

2011

2012

2013

2014

2015

2016

2017

2018

2019

2020

2021

2022

2023

2024

2025

2025

2025

2025

2025

];

Join(Periodo_Filtro_TMP)

LOAD * Inline [

Mes

01

02

03

04

05

06

07

08

09

10

11

12

];

join(Periodo_Filtro_TMP)

load * Inline [

Dia

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28 

29

30

31

];

NoConcatenate

// >>>>>>> Criação de períodos para ativos

PERIODO:

load Distinct

MonthName(makedate(Ano,Mes,Dia)) AS dPERIODO_TURNOVER

Resident Periodo_Filtro_TMP

Where Ano<= Year(Today()) and MonthName(makedate(Ano,Mes,Dia)) <= MonthName(Today());

DROP Table Periodo_Filtro_TMP;

join (PERIODO)

LOAD

  %CHAVE_COLABORADOR,

  monthname(dDAT_ADMIS)    AS dPERIODO_ADMIS,

  monthname(dDAT_DEMIS)    AS dPERIODO_DEMIS,

  nSITUACAO_FUNC,

  cTIPO_CONTRATO

FROM $(vPathTransformados)tFuncionario.qvd (qvd)

Where (nSITUACAO_FUNC = 'Demitido' and  len(dDAT_DEMIS) > 0) or (nSITUACAO_FUNC <> 'Demitido');

NoConcatenate

PERIODOS_TURNOVER:

load

*

Resident PERIODO

where dPERIODO_TURNOVER >= dPERIODO_ADMIS  

AND (if(len(dPERIODO_DEMIS)= 0 ,dPERIODO_TURNOVER <= MonthName(Today()),dPERIODO_TURNOVER <=dPERIODO_DEMIS )); // >>>>>> Criando calendário apenas com ativos nos períodos

DROP Table PERIODO;

DROP Field dPERIODO_ADMIS, dPERIODO_DEMIS FROM PERIODOS_TURNOVER;

// >>>>>>> Incluindo Periodos de admissão

Left JOIN(PERIODOS_TURNOVER)

LOAD

%CHAVE_COLABORADOR,

  monthname(dDAT_ADMIS)      AS dPERIODO_TURNOVER,

    '1'      AS cFLAG_ADMISSAO

FROM $(vPathTransformados)tFuncionario.qvd (qvd);

// >>>>>>> Incluindo Periodos de Demissão 

Left JOIN(PERIODOS_TURNOVER)

LOAD

%CHAVE_COLABORADOR,

  monthname(dDAT_DEMIS)    AS dPERIODO_TURNOVER,

  '1' AS cFLAG_DEMISSAO

FROM $(vPathTransformados)tFuncionario.qvd  (qvd);

NoConcatenate

PERIODOS_TURNOVER_TMP:

LOAD

%CHAVE_COLABORADOR,

dPERIODO_TURNOVER,

     nSITUACAO_FUNC, 

     cFLAG_ADMISSAO,

     cTIPO_CONTRATO,

     cFLAG_DEMISSAO

Resident PERIODOS_TURNOVER;

DROP Table PERIODOS_TURNOVER;

Via set analisys você pode criar os períodos de analise em uma tabela separada e contar os funcionários em que a data de adm <= data_analise<= data demissão

Aguardo, eu resolvi meu problema usando o primeiro


4 Replies
jacyqlik
Visitor

Re: Turn Over

Você pode fazer de duas formas, criando os dados na base ou via set analise.

Segue script:

//Criação de Período para filtro

Periodo_Filtro_TMP:

LOAD * Inline [

Ano

1964

1971

1972

1973

1974

1976

1977

1978

1979

1980

1981

1982

1983

1984

1985

1986

1987

1988

1989

1990

1991

1992

1993

1994

1995

1996

1997

1998

1999

2000

2001

2002

2003

2004

2005

2006

2007

2008

2009

2010

2011

2012

2013

2014

2015

2016

2017

2018

2019

2020

2021

2022

2023

2024

2025

2025

2025

2025

2025

];

Join(Periodo_Filtro_TMP)

LOAD * Inline [

Mes

01

02

03

04

05

06

07

08

09

10

11

12

];

join(Periodo_Filtro_TMP)

load * Inline [

Dia

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28 

29

30

31

];

NoConcatenate

// >>>>>>> Criação de períodos para ativos

PERIODO:

load Distinct

MonthName(makedate(Ano,Mes,Dia)) AS dPERIODO_TURNOVER

Resident Periodo_Filtro_TMP

Where Ano<= Year(Today()) and MonthName(makedate(Ano,Mes,Dia)) <= MonthName(Today());

DROP Table Periodo_Filtro_TMP;

join (PERIODO)

LOAD

  %CHAVE_COLABORADOR,

  monthname(dDAT_ADMIS)    AS dPERIODO_ADMIS,

  monthname(dDAT_DEMIS)    AS dPERIODO_DEMIS,

  nSITUACAO_FUNC,

  cTIPO_CONTRATO

FROM $(vPathTransformados)tFuncionario.qvd (qvd)

Where (nSITUACAO_FUNC = 'Demitido' and  len(dDAT_DEMIS) > 0) or (nSITUACAO_FUNC <> 'Demitido');

NoConcatenate

PERIODOS_TURNOVER:

load

*

Resident PERIODO

where dPERIODO_TURNOVER >= dPERIODO_ADMIS  

AND (if(len(dPERIODO_DEMIS)= 0 ,dPERIODO_TURNOVER <= MonthName(Today()),dPERIODO_TURNOVER <=dPERIODO_DEMIS )); // >>>>>> Criando calendário apenas com ativos nos períodos

DROP Table PERIODO;

DROP Field dPERIODO_ADMIS, dPERIODO_DEMIS FROM PERIODOS_TURNOVER;

// >>>>>>> Incluindo Periodos de admissão

Left JOIN(PERIODOS_TURNOVER)

LOAD

%CHAVE_COLABORADOR,

  monthname(dDAT_ADMIS)      AS dPERIODO_TURNOVER,

    '1'      AS cFLAG_ADMISSAO

FROM $(vPathTransformados)tFuncionario.qvd (qvd);

// >>>>>>> Incluindo Periodos de Demissão 

Left JOIN(PERIODOS_TURNOVER)

LOAD

%CHAVE_COLABORADOR,

  monthname(dDAT_DEMIS)    AS dPERIODO_TURNOVER,

  '1' AS cFLAG_DEMISSAO

FROM $(vPathTransformados)tFuncionario.qvd  (qvd);

NoConcatenate

PERIODOS_TURNOVER_TMP:

LOAD

%CHAVE_COLABORADOR,

dPERIODO_TURNOVER,

     nSITUACAO_FUNC, 

     cFLAG_ADMISSAO,

     cTIPO_CONTRATO,

     cFLAG_DEMISSAO

Resident PERIODOS_TURNOVER;

DROP Table PERIODOS_TURNOVER;

Via set analisys você pode criar os períodos de analise em uma tabela separada e contar os funcionários em que a data de adm <= data_analise<= data demissão

Aguardo, eu resolvi meu problema usando o primeiro


srchagas
Contributor III

Re: Turn Over

MVP
MVP

Re: Turn Over

Thalita,

penso que a melhor saida seria usar o iterno() tendo a data de admissao e de demissao como intervalos (se nao tiver data de demissão seria o today()).

Assim, mes a mes vais ter quem estava ativo.

Segue um exemplo similar........

thalitaqcapuano
New Contributor

Re: Turn Over

Deu certo!!

Muito obrigada!!!!