Qlik Community

Qlik Brasil

Group community for Brazil users. discussion only in Portuguese.

Highlighted
egnaldo_sousa
Contributor II

Quantidade de Funcionários por mês

Olá Amigos,

Poderiam me ajudar com este ponto:

Tenho uma tabela com o nome dos funcionários, data de admissão e demissão.

Preciso apresentar um gráfico com a quantidade de funcionários por mês.

Qual seria a foma mais inteligente de fazer isso?

Anexo um exemplo.

Abs.

Tags (1)
1 Solution

Accepted Solutions
fernando_tonial
Valued Contributor

Re: Quantidade de Funcionários por mês

Olá, veja se assim lhe ajuda.

Funcionarios:

LOAD * INLINE [

    Funcionário, Admissão, Demissão

    Egnaldo, 05/11/2013, 05/02/2014

    Yuri, 05/10/2013,

    Aderlon, 05/09/2013,

    Clever, 05/08/2013, 05/03/2014

    Pablo, 05/07/2013,

    Tonial, 05/06/2013,

    Kaauan, 05/05/2014,

];

DATA_TMP:

LOAD Distinct Admissão as DATA_TMP Resident Funcionarios;

LOAD Distinct Demissão as DATA_TMP Resident Funcionarios;

MaxMin:

LOAD

    Max(DATA_TMP) as MaxData,

    Min(DATA_TMP) as MinData

Resident DATA_TMP;

LET vMaxData = Peek('MaxData');

LET vMinData = Peek('MinData');

DROP Table DATA_TMP, MaxMin;

TMP_Calendario:

LOAD

    Date(MonthStart('$(vMinData)')+(RowNo()-1)) AS Data

Autogenerate(Date('$(vMaxData)')-Date('$(vMinData)'));

Funcionarios2:

LEFT JOIN (Funcionarios)

IntervalMatch (Data) LOAD Admissão, Demissão RESIDENT Funcionarios;

Dados:

LEFT JOIN (TMP_Calendario)

LOAD DISTINCT Funcionário, Admissão, Demissão, Data RESIDENT Funcionarios;

DROP TABLE Funcionarios;

RENAME Table TMP_Calendario to Funcionarios;

Abraços.

Tonial.

9 Replies
fernando_tonial
Valued Contributor

Re: Quantidade de Funcionários por mês

Olá, veja se assim lhe ajuda.

Funcionarios:

LOAD * INLINE [

    Funcionário, Admissão, Demissão

    Egnaldo, 05/11/2013, 05/02/2014

    Yuri, 05/10/2013,

    Aderlon, 05/09/2013,

    Clever, 05/08/2013, 05/03/2014

    Pablo, 05/07/2013,

    Tonial, 05/06/2013,

    Kaauan, 05/05/2014,

];

DATA_TMP:

LOAD Distinct Admissão as DATA_TMP Resident Funcionarios;

LOAD Distinct Demissão as DATA_TMP Resident Funcionarios;

MaxMin:

LOAD

    Max(DATA_TMP) as MaxData,

    Min(DATA_TMP) as MinData

Resident DATA_TMP;

LET vMaxData = Peek('MaxData');

LET vMinData = Peek('MinData');

DROP Table DATA_TMP, MaxMin;

TMP_Calendario:

LOAD

    Date(MonthStart('$(vMinData)')+(RowNo()-1)) AS Data

Autogenerate(Date('$(vMaxData)')-Date('$(vMinData)'));

Funcionarios2:

LEFT JOIN (Funcionarios)

IntervalMatch (Data) LOAD Admissão, Demissão RESIDENT Funcionarios;

Dados:

LEFT JOIN (TMP_Calendario)

LOAD DISTINCT Funcionário, Admissão, Demissão, Data RESIDENT Funcionarios;

DROP TABLE Funcionarios;

RENAME Table TMP_Calendario to Funcionarios;

Abraços.

Tonial.

Re: Quantidade de Funcionários por mês

Eu faria da mesma forma que o Fernando Tonial, mas colocaria apenas 1 linha por mês

egnaldo_sousa
Contributor II

Re: Quantidade de Funcionários por mês

Fernando, Obrigado até o momento.

Deu quase tudo certo, com uma pequena exceção, quando efetuo a recarga não é importado o Kaauan que no exemplo foi admitido em 2014.

Consegue me ajudar com este GAP?

Abs.

fernando_tonial
Valued Contributor

Re: Quantidade de Funcionários por mês

