Skip to main content
Announcements
Live today at 11 AM ET. Get your questions about Qlik Connect answered, or just listen in. SIGN UP NOW
cancel
Showing results for 
Search instead for 
Did you mean: 
Anonymous
Not applicable

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.

1 Solution

Accepted Solutions
fernando_tonial
Partner - Specialist
Partner - Specialist

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.

Don't Worry, be Qlik.

View solution in original post

9 Replies
fernando_tonial
Partner - Specialist
Partner - Specialist

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.

Don't Worry, be Qlik.
nicolett_yuri

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

Anonymous
Not applicable
Author

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
Partner - Specialist
Partner - Specialist

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.

Don't Worry, be Qlik.
Anonymous
Not applicable
Author

Perfeito Tonial ...

Muito Obrigado.

Valeu pela força Mestre Yuri Nicolett

Abs

EduardoAlexandredeFrancisco

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
Contributor III
Contributor III

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

Abçs!!!

pericles_silva
Contributor III
Contributor III

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
Partner - Specialist
Partner - Specialist

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.

Don't Worry, be Qlik.