Soluções com Foco no Usuário




No meu post Como foi ser um Estagiário de Dados?, compartilho um resumo da minha jornada e cito que além dos dashboards no Power BI foram necessárias soluções amigáveis para analistas com e sem conhecimento em linguagens de programação e SQL, que queriam explorar os dados em suas próprias análises ou precisavam extrair relatórios.

Recriei as soluções e estou utilizando os dados dos meus projetos de estudo spotifEx e waypointEx.

Reportium

Reportium possibilitava a extração de um arquivo "csv" com base na regra de negócio vigente no pipeline de dados, especificada pelo analista. Inicia solicitando as datas "inicial" e "final" do período de interesse, e em seguida, mostra a quantidade de registros localizados. Pensei que a visualização dessa informação aliada a percepção da velocidade que o arquivo foi gerado, poderia trazer conhecimento sobre os limites do hardware quanto a memória e processamento. Por fim, solicita o local desejado para salvar o arquivo.

Criei usando Python com as bibliotecas FreeSimpleGUI e PyArrow, além da API que fornece os dados. A versão que é apresentada na imagem, está rodando no Ubuntu. O sistema operacional lá era o Windows e por isso transformei em um executável (.exe) usando o PyInstaller, para que o usuário não precisasse ter o Python instalado no computador.

Apache Drill

Alguns analistas tinham algum conhecimento em SQL e queriam uma liberdade maior ao consumir os dados, mas sem escrever consultas grandes e complexas. Inicialmente seria diretamente no PostgreSQL, nosso Data WareHouse, mas não era possível ocultar os schemas que o usuário não tinha autorização. A solução era um equilíbro entre: parecer que está conectado no banco de dados, acessar só o necessário e sem escrever muito SQL.

Apache Drill é um mecanismo de consulta SQL que permite fazê-lo diretamente em JSON, Parquet, CSV, Object Storage como S3 e MongoDB, sendo leve e excelente para consultas ad-hoc. Comecei minhas pesquisas pensando em usar o Trino, mas ele parecia muito para o que eu tinha em mente. Queria começar pequeno e escalar caso fosse necessário, e Drill se sai bem como nó único.
Aproveitando o próprio pipeline de dados, uma etapa resolvia as complexidades existentes na solicitação do analista e gerava um arquivo parquet, que era salvo em um volume compartilhado com o Drill.

Para melhorar a experiência do usuário, além da reunião de entrega/treinamento, um membro da equipe criou um manual para que os analistas tivessem por escrito como configurar e se conectar, e montamos um "kit" compactado com: material escrito, Dbeaver Portable, driver para o Drill (drill-jdbc.jar) e um arquivo .sql com consultas prontas, para alterar somente os parâmetros.

GraphiQL

Enquanto desenvolvia a API que compartilho nos posts intitulados Começando uma API para Self-Service BI, vi em GraphiQL uma possibilidade de uso pelos analistas com algum conhecimento em linguagens de programação, restando apenas escrever resolvers amigáveis que gerariam queries amigáveis, melhorando a qualidade da experiência. Deveria priorizar como o usuário gostaria de pedir os dados e não como os dados estavam guardados, democratizando o acesso.

GraphiQL é um ambiente visual e interativo que roda no navegador e é usado para consultar APIs GraphQL, sendo a ferramenta padrão para quem quer escrever, testar e documentar as consultas. Tem autocompletar inteligente e um painel lateral de "Docs" que é gerado automaticamente ao se conectar na API, refletindo o que está no backend, facilitando o entendimento de como os dados estão conectados no servidor.

R-Conn

R-Conn facilitava que os analistas usando o R fizessem conexões ao PostgreSQL e ao Apache Impala sem complexidades e muitas linhas de código, com suas credenciais de conexão em variáveis de ambiente e uma forma padronizada de se conectar, para que eles se preocupassem somente com a análise dos dados. Para facilitar ainda mais começamos a experimentar dbplyr e implyr, que traduzem código com sintaxe do dplyr para SQL.

notifEx

notifEx tinha como foco meu coordenador e os pares que trabalhavam diretamente nos pipelines de dados. Eles não achavam fácil verificar na interface do Apache Airflow se o pipeline havia concluído com sucesso, e se não, qual tinha sido o erro, e em qual task. Cogitamos enviar notificações por e-mail, mas pareceu menos custoso a longo prazo ter um painel compartilhado onde todos poderiam ter a mesma informação. No exemplo mostrado, recriei um pouco diferente, mas se estivesse verde, rodou com sucesso, e se vermelho, deu erro... e informava a DAG, a task e o erro.

Criei usando Python e a API do Google Calendar configurada no Google Cloud.

Melhorar a experiência do usuário tem que ser um dos objetivos!
Recebemos feedbacks positivos como:
   -  Agora temos acesso aos dados com facilidade!
   -   Houve diminuição no tempo de entrega dos relatórios.
   -   Estamos experimentando criar nossas próprias visualizações!

O início da democratização dos dados, permitindo que usuários de negócio acessem, explorem e visualizem dados sem depender de muitos conhecimentos técnicos.

Hoje, busco alinhar tecnologias e arquiteturas que diminuam gargalos de performance e custos com a experiência amigável de quem vai consumir os dados.

Porque no final das contas se o usuário não usar a solução, como será extraído o valor?

E você, o que achou? Como faria?
Obrigado pela leitura.