{"id":20463339,"url":"https://github.com/fflch/etl","last_synced_at":"2025-04-13T08:11:26.222Z","repository":{"id":111584043,"uuid":"570620109","full_name":"fflch/etl","owner":"fflch","description":null,"archived":false,"fork":false,"pushed_at":"2024-09-02T11:06:45.000Z","size":434,"stargazers_count":0,"open_issues_count":0,"forks_count":4,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-03-27T00:05:08.741Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"PHP","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/fflch.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null}},"created_at":"2022-11-25T16:29:18.000Z","updated_at":"2024-09-02T11:06:49.000Z","dependencies_parsed_at":null,"dependency_job_id":"f8d2b2c6-5abd-4f71-a760-de44a75f9cb3","html_url":"https://github.com/fflch/etl","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fflch%2Fetl","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fflch%2Fetl/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fflch%2Fetl/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fflch%2Fetl/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/fflch","download_url":"https://codeload.github.com/fflch/etl/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248681491,"owners_count":21144700,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-15T13:10:37.666Z","updated_at":"2025-04-13T08:11:26.201Z","avatar_url":"https://github.com/fflch.png","language":"PHP","funding_links":[],"categories":[],"sub_categories":[],"readme":"# ⚙️ ETL-FFLCH\n\n[![pt-br](https://img.shields.io/badge/lang-pt--br-red.svg)](https://github.com/fflch/etl/blob/main/README.md)\n[![eng](https://img.shields.io/badge/lang-en-blue.svg)](https://github.com/fflch/etl/blob/main/README.eng.md)\n\n## 🗒️ Descrição\n\nO ETL-FFLCH é uma ferramenta criada para simplificar os dados do Replicado USP, transformando-os e reorganizando-os em uma fonte de dados mais prática e acessível. Ela realiza a extração, transformação e carga de dados significativos para a faculdade em um banco de dados altamente desnormalizado e simplificado, com dados redundantes. Projetado inicialmente para otimizar a usabilidade desses dados e minimizar erros decorrentes da complexidade do Replicado USP, o ETL-FFLCH agora disponibiliza publicamente sua versão dos dados por meio da [API da FFLCH](https://api.fflch.usp.br), permitindo que qualquer pessoa acesse e integre com facilidade os dados de nossa faculdade.\n\n#### 🌟 Principais benefícios\n\n- **Reformatação**: O ETL-FFLCH permite a manipulação personalizada dos dados do Replicado USP, facilitando a formatação, adaptação e aprimoramento dos dados para preencher lacunas e melhorar sua consistência, garantindo que eles atendam melhor às necessidades de nossa faculdade.\n\n- **Simplificação**: Remodela dados do Replicado USP, que são complexos e dispersos, de modo a oferecer uma fonte de dados mais acessível.\n\n\n#### 🚧 Limitações\n\n - **Redundância**: O banco de dados resultante é altamente desnormalizado, levando a uma grande quantidade de dados redundantes. Embora isso facilite o uso, não é recomendado para muitas finalidades.\n\n - **Confiabilidade**: Devido aos problemas inerentes dos dados do Replicado USP e às dificuldades de diagnosticar e resolver completamente suas deficiências, é fundamental utilizar os dados do ETL-FFLCH com cuidado e permanecer crítico quanto à sua precisão, especialmente ao lidar com dados mais antigos. Se achar que encontrou algum erro, não hesite em abrir uma *issue* ou entrar em contato com a STI-FFLCH.\n \n - **Recarregamento**: Uma vez que o banco de dados Replicado USP não possui timestamps de atualização, não é possível identificar facilmente as alterações incrementais dos dados. Assim, a abordagem mais prática para ter em conta quaisquer atualizações é atualizar todo o conjunto de dados. Isso significa que, cada vez que o processo ETL é executado, quase todos os dados são excluídos e totalmente recarregados. (A tabela *lattes* é a única exceção.)\n\n Para obter instruções detalhadas de configuração, consulte [Instruções de deploy](#instruções-de-deploy).\n\n\u003cbr\u003e\n\n## 🗃️ Organização dos dados\n\nPara fins de organização, categorizamos os dados extraídos em nove categorias distintas. Essa classificação geralmente serve como base para a divisão dos dados em diretórios dentro do nosso código. As categorias são:\n\n- `Pessoas`: Informações sobre cada indivíduo associado à FFLCH.\n- `Graduação`: Dados relacionados a cursos de graduação e seus alunos, incluindo iniciação científica.\n- `Pós-Graduação`: Informações sobre os programas de pós-graduação e seus alunos.\n- `Pesquisas Avançadas`: Dados sobre atividades de pesquisas avançadas, ou seja, realizadas por posdocs e pesquisadores colaboradores.\n- `Servidores`: Detalhes sobre os servidores da FFLCH, incluindo docentes.\n- `Cultura e Extensão`: Informações relacionadas à área de Cultura e Extensão da faculdade.\n- `Programas USP`: Informações sobre os diversos auxílios financeiros, programas e bolsas de estudo disponíveis na USP.\n- `Lattes`: Informações do Currículo Lattes dos indivíduos associados à FFLCH.\n- `Questionário Socioeconômico`: Dados dos questionários socioeconômicos respondidos por ingressantes da graduação.\n\n\u003cbr\u003e\n\n## Instruções de deploy\n\n**1.** Primeiro, instale todas as dependências do projeto:\n\n```sh\ncomposer install\n```\n\n**2.** Faça uma cópia do arquivo *.env.example* e configure corretamente sua *.env* com as credenciais de acesso e as configurações do Replicado USP e de um banco de dados MySQL/MariaDB local:\n\n```sh\ncp .env.example .env\n```\n\n**3.** Após configurado o seu banco de dados local, você pode criar (ou recriar) as tabelas com:\n\n```sh\nphp builder.php\n```\n\n(Para ignorar o prompt de confirmação e forçar a recriação das tabelas, você pode passar o parâmetro `-y`.)\n\n**4.** Depois de criadas as tabelas, você pode inserir (ou atualizar) os dados sempre que necessário com:\n\n```sh\nphp main.php\n```\n\n(Para forçar a construção/reconstrução ao executar o main.php, você pode passar o parâmetro `-f`.)\n\n**5.** Para verificar a última vez em que os jobs do ETL (dividos por categoria) foram executados, use o script `check.php`:\n\n```sh\nphp check.php\n```\n\n**6.** Finalmente, se você quiser dropar todas as tabelas, você pode executar:\n\n```sh\nphp drop.php\n```\n\n\u003cbr\u003e\n\n## 🧩 Estrutura básica do código\n\n- `config/`: Gerencia a conexão com o banco de dados local e inicializa as configurações da .env.\n- `src/`: Contém o código-fonte do projeto.\n    \n    - `Extraction/`: Inclui componentes para a parte de Extração do (E)TL.\n        - `ReplicadoDB.php`: Gerencia a conexão com o banco de dados do Replicado USP.\n        - `TempTables/Scripts/`: Armazena os scripts para a criação de tabelas temporárias utilizadas para um primeiro processamento dos dados, que serão recuperados posteriormente.\n        - `TempManager.php`: Gerencia a criação dessas tabelas temporárias necessárias.\n        - `Queries/`: Armazena as consultas para buscar dados do Replicado USP, incluindo aquelas nas nossas tabelas temporárias.\n    \n    - `Transformation/`: Contém componentes para a fase de Transformação do E(T)L.\n        - `ReplicadoModels/`: Abriga os modelos dos dados retornados pelas consultas ao Replicado USP, incluindo seu mapeamento e remodelagem para o carregamento subsequente.\n        - `Transformer.php`: Lida com a extração e transformação dos dados, invocando a execução de consultas SQL, aplicando paginação e substituições, e mapeando os resultados.\n\n    - `Loading/`: Contém componentes para a fase de Carga [*Loading*] do ET(L).\n        - `DbHandle/`: Gerencia processos gerais do banco de dados, como limpeza e atualização de tabelas e invocação do TableHandler (criador).\n        - `SchemaBuilder/Tables/`: Define a estrutura de cada tabela a ser criada no novo banco de dados.\n        - `SchemaBuilder/TableHandler.php`: Interpreta essas estruturas e cria cada tabela.\n        - `Models/`: Armazena modelos para as tabelas do novo banco de dados.\n        - `Operations/`: Contém instruções para o carregamento de cada tabela.\n\n    - `Jobs/`: Abriga os jobs individuais de atualização para cada categoria deste projeto. (Ver [Organização dos Dados](#️-organização-dos-dados))","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffflch%2Fetl","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffflch%2Fetl","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffflch%2Fetl/lists"}