Retira a função MonthStart() desse load e adiciona a soma + 1.

TMP_Calendario:

LOAD 

Date(MonthStart('$(vMinData)')+(RowNo()-1)) AS Data

Autogenerate(Date('$(vMaxData)')-Date('$(vMinData)'));

ficando assim:

TMP_Calendario:

LOAD 

Date(('$(vMinData)')+(RowNo()-1)) AS Data

Autogenerate(Date('$(vMaxData)')-Date('$(vMinData)')+1);

Abraços.

Tonial.

egnaldo_sousa
Contributor II

Re: Quantidade de Funcionários por mês

Perfeito Tonial ...

Muito Obrigado.

Valeu pela força Mestre Yuri Nicolett

Abs

dubucha2012
Contributor

Re: Quantidade de Funcionários por mês

Mais um código perfeito.

Porém no meu (não sei se é alguma falha minha) o campo de demissão estava NULL ou preenchido. Com isso, os funcionários que não foram demitidos não estavam aparecendo na lista.

Com essa alteração, ficou correto.

Antes:

TURNOVER_TEMP:

LOAD Distinct

  COLABORADOR_KEY

  , RA_ADMISSA AS Admissão

  , RA_DEMISSA AS Demissão 

FROM $(vDiretorioRH)Carga_T\CADASTRO_DE_FUNCIONARIOS_E_AUTONOMOS.QVD (QVD)

Depois

TURNOVER_TEMP:

LOAD Distinct

  COLABORADOR_KEY

  , RA_ADMISSA AS Admissão

, IF(ISNULL(RA_DEMISSA)='-1','',RA_DEMISSA) AS Demissão

FROM $(vDiretorioRH)Carga_T\CADASTRO_DE_FUNCIONARIOS_E_AUTONOMOS.QVD (QVD)

** o campo é tratada da seguinte forma para alimentar o  CADASTRO_DE_FUNCIONARIOS_E_AUTONOMOS.QVD :

if(Trim(RA_DEMISSA) = '', null(), Date(Date#(RA_DEMISSA, 'YYYYMMDD'),'DD/MM/YYYY'))
pericles_silva
New Contributor III

Re: Quantidade de Funcionários por mês

Exatamente. Quando o campo DEMISSAO está em branco, funciona o IntervalMatch, agora se ele estiver NULL, não funciona.

Abçs!!!

pericles_silva
New Contributor III

Re: Quantidade de Funcionários por mês

E era essa a forma que eu precisava: mensal.

Ficaria assim:

Funcionarios:

LOAD *,

     MonthName(Admissão) as Admissão_mes,

     If(Len(Trim(Demissão))=0, '', MonthName(Demissão)) as Demissão_mes;

LOAD * INLINE [ 

    Funcionário, Admissão, Demissão 

    Egnaldo, 05/11/2013, 05/02/2014 

    Yuri, 05/10/2013,  

    Aderlon, 05/09/2013,  

    Clever, 05/08/2013, 05/03/2014 

    Pablo, 05/07/2013,  

    Tonial, 05/06/2013,  

    Kaauan, 05/05/2014,  

];

 

DATA_TMP: 

LOAD Distinct Admissão_mes as DATA_TMP Resident Funcionarios; 

LOAD Distinct Demissão_mes as DATA_TMP Resident Funcionarios; 

MaxMin: 

LOAD  

     Min(DATA_TMP) as MinData,

     Max(DATA_TMP) as MaxData

Resident DATA_TMP; 

LET vMaxData = Peek('MaxData'); 

LET vMinData = Peek('MinData'); 

DROP Table DATA_TMP, MaxMin;

TMP_Calendario: 

LOAD Distinct

    MonthStart('$(vMinData)'+(RowNo()-1)) AS Data 

Autogenerate(Date('$(vMaxData)')-Date('$(vMinData)')+1);

Left Join (Funcionarios)

IntervalMatch(Data) Load [Admissão_mes], [Demissão_mes] Resident Funcionarios;

Drop Table TMP_Calendario;

[Quantidade Funcionários Mensais]:

Load

     Data,

     Count(Funcionário) as Qtd

Resident Funcionarios

Group By Data;

         

Att,

Péricles.

fernando_tonial
Valued Contributor

Re: Quantidade de Funcionários por mês

Muito bom Péricles,

Só recomendo preencher o valor da demissão com o valor do mês atual. Isso eu mesmo não fiz no primeiro código, no qual eu deveria ter feito.

Don't worry, be Qlik.

Tonial.