Coletor Sharepoint - Bases Modelos Projeção
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
Databricks:
Relação de Jobs x Notebooks que compõem o processo:
Databricks job: coletor_excel_sharepoint_bases_modelos_projecao
Task | Parâmetros | Periodicidade | Notebook | Repositório |
---|---|---|---|---|
coletor_demanda_deca | {
"database": "bases_modelos_projecoes",
"base_url": "https://duratexsa.sharepoint.com/sites/JornadaCrescimento",
"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'}",
"remove_columns": "[]",
"file": "/sites/JornadaCrescimento/Documentos Partilhados/Processar/Onda 3/Demanda Deca.xlsx",
"sheet_name": "Onda3",
"remove_lines": "[0]",
"table": "demanda_deca"
} | Diário (13 0 1 ? * *) | /analytics-databricks-inteligencia-mercado/Workspace/bronze/inteligencia-mercado/coletor-excel-sharepoint | https://bitbucket.org/duratex/analytics-databricks-inteligencia-mercado/src/master/ |
coletor_demanda_rc | {
"database": "bases_modelos_projecoes",
"base_url": "https://duratexsa.sharepoint.com/sites/JornadaCrescimento",
"schema": "{'Data':'date','Porcelanato':'int'}",
"remove_columns": "[]",
"file": "/sites/JornadaCrescimento/Documentos Partilhados/Processar/Onda 3/Demanda RC.xlsx",
"sheet_name": "Onda3",
"remove_lines": "[0]",
"table": "demanda_rc"
} | Diário (13 0 1 ? * *) | /analytics-databricks-inteligencia-mercado/Workspace/bronze/inteligencia-mercado/coletor-excel-sharepoint | https://bitbucket.org/duratex/analytics-databricks-inteligencia-mercado/src/master/ |
coletor_demanda_deca_anual | Diário (13 0 1 ? * *) | /analytics-databricks-inteligencia-mercado/Workspace/bronze/inteligencia-mercado/coletor-excel-sharepoint | https://bitbucket.org/duratex/analytics-databricks-inteligencia-mercado/src/master/ | |
coletor_projecoes_longo_prazo | Diário (13 0 1 ? * *) | /analytics-databricks-inteligencia-mercado/Workspace/bronze/inteligencia-mercado/coletor-excel-sharepoint | https://bitbucket.org/duratex/analytics-databricks-inteligencia-mercado/src/master/ |
Tabelas referentes ao job: coletor_excel_sharepoint_bases_modelos_projecao
bases_modelos_projecoes.demanda_deca | ||||||||
---|---|---|---|---|---|---|---|---|
Field | Key | Not Null | Partition | Element | Type | Size | Decimal | Description |
Data | Não | Não | Não |
| date |
|
|
|
Metais_Basicos | Não | Não | Não |
| int |
|
|
|
Metais_Competitivos | Não | Não | Não |
| int |
|
|
|
Metais_Medio_Luxo | Não | Não | Não |
| int |
|
|
|
Metais_Exportacao | Não | Não | Não |
| int |
|
|
|
Loucas_Bacias_Competitivas | Não | Não | Não |
| int |
|
|
|
Loucas_Bacias_Izy | Não | Não | Não |
| int |
|
|
|
Loucas_Bacias_Medio_Luxo | Não | Não | Não |
| int |
|
|
|
Loucas_Cubas | Não | Não | Não |
| int |
|
|
|
Loucas_Outros | Não | Não | Não |
| int |
|
|
|
Loucas_Exportacao | Não | Não | Não |
| int |
|
|
|
Chuveiros_Duchas | Não | Não | Não |
| int |
|
|
|
Chuveiros_Torneiras_Eletricas | Não | Não | Não |
| int |
|
|
|
Chuveiros_Torneiras_Plasticas | Não | Não | Não |
| int |
|
|
|
Chuveiros_Outros | Não | Não | Não |
| int |
|
|
|
Chuveiros_Exportacao | Não | Não | Não |
| int |
|
|
|
bases_modelos_projecoes.demanda_rc | ||||||||
---|---|---|---|---|---|---|---|---|
Field | Key | Not Null | Partition | Element | Type | Size | Decimal | Description |
Data | Não | Não | Não |
| date |
|
|
|
Porcelanato | Não | Não | Não |
| int |
|
|
|
bases_modelos_projecoes.coletor_demanda_deca_anual | ||||||||
---|---|---|---|---|---|---|---|---|
Field | Key | Not Null | Partition | Element | Type | Size | Decimal | Description |
data | Não | Não | Não |
| string |
|
|
|
Metais_MI_Total | Não | Não | Não |
| float |
|
|
|
Loucas_MI_Total | Não | Não | Não |
| float |
|
|
|
bases_modelos_projecoes.projecoes_longo_prazo | ||||||||
---|---|---|---|---|---|---|---|---|
Field | Key | Not Null | Partition | Element | Type | Size | Decimal | Description |
indice | Não | Não | Não |
| string |
|
|
|
2009 | Não | Não | Não |
| double |
|
|
|
2010 | Não | Não | Não |
| double |
|
|
|
2011 | Não | Não | Não |
| double |
|
|
|
2012 | Não | Não | Não |
| double |
|
|
|
2013 | Não | Não | Não |
| double |
|
|
|
2014 | Não | Não | Não |
| double |
|
|
|
2015 | Não | Não | Não |
| double |
|
|
|
2016 | Não | Não | Não |
| double |
|
|
|
2017 | Não | Não | Não |
| double |
|
|
|
2018 | Não | Não | Não |
| double |
|
|
|
2019 | Não | Não | Não |
| double |
|
|
|
2020 | Não | Não | Não |
| double |
|
|
|
2021 | Não | Não | Não |
| double |
|
|
|
2022 | Não | Não | Não |
| double |
|
|
|
2023 | Não | Não | Não |
| double |
|
|
|
2024 | Não | Não | Não |
| double |
|
|
|
2025 | Não | Não | Não |
| double |
|
|
|
2026 | Não | Não | Não |
| double |
|
|
|
2027 | Não | Não | Não |
| double |
|
|
|