quarta-feira, 5 de marรงo de 2025

๐—–๐—ผ๐—บ๐—ผ ๐˜ƒ๐—ฎ๐—น๐—ถ๐—ฑ๐—ผ ๐—ฑ๐—ฎ๐—ฑ๐—ผ๐˜€ ๐—ป๐˜‚๐—น๐—ผ๐˜€ ๐—ฎ๐—ป๐˜๐—ฒ๐˜€ ๐—ฑ๐—ฒ ๐—น๐—ฒ๐˜ƒ๐—ฎ๐—ฟ ๐—ฝ๐—ฎ๐—ฟ๐—ฎ ๐—ฎ ๐—ฐ๐—ฎ๐—บ๐—ฎ๐—ฑ๐—ฎ ๐—ฆ๐—ถ๐—น๐˜ƒ๐—ฒ๐—ฟ? (๐—”๐—ฟ๐—พ๐˜‚๐—ถ๐˜๐—ฒ๐˜๐˜‚๐—ฟ๐—ฎ ๐— ๐—ฒ๐—ฑ๐—ฎ๐—น๐—ต๐—ฎ̃๐—ผ)

Alรฉm de desenvolver pipelines de dados, uma das (๐™ข๐™ช๐™ž๐™ฉ๐™–๐™จ) responsabilidades do Engenheiro de Dados รฉ manter a qualidade dos dados.

Na ๐—ฎ๐—ฟ๐—พ๐˜‚๐—ถ๐˜๐—ฒ๐˜๐˜‚๐—ฟ๐—ฎ ๐—บ๐—ฒ๐—ฑ๐—ฎ๐—น๐—ต๐—ฎ̃๐—ผ (๐—ฏ๐—ฟ๐—ผ๐—ป๐˜‡๐—ฒ, ๐˜€๐—ถ๐—น๐˜ƒ๐—ฒ๐—ฟ ๐—ฒ ๐—ด๐—ผ๐—น๐—ฑ), antes de movimentar os dados de bronze para silver, utilizo um processo de validaรงรฃo simples de quantidade de valores nulos para cada coluna em uma tabela do Bigquery.


๐—–๐—ผ๐—บ๐—ผ ๐—ณ๐˜‚๐—ป๐—ฐ๐—ถ๐—ผ๐—ป๐—ฎ?


Durante o processo de ingestรฃo dos dados (utilizando ๐—”๐—ถ๐—ฟ๐—ณ๐—น๐—ผ๐˜„ ๐—ฒ ๐——๐—ฎ๐˜๐—ฎ๐—ณ๐—น๐—ผ๐˜„), a ๐˜ฅ๐˜ข๐˜จ passa os parรขmetros para a query que estรก armazenada no ๐——๐—ฎ๐˜๐—ฎ๐—ณ๐—ผ๐—ฟ๐—บ (bem parecido com o ๐˜ฅ๐˜ฃ๐˜ต), fazendo com que ela gere uma tabela com os nomes de colunas, quantidade de nulos e percentual em relaรงรฃo ao total.

Assim, temos tempo hรกbil de decidir o que fazer com esses campos nulos sem impactar as demais atividades que dependem desses dados.


Tรก, mas qual o problema de ter colunas com valores nulos no Bigquery?


1. Quando um valor รฉ nulo, o Bigquery pode precisar de metadados adicionais para indicar que aquele valor “๐˜ฏ๐˜ข̃๐˜ฐ ๐˜ฆ๐˜น๐˜ช๐˜ด๐˜ต๐˜ฆ”. Isso pode aumentar o espaรงo de armazenamento. O cenรกrio fica pior se vocรช tem muitas colunas com muitos registros nulos.


