Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
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;
Alessandra,
O que exatamente não deu certo?
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]
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 ,,,,
];
complementando, depois para usar no script, vc faz assim:
ApplyMap('MapaTipo', R8_TIPO, 'N/D') As [Desc. Afastamento]
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!!
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?