
- Setor
- Saúde
- Ferramentas
- Pentaho, Python, SQL, Git
- Entregas
- Inventário e linhagem das cargas
- Alerta de perda silenciosa
- Cargas reescritas com reconciliação a cada execução
- Runbooks e catálogo das cargas
Desafio
Um hospital de grande porte alimentava o data warehouse e centenas de painéis de Power BI com cargas noturnas no Pentaho, que liam do banco do sistema de gestão hospitalar. A equipe de dados era pequena e havia pouca documentação. Cargas que deveriam terminar de madrugada às vezes iam até o meio da manhã, e algumas terminavam com status de sucesso depois de ler só uma parte dos dados.
Solução
O trabalho começou medindo o ambiente, antes de discutir troca de plataforma:
- Inventário automático de mais de 200 transformações e dezenas de jobs, com a linhagem de origem e destino e o padrão de carga de cada uma. Quase metade das transformações não era chamada por nenhum job, e só uma fração mínima fazia carga incremental de fato.
- Duração individual de cada transformação, tirada do log do Pentaho, para separar o que era lento por volume do que era lento por consulta.
- Detecção de perda silenciosa: uma view compara o volume lido em cada execução com a mediana das semanas anteriores e marca as cargas que leram bem menos que o normal. Testada contra mais de um ano de histórico, ela reproduziu os episódios que já se conheciam.
Com o diagnóstico em mãos, cada correção seguiu o mesmo ciclo. Primeiro, achar a causa raiz e conferir o contrato real da origem. Depois, reescrever a carga para que uma falha apareça como falha, aplicar em produção com um caminho de volta e reconciliar origem e destino a cada execução.
- A integração com uma API de classificação de internações foi reescrita em Python, sem a recursão que fazia a mesma transformação rodar centenas de vezes por noite.
- A carga das APIs de engenharia clínica saiu do Pentaho e foi para um script Python que valida o retorno antes de apagar qualquer dado e registra a reconciliação de cada tabela.
- Uma carga de indicadores cirúrgicos passou a gravar numa tabela de preparação. O destino só é trocado depois da conferência de volume, numa única transação.
- As conexões ganharam uma versão parametrizada, sem senha nos arquivos, pronta para entrar no controle de versão. Um hook de pre-commit passou a barrar qualquer credencial no repositório.
Resultado
- Integração de internações: tempo de execução mais de 60 vezes menor, com o período coberto ampliado e a recuperação de registros que faltavam sem ninguém saber.
- Indicadores cirúrgicos: carga cerca de 8 vezes mais rápida, sem perda de linhas. Quando algo falha, o job agora termina com erro e o destino fica intacto.
- Engenharia clínica: execuções diárias reduzidas a uma fração do que eram, cada uma com reconciliação registrada.
- Monitoramento: alerta de perda silenciosa ativo sobre as cargas principais.
- Conhecimento: runbooks e um catálogo das cargas, para que a operação não dependa de uma única pessoa.
O nome do cliente e alguns detalhes foram alterados para preservar a confidencialidade. Projeto conduzido pelo fundador da Dome Analytics.
Projetos relacionados
Governança do Power BI em um Hospital
Inventário completo do Power BI, medição de uso e um painel de acessos para decidir o que manter, documentar e desativar.
Causa Raiz de Quedas no Gateway do Power BI
Investigação com os logs do Windows e do gateway que explicou por que o serviço caía em horário comercial e derrubava a atualização de dezenas de painéis.