2. Com aumento de armazenamento, vem o ๐—ฎ๐˜‚๐—บ๐—ฒ๐—ป๐˜๐—ผ ๐—ฑ๐—ฒ ๐—ฐ๐˜‚๐˜€๐˜๐—ผ๐˜€, nรฃo sรณ com armazenamento, mas tambรฉm com processamento. E isso pode impactar o ๐˜ฃ๐˜ถ๐˜ฅ๐˜จ๐˜ฆ๐˜ต do projeto.


3. Os dados nulos podem tornar as ๐—ฐ๐—ผ๐—ป๐˜€๐˜‚๐—น๐˜๐—ฎ๐˜€ ๐—ป๐—ฎ๐˜€ ๐—ฐ๐—ฎ๐—บ๐—ฎ๐—ฑ๐—ฎ๐˜€ ๐˜€๐˜‚๐—ฝ๐—ฒ๐—ฟ๐—ถ๐—ผ๐—ฟ๐—ฒ๐˜€ ๐—บ๐—ฎ๐—ถ๐˜€ ๐—น๐—ฒ๐—ป๐˜๐—ฎ๐˜€. [ ๐˜—๐˜ข๐˜ด๐˜ด๐˜ฆ๐˜ช por ๐˜ถ๐˜ฎ ๐˜ค๐˜ฆ๐˜ฏ๐˜ข́๐˜ณ๐˜ช๐˜ฐ ๐˜ฐ๐˜ฏ๐˜ฅ๐˜ฆ ๐˜ถ๐˜ฎ๐˜ข ๐˜ต๐˜ข๐˜ฃ๐˜ฆ๐˜ญ๐˜ข ๐˜ต๐˜ช๐˜ฏ๐˜ฉ๐˜ข 183๐˜จ๐˜ฃ ๐˜ฅ๐˜ฆ ๐˜ฅ๐˜ข๐˜ฅ๐˜ฐ๐˜ด, ๐˜ด๐˜ฆ๐˜ฏ๐˜ฅ๐˜ฐ 95% ๐˜ฅ๐˜ฆ๐˜ด๐˜ด๐˜ฆ ๐˜ข๐˜ณ๐˜ฎ๐˜ข๐˜ป๐˜ฆ๐˜ฏ๐˜ข๐˜ฎ๐˜ฆ๐˜ฏ๐˜ต๐˜ฐ ๐˜ข๐˜ฑ๐˜ฆ๐˜ฏ๐˜ข๐˜ด ๐˜ค๐˜ข๐˜ฎ๐˜ฑ๐˜ฐ๐˜ด ๐˜ฏ๐˜ถ๐˜ญ๐˜ฐ๐˜ด ]. Trabalhar com essa tabela da forma que estava era insalubre.


4. Por fim, mas nรฃo menos importante, ๐—ฎ๐˜‚๐—บ๐—ฒ๐—ป๐˜๐—ผ ๐—ฑ๐—ผ ๐—ฐ๐˜‚๐˜€๐˜๐—ผ ๐—ฑ๐—ฎ ๐—พ๐˜‚๐—ฒ๐—ฟ๐˜†. O Bigquery armazena os dados em ๐—ณ๐—ผ๐—ฟ๐—บ๐—ฎ๐˜๐—ผ ๐—ฐ๐—ผ๐—น๐˜‚๐—ป๐—ฎ๐—ฟ. Ou seja, quanto mais colunas com muitos dados nulos na sua consulta, o volume de dados processados aumenta.

Esse รฉ apenas um exemplo de validaรงรฃo que podemos realizar nos nossos dados antes de enviarmos para as camadas superiores (Silver e Gold).

O legal de tudo isso que, alรฉm de ser uma boa prรกtica, vocรช consegue:

-> escalar a aplicaรงรฃo com Dataform (ou dbt) e Airflow

-> manter um controle de versรฃo dos seus ajustes e regras para tratamentos

-> nรฃo impactar as รกreas que estรฃo dependendo dos dados

-> reduzir custos com processamento, armazenamento e tempo das consultas

 Fonte Nathรฃ C.

Nenhum comentรกrio:

Postar um comentรกrio