Data Quality na Americanas com Soda.io

Diego Lopes
5 min readMar 8, 2022

No primeiro post falamos qual o cenário, processos e frameworks de qualidade de dados na Americanas. Agora vamos mergulhar em alguns aspectos de arquitetura, ferramenta e execução.

Falando sobre o SODA especificamente a ferramenta conta com duas soluções:

Soda SQL e Soda Cloud.

Soda SQL: ferramenta de linha de comando gratuita e open-source que utiliza entradas definidas pelo usuário para preparar consultas SQL que executam, manualmente ou programaticamente, testes em um conjunto de dados a fim de identificar dados inválidos, ausentes ou inesperados.

Soda Cloud: interface para monitorar de forma visual os resultados dos testes e medições históricas, detectar anomalias de forma automática, configurar alertas para notificação dos times sobre problemas identificados, criação e rastreamento incidentes e colaboração para desenvolvimento e avaliação de testes.

Para assegurar a qualidade dos dados da nossa plataforma, estamos trabalhando com o Soda.io, uma ferramenta de observabilidade que possui suporte ao BigQuery e outras fontes de dados. Através dela, conseguimos diagnosticar e monitorar os dados para que eles sejam ainda mais confiáveis, coerentes e precisos na plataforma.

Dessa forma, o Soda SQL e o Soda Cloud endereçam diretamente os desafios de teste, monitoramento, profiling e evolução da observabilidade dos dados.

Soda Cloud

Visualização dos resultados dos scans e histórico de métricas;

✔ Detecção automática de anomalias;

✔ Configuração de alertas e notificação;

Forma colaborativa de escrever testes com a equipe;

✔ Criação de incidentes à partir de scans;

Para uma comparação ainda mais aprofundada a Soda disponibiliza as diferenças em cada solução:

https://docs.soda.io/soda/product-overview.html

Além disso, a Soda também acabou de lançar o SODA Spark onde você também poderá usar em seu cluster spark as métricas e monitorias de qualidade.

Nossa arquitetura

A nossa arquitetura de qualidade e observabilidade se baseia em uma esteira de deploy em que adicionamos um arquivo yaml contendo as métricas de qualidade que desejamos analisar, e à partir de um google kubernetes engine operator do Airflow é executado o scan através do Soda SQL.

Desenho macro da arquitetura

Prática — Como instalar o Soda SQL

Sendo o Soda SQL uma ferramenta open source e free, você também pode explorá-la nos seus diversos data sources. A seguir, vamos demonstrar como você poderá fazer a instalação em ambiente local e rodar um scan em uma tabela do BigQuery.

Inicie rodando os seguintes comandos:

python3 -m venv .venvsource .venv/bin/activatepip install — upgrade pippip install soda-sql-bigquery -U

Após a instalação dos pacotes, neste caso, foi instalado o conector do BigQuery para o Soda em um Virtual Env do Python. Você poderá confirmar se o ambiente está funcionando normalmente apenas digitando “soda”

Após termos o ambiente instalado, é necessário fazer a configuração de conexões. Rode o comando:

soda create bigquery

Agora será necessário colocar as informações do seu ambiente BigQuery dentro do warehouse.yml , bem como também alterar o arquivo env_vars.yml com seu service account do GCP

cat ~/.soda/env_vars.yml

Depois de tudo configurado você poderá executar:

soda analyze

Nesse momento, serão criados alguns arquivos de métricas padrões para as tabelas do dataset informado. Se quiser, também poderá ser criado um arquivo com métricas específicas que gostaria de analisar. ( A seguir, um exemplo de arquivo yaml — nome do arquivo breakdown.yaml)

table_name: tabela_exemplometrics:- row_counttests:row_count > 200

Alguns outros exemplos de métricas já prontas que também podem ser utilizadas.

exemplos de métricas

E finalmente para executar o scan rodar:

soda scan warehouse.yml breakdown.yaml

Examine o output, em particular a seção “Scan Summary” que se encontra no final. Ela indica os resultados dos testes que o Soda SQL rodou dentro dos seus dados. Caso deseje visualizar maiores informações sobre o scan, execute a exportação dos resultados.

soda scan -srf ./<nome_diretório_resultados>/<nome_arquivo_resultado>.json warehouse.yml breakdown.yaml

Qualquer dúvida que tiver quanto a instalação a própria soda disponibiliza uma documentação rica e detalhada aqui com exemplo de primeiras execuções aqui.

Permissionamento e Roles

Dentro do Soda.io é possível atribuir três tipos de roles diferentes relacionadas a um dataset, são elas:

Resultados Soda Cloud

Conforme imagens abaixo podemos avaliar as métricas implementadas e quando o dado passou o limite estipulado, inclusive com detecção de anomalias em alguns cenários, via Soda Cloud com interação direta das análises na web.

Exemplo de detecção de anomalia
Exemplo de scan com missing percentage
Visão no soda cloud de colunas e estatísticas dos metadados

Os resultados, métricas e scans feitos com essa ferramenta tem sido excepcional, nos tornou uma equipe de Dados que entrega ainda mais qualidade, consistência e integridade aos nossos datasets. Nossa maturidade como time evoluiu e cada vez mais os usuários de negócio utilizam dados que trazem valor agregado no dia a dia.

Venha fazer parte do nosso time de dados dentro da Americanas, e colocar esse conceitos de Data Quality e Observability em prática e se tiver alguma dúvida sobre o post é só me procurar no Linkedin.

--

--

Diego Lopes

Data Architect, soccer addict, bass player, big data lover