Recursos humanos - Carga de arquivos na zitrhr145
+Documentação do código
O SAP se utiliza para pegar os dados envia-los para o excel, assim se consegue verificar todos os dados separados por linhas e colunas. Utilizando o excel é observado e verificado todos os arquivos para ver se todas as colunas estravam corretas. O Blob Storage apresentou a finalidade de ser uma camada de armazenamento de dados. Após a extração dos arquivos no diretório do Blob Storage, criou o desenvolvimento para leitura dos arquivos e gravação dos registros na tabela zitrhr145. O Pyspark foi usado para fazer toda a codificação do arquivo, pegando arquivo por arquivo e unindo-os para se tranformarem em uma tabela, definindo o nome e os datatypes das colunas.
Recursos necessários
Todos os recursos utilizados devem ser descritos para melhor entendimento e apoio do desenvolvimento do projeto. Segue abaixo a lista de todos os recursos usados:
Databricks: Desenvolvimento do script da tabela zitrhr145, para efetuar requisições de dados, modificações no tipo, de nome da coluna e construção do data frame. Para isso foi necessário o uso do cluster people-analytics-absenteismo.
Arquivos: Arquivo coletado do excel, usado para verificação de colunas e coleta de dados para armazenamento dentro do databricks.
Desenvolvimento da carga de arquivos
Instalação de bibliotecas
A instalação desta biblioteca, serve para trazer a possibilidade de ler dados do Excel. Com essa instalação se pode fazer leitura e gravação em arquivos excel.
pip install xlrd
pip install openpyxl
Importação de bibliotecas
Esta etapa é para a importação das bibliotecas que serão necessárias para fazer o desenvolvimento do script. As importações servem para acrescentar um módulo que será utilizado no código.
import os
import pandas as pd
from pyspark.sql.types import DoubleType, StringType, LongType, TimestampType, StructType, StructField
from pyspark.sql.functions import col
Leitura e agregação
O código a seguir está efetuando uma chamada nos arquivos do excel. Está sendo usado para obter a lista dos arquivos no diretório especificado. Posteriormente é definido e criado o dataframe. Este processo é repetido para cada arquivo listado. Com isso está sendo usado uma função para adicionar esses dados ao dataframe em python.
cwd = os.path.abspath('/dbfs/FileStore/recursos_humanos_gerencial_time_zitrhr145')
files = os.listdir(cwd)
df_python = pd.DataFrame()
for file in files:
if file.endswith('.xlsx'):
df_python= df_python.append(pd.read_excel(cwd+'/'+file), ignore_index=True)
Criação do Schema
O Schema é a estrutura do dataframe o qual está sendo selecionado coluna por coluna e colocando um datatype a ela.
Criação do data frame
Para a criação do dataframe foi utilizado o pyspark. Para isso foi feita a conversão do dataframe de python para pyspark, por conta que o formato da tablea zitrhr145 é delta.
Alterção de dado
Está selecionando as colunas da tabela. Converteu-se o tipo de dado, nesse caso para representar valores duplos, um inteiro grande.
Demonstração dos arquivos
Os arquivos extraidos para o blob storage foram estes:
Descrição das colunas
A descrição das colunas da tabela zitrhr145 é conforme abaixo:
Campos Origem SAP | Campos Extraídos | Data Types | Descrição do campo |
---|---|---|---|
MÊS | MES | DOUBLE | Período de análise - mês |
N° PESSOAL | PERNR | BIGINT | Nº pessoal |
NOME COMPLETO | CNAME | STRING | Nome completo |
EMPRESA | BUKRS | STRING | Empresa |
NOME DA FIRMA | BUKRS_D | STRING | Denominação da firma ou empresa |
ÁREA RECURSOS HUMANOS | WERKS | STRING | Área de recursos humanos |
DESCRIÇÃO COMPLETA ÁREA RH | WERKS_D | STRING | Descrição completa área de RH |
SUBÁREA REC.HUMANOS | BTRTL | STRING | Subárea de recursos humanos |
TXT.SUBÁREA REC.HUM. | BTRTL_D | STRING | Texto p/subárea de recursos humanos |
DIVISÃO | GSBER | STRING | Divisão |
DENOMINAÇÃO DA DIVISÃO | GSBER_D | STRING | Denominação da divisão |
GRUPO EMPREGADOS | PERSG | STRING | Grupo de empregados |
DENOM.GRP.EMPREG. | PERSG_D | STRING | Denominação grupos de empregados |
SUBGRUPO EMPREGADOS | PERSK | STRING | Subgrupo de empregados |
DENOM.SUBGRP.EMPRG | PERSK_D | STRING | Denominação subgrupo de empregados |
ÁREA PROC.FLHPAGTO | ABKRS | STRING | Área de processamento da folha de pagamento |
TXT.ÁREA PROCESS.FP | ABKRS_D | STRING | Texto área processamento da folha pagamento |
UNID.ORGANIZACIONAL | ORGEH | BIGINT | Unidade organizacional |
ABREVIAÇÃO UNID. ORG. SUPERIOR | ORGEH_A_SUP | STRING | Abreviação Unid. Org. Superior |
UNIDADEORGANIZ. | ORGEH_D | STRING | Denominação da unidade organizacional |
CHAVE DO CARGO | STELL | BIGINT | Cargo |
DENOMINAÇÃO DE CARGO | STELL_D | STRING | Denominação de cargo |
CENTRO DE CUSTO | KOSTL | STRING | Centro de custo |
DESCRIÇÃO CENTRO CUSTO | KOSTL_D | STRING | Descrição do centro de custo |
ESTADO CIVIL | FAMST | DOUBLE | Chave para estado civil |
ESTADO CIVIL | FAMST_D | STRING | Denominação do estado civil |
SEXO | GESCH | BIGINT | Chave do sexo |
DENOMINAÇÃO SEXO | GESCH_D | STRING | Denominação sexo |
DATA DE NASCIMENTO | GBDAT | TIMESTAMP | Data de nascimento |
IDADE | GBDAT_IDADE | BIGINT | Idade |
MATRÍCULA CHEFE | CHEFE_PERNR | BIGINT | Matricula Chefe |
NOME CHEFE | CHEFE_CNAME | STRING | Nome Chefe |
MATRÍCULA GERENTE | GERENTE_PERNR | BIGINT | Matricula Gerente |
NOME GERENTE | GERENTE_CNAME | STRING | Nome Gerente |
MATRÍCULA DIRETOR | DIRETOR_PERNR | BIGINT | Matricula Diretor |
NOME DIRETOR | DIRETOR_CNAME | STRING | Nome Diretor |
HORAS PREVISTAS | HRS_PREV | DOUBLE | Horas previstas |
FALTAS INJUSTIFICADAS | FALTAS_INJUST | DOUBLE | Faltas injustificadas |
FALTAS ABONADAS | FALTA_ABON | DOUBLE | Faltas abonadas |
FALTAS JUSTIFICADAS | FALTAS_JUST | DOUBLE | Faltas justificadas |
FALTAS LEGAIS | FALTAS_LEGAIS | DOUBLE | Faltas legais |
ATESTADOS | ATESTADOS | DOUBLE | Atestado |
AFASTAMENTOS | AFASTAMENTOS | DOUBLE | Afastamento |
FALTAS SEM AFASTAMENTOS | FALTAS_SEM_AFAST | DOUBLE | Faltas sem afastamento |
TOTAL DE FALTAS | TOT_FALTAS | DOUBLE | Total de faltas |
% FALTAS AFASTAMENTOS | PERC_FALTAS_AFAST | DOUBLE | % Faltas afastamento |
% FALTAS SEM AFASTAMENTOS | PERC_FALTAS_SEM_AFAST | DOUBLE | % Faltas sem afastamento |
% ABSENTEÍSMO GERAL | PERC_ABSENT_GERAL | DOUBLE | % Absenteísmo geral |
ARTIGO 59 | ARTIGO59 | BIGINT | ARTIGO 59 |
ARTIGO 66 | ARTIGO66 | BIGINT | ARTIGO 66 |
ARTIGO 67 | ARTIGO67 | BIGINT | ARTIGO 67 |
ARTIGO 77 | ARTIGO77 | BIGINT | ARTIGO 77 |
HE A DEFINIR | HE_A_DEFINIR | DOUBLE | HE a definir |
FALTAS A DEFINIR | FALTAS_A_DEFINIR | DOUBLE | Faltas a definir |
TOTAL HE REALIZADA | TOT_HE_REALIZADA | DOUBLE | Total HE realizada |
SALDO ANTERIOR BH | SLD_ANT_BH | DOUBLE | Saldo anterior BH |
SALDO ANTERIOR NEGATIVO | SLD_ANT_NEG | DOUBLE | Saldo anterior Negativo |
SALDO ANT.NEG.EMPR | SLD_ANT_NEG_EMPR | DOUBLE | Saldo Ant. Neg. Empr |
SALDO ANT.NEG.COVID-19 | SLD_ANT_NEG_COVID19 | DOUBLE | Saldo Ant. Neg. Covid 19 |
SALDO ANT. EMPREGADO | SLD_ANT_EMPREGADO | DOUBLE | Saldo Ant. Empregado |
BH CREDITO | BH_CREDITO | DOUBLE | BH Crédito |
BH DÉBITO EMPRESA | BH_DEBITO | DOUBLE | BH Débito |
BH DÉBITO COVID-19 | BH_DEB_COVID19 | DOUBLE | BH - Débito Covid 19 |
BH DÉBITO EMPREGADO | BH_DEB_EMPREGADO | DOUBLE | BH Débito Empregado |
BH MÊS | BH_MES | DOUBLE | BH mês |
BH ACUMULADO | BH_ACUM | DOUBLE | BH Acumulado |
BH ACUMULADO NEGATIVO | BH_ACUM_NEG | DOUBLE | BH Acumulado negativo |
BH NEGATIVO EMPRESA | BH_NEG_EMPR | DOUBLE | BH Negativo Empresa |
BH NEGATIVO COVID-19 | BH_NEG_COVID19 | DOUBLE | BH Negativo Covid 19 |
BH NEGATIVO EMPREGADO | BH_ANT_EMPREGADO | DOUBLE | BH Ant Empregado |
PAGAMENTO BH | PAGTO_BH | DOUBLE | Pagamento BH |
DESCONTO BH | DESC_BH | DOUBLE | Desconto BH |
PERDÃO DE SALDO NEGATIVO | PERDAO_SLD_NEG | DOUBLE | Perdão de Saldo Negativo |
HE PAGA FERIADO | HE_FERIADOS | DOUBLE | HE paga Feriado |
HORA EXTRA TRANSPORTE | HE_TRANSP | DOUBLE | Hora extra transporte |
HORA EXTRA INCÊNDIO | HE_INCEND | DOUBLE | Hora extra incêndio |
HE PAGA FERIADO TURNO | HE_FERIADOS_TURNO | DOUBLE | HE paga feriado Turno |
HE PAGA FOLGA | HE_FOLGAS | DOUBLE | HE paga Folga |
HE PAGA DIA NORMAL | HE_DIA_NORMAL | DOUBLE | HE paga dia normal |
TOTAL HE PAGA | HE_PAGAS | DOUBLE | Total HE paga |
HORAS TRABALHADAS | .OCORRENCIAS | BIGINT | Horas Trabalhadas |
SALDO PERDÃO BH COVID | SALDO_PERDAO_BH_COVID | DOUBLE | Qtde Ocorrências |
SALDO PERDÃO BH EMPRESA | SALDO_PERDAO_BH_EMPRESA | DOUBLE |
|
Gravação do código
Após a realização dos comandos é necessário salva-la. Salvar na tabela que queremos a informação. É feito o salvamento dos dados em apenas uma tabela só, e todos os arquivos estão juntos.
Notebook
Segue abaixo o notebook desenvolvido para esta demanda.