Esta página tem como finalidade documentar o processo de coleta dos dados de planilhas presentes no Sharepoint.
A extração dos dados foi realizada utilizando linguagem de programação Python, com framework Spark em um Cluster Databrics da Dexco.
Este processo consome as APIs oficiais do Sharepoint via biblioteca escrita em Python.
Resumo do Processo
Baseado em configurações informadas ao job no momento de configuração, o coletor realiza as seguintes etapas:
Recupera secrets de chave USER e PASSWORD do escopo USER_DIEGO
Autentica no Sharepoint
Realiza o download da planilha em ambiente local do cluster
Transforma os dados da planilha e aba especificada durante a etapa de configuração do job em tabela Spark
Configuração do Job
Embaixo da chave tasks
do arquivo .json
de configuração de um agendamento de job do Databricks, utilize a seguinte estrutura, conforme utilizada na orquestração da extração da planilha Market Consensus.xlsx
:
{ ... "tasks": [ { "task_key": "coletor_market_consensus", "notebook_task": { "notebook_path": "/Repos/paulo.werneck-ext@dex.co/analytics-databricks-inteligencia-mercado/Workspace/bronze/inteligencia-mercado/coletor-excel-sharepoint", "base_parameters": { "database": "indicadores_mercado", "base_url": "https://duratexsa.sharepoint.com/sites/JornadaCrescimento", "schema": "{'data': 'date', 'ebitda_2022': 'smallint', 'ebitda_2023': 'smallint', 'ebitda_2024': 'smallint', 'ebitda_2025': 'smallint', 'ebitda_2026': 'smallint', 'ev_ebitda': 'float', 'media_5y': 'float', 'maior_1dp': 'float', 'menor_1dp': 'float'}", "remove_columns": "[]", "file": "/sites/JornadaCrescimento/Documentos Partilhados/Processar/Market Consensus/Market Consensus.xlsx", "sheet_name": "Consensus", "remove_lines": "[0, 1]", "table": "market_consensus" }, "source": "WORKSPACE" }, "existing_cluster_id": "0523-180911-cnxb45ry", "timeout_seconds": 0, "email_notifications": {} } ], ... }
OBS: É possível adicionar mais de uma task, de acordo com a necessidade.
Para cada Task de um job, os seguintes parâmetros serão necessários serem informados:
“base_url“ (String) : URL do Diretório base onde os arquivos Excel estão armazenados dentro do Sharepoint
“file“ (String) : Caminho dentro da pasta do Sharepoint onde o arquivo Excel que será coletado
“sheet_name“ (String) : Nome da Aba do Excel no Sharepoint que será aberto para realizar a extração
“remove_lines“ ( Lista de Inteiros -> [0,1] ) : Números das linhas que serão puladas/removidas da extração dos dados (inicia sempre em zero e incremental em 1 para várias linhas sendo separado por vírgula), informe [] para não remover nenhuma linha.
“remove_columns” ( Lista de String -> ['Col1', 'Col2'] ) : Nome das colunas que serão puladas/removidas da extração dos dados, , informe [] para não remover nenhuma coluna.
“schema“ (Dict de Key (String) e Value (String) -> { 'Col1' : 'date', 'Col2' : 'smallint' }) :
“database” (String) : Nome do Banco de dados a ser criado a tabela
“table” (String): Nome da Tabela no Banco de dados do parâmetro “database“ que será criado a tabela
Tabelas que serão ingeridas pelo Coletor Sharepoint:
Repositório: https://bitbucket.org/duratex/analytics-databricks-inteligencia-mercado/src/master/
Job: coletor_excel_sharepoint_bases_modelos_projecao
Task: coletor_demanda_deca
Nome do Parâmetro | Valor |
---|---|
base_url | https://duratexsa.sharepoint.com/sites/JornadaCrescimento |
file | /sites/JornadaCrescimento/Documentos Partilhados/Processar/Onda 3/Demanda Deca.xlsx |
sheet_name | Onda3 |
remove_lines | [0] |
remove_columns | [] |
schema | {'Data':'date','Metais_Basicos':'int','Metais_Competitivos':'int','Metais_Medio_Luxo':'int','Metais_Exportacao':'int','Loucas_Bacias_Competitivas':'int','Loucas_Bacias_Izy':'int','Loucas_Bacias_Medio_Luxo':'int','Loucas_Cubas':'int','Loucas_Outros':'int','Loucas_Exportacao':'int','Chuveiros_Duchas':'int','Chuveiros_Torneiras_Eletricas':'int','Chuveiros_Torneiras_Plasticas':'int','Chuveiros_Outros':'int','Chuveiros_Exportacao':'int'} |
database | bases_modelos_projecoes |
table | demanda_deca |
Metadados da Tabela de Destino em CSV:
Task: coletor_demanda_madeira
Nome do Parâmetro | Valor |
---|---|
base_url | https://duratexsa.sharepoint.com/sites/JornadaCrescimento |
file | /sites/JornadaCrescimento/Documentos Partilhados/Processar/Onda 3/Demanda Madeira.xlsx |
sheet_name | Onda3 |
remove_lines | [0] |
remove_columns | [] |
schema | {'Data':'date','MDP_Revestido':'int','MDP_Cru':'int','MDF_Revestido':'int','MDF_Cru':'int'} |
database | bases_modelos_projecoes |
table | demanda_madeira |
Metadados da Tabela de Destino em CSV:
Task: coletor_demanda_rc
Nome do Parâmetro | Valor |
---|---|
base_url | https://duratexsa.sharepoint.com/sites/JornadaCrescimento |
file | /sites/JornadaCrescimento/Documentos Partilhados/Processar/Onda 3/Demanda RC.xlsx |
sheet_name | Onda3 |
remove_lines | [0] |
remove_columns | [] |
schema | {'Data':'date','Porcelanato':'int'} |
database | bases_modelos_projecoes |
table | demanda_rc |
Metadados da Tabela de Destino em CSV:
Task: coletor_dias_de_estoque_deca
Nome do Parâmetro | Valor |
---|---|
base_url | https://duratexsa.sharepoint.com/sites/JornadaCrescimento |
file | /sites/JornadaCrescimento/Documentos Partilhados/Processar/Onda 3/Dias de Estoque Deca.xlsx |
sheet_name | Onda3 |
remove_lines | [0] |
remove_columns | [] |
schema | {'Data':'date','Hydra':'int','Loucas':'int','Metais':'int','RC':'int'} |
database | bases_modelos_projecoes |
table | dias_de_estoque_deca |
Metadados da Tabela de Destino em CSV:
Task: coletor_dias_de_estoque_madeira
Nome do Parâmetro | Valor |
---|---|
base_url | https://duratexsa.sharepoint.com/sites/JornadaCrescimento |
file | /sites/JornadaCrescimento/Documentos Partilhados/Processar/Onda 3/Dias de Estoque Madeira.xlsx |
sheet_name | Onda3 |
remove_lines | [0] |
remove_columns | [] |
schema | {'Data':'date','Industria_PA':'int','Industria_Chapas':'int','Varejo_Madeirado':'int','Varejo_Brancos':'int'} |
database | bases_modelos_projecoes |
table | dias_de_estoque_madeira |
Metadados da Tabela de Destino em CSV:
0 Comments