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

inserir no indicador de afastados os motivos de afastamento

Pessoal

boa tarde!

Preciso de ajuda...  tenho vários indicadores dentro de um mesmo script: Headcount, Afastamentos e etc ...

preciso colocar destro do indicador  de afastados o motivo do afastamento, tentei fazer  uma  dimensão com essa  informação, mas  não deu certo.

a dimensão é essa:

IF (R8_TIPO = '1', 'APOSENTADORIA INVALIDEZ',

    IF (R8_TIPO = 'F', 'FÉRIAS',

    IF (R8_TIPO = 'O', 'ACIDENTE TRABALHO',

    IF (R8_TIPO = 'P', 'AUXÍLIO DOENÇA',

    IF (R8_TIPO = 'Q', 'LICENÇA MATERNIDADE',

    IF (R8_TIPO = 'X', 'LICENÇA NÃO REMUNERADA',

    IF (R8_TIPO = 'Y', 'ENCARCERADO',

    IF (R8_TIPO = 'R', 'SERVIÇO MILITAR')))))))) AS [Desc. Afastamento]

*********************************************************************************************************************************************

TRACE *******************************************************;
TRACE Indicador Headcount de Funcionários;

Funcionarios:
LOAD
    Mid(FileBaseName(), 5, 2) &'|'& RA_FILIAL   AS %KeyEmpresa,
    RA_MAT &'|'& RA_FILIAL        AS %KeyFuncionario,
    DATE(Date#(RA_ADMISSA,'YYYYMMDD'),'DD/MM/YYYY') AS RA_ADMISSA,
    DATE(Date#(RA_DEMISSA,'YYYYMMDD'),'DD/MM/YYYY') AS RA_DEMISSA
FROM [lib://QVDs_RH/VSRA020_SENSERH.qvd] (qvd)

WHERE RA_FILIAL = '01';

LET vDataInicial = Num('$(vPeriodoInicioCarga)');
LET vDataFinal = Num(MonthStart(Today()));

//Mapeamento de AFASTAMENTOS (INÍCIO)
AfastamentosTemp:
LOAD Date($(vDataInicial) + RowNo() -1) AS DATA_AFASTAMENTO
AutoGenerate Today() - '1/1/1997' +1;

Left Join (AfastamentosTemp)
LOAD Distinct
    R8_MAT,
    R8_FILIAL,
    R8_TIPO,
        Date(Date#(R8_DATAINI, 'YYYYMMDD')) AS R8_DATAINI,
    If (R8_DATAFIM <=0, Today(), Date(Date#(R8_DATAFIM, 'YYYYMMDD'))) AS R8_DATAFIM
FROM
    [lib://QVDs_RH/VSR8020_SENSERH.qvd] (qvd);

MapAfastamentos:
Mapping
LOAD
    DATA_AFASTAMENTO &'|'& R8_MAT &'|'& R8_FILIAL,
    If (R8_TIPO = 'F', 'Férias', 'Afastado')

       
Resident
AfastamentosTemp
Where
DATA_AFASTAMENTO >= R8_DATAINI and
DATA_AFASTAMENTO <= R8_DATAFIM;

DROP Table AfastamentosTemp;
//Mapeamento de AFASTAMENTOS (FIM)


//Funções de exclusão para cálculo de Cota de Aprendiz
FuncoesExclusao:
LOAD "Cod. Funcao" AS CodFuncaoExcluido
FROM [lib://ExtData_RH/CadastrosManuais\Aprendiz\Funções Cota Aprendiz.xlsx] (ooxml, embedded labels, table is Plan2)
WHERE "Funções Direção" = 'X'
OR "Funções Nivel Tec / Sup" = 'X';

LooPeriodos:
LOAD Distinct MonthStart($(vDataInicial) + RowNo() -1) AS Periodos
AutoGenerate $(vDataFinal) - $(vDataInicial) +1;

FOR Each vPeriodo in FieldValueList('Periodos')

  //Headcount Funcionários
  Concatenate (Fato)
  LOAD *,
      If (Exists(CodFuncaoExcluido, ApplyMap('MapFuncaoHistoricoFuncionario', %KeyFuncionarioHistor, Null())), 0, 1) AS [Qtd Funcionários Base Cota Aprendiz];
  LOAD
      %KeyEmpresa,
      %KeyFuncionario,
     // ApplyMap('MapItemHistoricoFuncionario', Num('$(vPeriodo)') &'|'& %KeyFuncionario, ApplyMap('MapItemAtualFuncionario', %KeyFuncionario, '0000')) AS %KeyItem,
     // ApplyMap('MapCentroCustoHistoricoFuncionario', Num('$(vPeriodo)') &'|'& %KeyFuncionario, ApplyMap('MapCentroCustoAtualFuncionario', %KeyFuncionario, '0000')) AS %KeyCentroCusto,
      ApplyMap('MapAfastamentos', If (MonthName('$(vPeriodo)') = MonthName(Today()), Today(), MonthEnd('$(vPeriodo)')) &'|'& %KeyFuncionario, 'Não Afastado') AS [Tipo Afastamento],
   
     
     If ('$(vPeriodo)' < '$(vDataMinimaHistoricoFuncionario)',
      Date('$(vDataMinimaHistoricoFuncionario)', 'YYYYMM'), Date('$(vPeriodo)', 'YYYYMM')) &'|'& %KeyFuncionario AS %KeyFuncionarioHistor,
     
      '$(vPeriodo)' AS [Data Fato],
      '$(vPeriodo)', 'Afastados' AS [Flag Caged],
      'HEADCO'   AS %KeyIndicador,

      If (('$(vPeriodo)' - MonthStart(RA_ADMISSA) >= 90 and
     '$(vPeriodo)' - MonthStart(RA_ADMISSA) < 120), 'Sim') AS [Flag Sucesso Seleção],
      If (('$(vPeriodo)' - MonthStart(RA_ADMISSA) >= 120 and
          '$(vPeriodo)' - MonthStart(RA_ADMISSA) < 150), 'Sim') AS [Flag Sucesso Retenção],

      1    AS [Vlr Indicador 1]
  RESIDENT
      Funcionarios
  WHERE
      '$(vPeriodo)' >= MonthStart(RA_ADMISSA) and
      '$(vPeriodo)' <= iF (IsNull(RA_DEMISSA), Today(), AddMonths(RA_DEMISSA,-1));

NEXT

DROP Tables Funcionarios,LooPeriodos,FuncoesExclusao;

Labels (1)
6 Replies
Thiago_Justen_

Alessandra,

O que exatamente não deu certo?

Thiago Justen Teixeira Gonçalves
Farol BI
WhatsApp: 24 98152-1675
Skype: justen.thiago
alesantos
Contributor III
Contributor III
Author

quando coloco esses campos como dimensão, ele não me traz a informação correta, por  exemplo: se um funcionários de afastou varias vezes ele terá vario motivos de afastamento.

por isso acredito que se eu colocar  essa informação na tabela Fato, me trará exatamente o motivo do afastamento atual.

IF (R8_TIPO = '1', 'APOSENTADORIA INVALIDEZ',

    IF (R8_TIPO = 'F', 'FÉRIAS',

    IF (R8_TIPO = 'O', 'ACIDENTE TRABALHO',

    IF (R8_TIPO = 'P', 'AUXÍLIO DOENÇA',

    IF (R8_TIPO = 'Q', 'LICENÇA MATERNIDADE',

    IF (R8_TIPO = 'X', 'LICENÇA NÃO REMUNERADA',

    IF (R8_TIPO = 'Y', 'ENCARCERADO',

    IF (R8_TIPO = 'R', 'SERVIÇO MILITAR')))))))) AS [Desc. Afastamento]

JacksonAlfonso
Creator
Creator

Seria mais interessante criar um Mapping do script e carregar isso como um campo, ficaria mais performático e simples de trabalhar depois nos objetos.

Mapping

MapaTipo:

Load * Inline [

TIPO, DESC

1, APOSENTADORIA INVALIDEZ

F, Ferias

O, ACIDENTE ,,,,

];

JacksonAlfonso
Creator
Creator

complementando, depois para usar no script, vc faz assim:

ApplyMap('MapaTipo', R8_TIPO, 'N/D') As [Desc. Afastamento]


Thiago_Justen_

Desculpa, mas acho que o sono ainda está me atrapalhando a compreender bem teu problema.

Mas veja, se você quer por exemplo saber o motivo atual de afastamento dos funcionários talvez a função FirstSortedValue seja útil:

FirstSortedValue([Desc. Afastamento], -CAMPO_DATA)

O sinal de na frente do CAMPO_DATA fará a função apresentar o afastamento mais recente.

Abs e Sucesso!!

Thiago Justen Teixeira Gonçalves
Farol BI
WhatsApp: 24 98152-1675
Skype: justen.thiago
Thiago_Justen_

Conseguiu a resposta? Se sim, não esqueça de marcar a resposta como correta e assim fecharmos o tópico.

Na dúvida de como fazer isso veja o item 2.3 do Manual do usuário | Como criar e gerir minhas perguntas?

Thiago Justen Teixeira Gonçalves
Farol BI
WhatsApp: 24 98152-1675
Skype: justen.thiago