Skip to main content
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