Se você trabalha com dados no seu dia a dia, algum dos seguintes cenários podem soar familiares: um dashboard não foi atualizado como deveria, um relatório contém informações erradas ou alguém foi levado a tomar uma decisão mal informada pela indisponibilidade total ou parcial de dados. Todos esses cenários têm uma provável raiz em comum: dados não confiáveis.
À medida que as empresas buscam abordagens mais data driven, ao mesmo tempo que as fontes de dados crescem em volume e variedade, os pipelines usados para extrair, transformar e entregar valor com os dados vão se tornando cada vez mais complexos. Isso significa que o dado pode ficar indisponível em qualquer estágio do pipeline, e sem os processos e ferramentas para garantir a qualidade dos dados, ficamos sem visibilidade do que pode estar errado.
Mas afinal, o que significa qualidade de dados? No livro Data Quality Fundamentals, qualidade de dados é definida como a saúde do dado em qualquer estágio do seu ciclo de vida. Nesse livro também encontramos uma definição muito útil de “data downtime”, que diz respeito ao tempo total que o dado ficou ausente, impreciso ou errôneo.
Podemos olhar para a qualidade de dados sob a perspectiva de seis dimensões fundamentais, segundo a definição da Data Management Association (DAMA):
- Precisão (Accuracy): diz respeito a se os dados capturados descrevem os eventos reais.
- Completude (Completeness): compreende o quanto os dados estão completos, isto é, se alguma coluna tem valores faltantes.
- Consistência (Consistency): os dados obedecem a uma regra bem definida.
- Pontualidade (Timeliness): trata da importância da ordem que o dado é registrado de forma temporal, principalmente dados transacionais, por exemplo. Nesse aspecto, devemos considerar que os dados podem ficar desatualizados.
- Unicidade (Uniqueness): registros únicos devem aparecer apenas uma vez.
- Validade (Validity): o quanto o dado está em conformidade com o tipo, o formato ou a faixa estabelecida.
Como implementar qualidade de dados?
Levantando a situação atual
Agora que já vimos os principais conceitos, podemos nos perguntar como implementar isso na prática. A resposta depende do estágio de maturidade da sua empresa com relação a dados.
Construir qualidade de dados envolve tecnologias, processos e pessoas. Por esse motivo, pode ser complicado buscar soluções que sejam “balas de prata”. Porém, podemos começar entendendo onde nos encontramos com relação à saúde do dado. Observabilidade é um bom primeiro passo.
A observabilidade de dados se baseia nos princípios da Engenharia de Software para observabilidade de sistemas, mas, nesse caso em específico, esses princípios (monitoramento, alertas e detecção de incidentes para prevenir downtime) são avaliados mediante cinco pilares: atualização (freshness), distribuição, volume, esquema (schema) e linhagem. Esses pilares destacam elementos que podem ser monitorados como um indicador de qualidade de dados:
- Atualização (freshness): a palavra freshness não é usada na literatura da área à toa, esse pilar diz respeito ao quanto o dado é fresco, recente. Aqui podemos medir o tempo de atualização.
- Distribuição: podemos entender a distribuição dos dados para monitorar se temos pontos que desviam muito da faixa aceitável para aquele dado.
- Volume: tendo uma noção da quantidade de dados (em Terabytes ou quantidade de linhas por tabela) que chegou na nossa pipeline, podemos saber se todos os dados foram ingeridos corretamente.
- Esquema (schema): o schema dos dados diz respeito a como o dado está organizado, principalmente em bancos relacionais. É a configuração lógica e visual das tabelas, daí, podemos acompanhar como o schema mudou, por exemplo, se colunas foram criadas, excluídas ou mudaram de tipo.
- Linhagem: para um ativo de dados, digamos, um dataset, a linhagem nos dá visibilidade de quais são suas dependências e quais outros ativos dependem dele. É por meio da linhagem que sabemos o que pode ser impactado por uma mudança ou incidente.
Apesar da observabilidade não se resumir apenas à coleta de métricas, esse é um bom ponto de partida. Algumas etapas básicas do começo do processo de coleta de métricas para construir observabilidade são:
- Mapear os ativos de dados: o primeiro passo é mapear as tabelas que temos no nosso repositório de dados (Data Warehouse ou Data Lake). Assim, sabemos o que precisa ser monitorado
- Monitorar a atualização, o volume e a distribuição: compilar métricas como “porcentagem de valores nulos nas colunas”, “número de dias (ou horas) desde a última atualização da tabela” ou até a distribuição dos dados é essencial para começar a construir observabilidade.
- Mapeie a linhagem dos dados: a linhagem, ou seja, a dependência entre as tabelas, é importante para dar contexto aos possíveis incidentes. Isso nos ajuda a entender o que pode ser impactado e onde pode estar a causa raiz. Por exemplo, uma anomalia na taxa de zeros de uma métrica foi causada por uma alteração em uma das tabelas usadas como fonte para o cálculo dessa métrica.
- Checagem da saúde: para tabelas críticas, queremos ter certeza de que todos os campos estão devidamente preenchidos e possuem valores saudáveis. Para colunas de strings, acompanhamos métricas relacionadas às seis dimensões de qualidade apresentadas no tópico Fundamentos, como completude (% de valores não nulos) e unicidade (% de únicos). Para campos numéricos, acompanhamos métricas como taxa de zeros (% de registros 0), média e quantis.
Desenvolvendo uma plataforma de dados focada em confiabilidade
Dados confiáveis são o produto final da qualidade de dados implementada. Se quisermos um sistema de qualidade de dados escalável, precisamos ter uma visão macro de todo o ciclo de vida do dado, a começar pela ingestão.
Capturar e corrigir problemas na ingestão ajuda a minimizar os impactos mais no fim do pipeline, algumas práticas recomendadas nesse ponto são:
- Limpeza: preparamos e modificamos os dados para tratar registros incorretos, incompletos e irrelevantes.
- Data Wrangling: é o processo de estruturar e enriquecer dados para ficarem no formato desejado.
- Testes: atualmente temos muitas opções para nos ajudar a automatizar a etapa de testes. Por exemplo, o dbt (data build tool) é uma ferramenta de transformação de dados que possui testes genéricos como os de valores únicos, não nulos, valores aceitáveis, e relacionamento. O Elementary pode ser usado para expandir as capacidades de testes do dbt com detecção de anomalias. Outra ferramenta bastante popular e open source para validação de qualidade de dados é o Great Expectations.
Contudo, mesmo tomando todos os cuidados na ingestão, há chances de só notarmos que tem “algo errado” com os dados na camada analítica. Os times podem responder à qualidade nessa camada via um dashboard de confiabilidade de dados, por exemplo, que registra o tempo até a detecção (TTD, em inglês, Time to Detect), o tempo até a resolução (TTR, em inglês, Time to Resolve) ou outras métricas relacionadas à qualidade como as que já vimos anteriormente.
O estabelecimento de SLA’s, SLI’s e SLO’s relacionados aos produtos de dados também é fundamental para alinhar expectativas com os stakeholders.
Portanto, tão importante quanto implementar ferramentas e processos, é ter um bom entendimento do que “dado com qualidade” significa. Para isso, é necessário o envolvimento de pessoas de negócio para definir o que é “qualidade” para um determinado ativo de dados, isso envolve garantir ownership, ou seja, a propriedade de datasets importantes para pessoas que entendem daquele contexto.
Mas esse é um tópico para outra discussão, pois qualidade de dados é um tema extenso e o objetivo desse artigo é ser introdutório, então para quem quiser se aprofundar, recomendo tanto o livro Data Quality Fundamentals, citado anteriormente, quanto a sequência de posts no blog do Airdabnb nas referências.
E você, o que achou das informações sobre qualidade de dados? Deixe seu comentário!
Artigo escrito por Larissa Rocha, da Comunidade PrograMaria.
Referências
Data Quality Fundamentals
https://medium.com/airbnb-engineering/data-quality-at-airbnb-e582465f3ef7
https://medium.com/airbnb-engineering/data-quality-at-airbnb-870d03080469