Pergunta de entrevista para Engenheiro de Dados

O financeiro diz que a receita está inflada e você encontra linhas duplicadas na tabela fato. Como você investiga?

O que o entrevistador está avaliando, como estruturar sua resposta e um exemplo falado que você pode adaptar.

Resposta rápida

Estabeleça a granularidade primeiro e depois quantifique a duplicação: agrupe pela chave pretendida e conte as linhas acima de um. Determine se as duplicatas são idênticas (problema de carga) ou diferem em alguma coluna (fan out de join ou duplicata na origem). Volte camada por camada até achar o primeiro lugar em que a duplicação aparece, corrija naquela camada, reconstrua as partições afetadas e adicione um teste de unicidade.

Por que os entrevistadores perguntam isso

Receita duplicada é o bug clássico de warehouse, e os entrevistadores querem uma investigação metódica em vez de um chute. O diferencial principal é se você checa a origem camada por camada em vez de jogar um DISTINCT na consulta final, e se você termina adicionando um teste para que o mesmo defeito não volte em silêncio.

Como estruturar sua resposta

  • Defina a granularidade pretendida e quantifique quantas chaves estão duplicadas.
  • Compare as linhas duplicadas para ver se são idênticas ou divergentes.
  • Volte pelas camadas para achar onde a duplicação aparece primeiro.
  • Corrija na origem em vez de deduplicar no final.
  • Adicione um teste de unicidade e reconstrua o histórico afetado.

Exemplo de resposta

Exemplo falado, em primeira pessoa

Primeiro eu escrevo qual deveria ser a granularidade, uma linha por item de pedido por exemplo, e depois conto as chaves com mais de uma linha para saber se isso é doze linhas ou doze por cento. Depois eu comparo alguns conjuntos de duplicatas lado a lado, porque isso quase sempre entrega a causa na hora. Se as linhas são idênticas byte a byte, é problema de carga, geralmente um job repetido fazendo append em vez de substituir. Se elas diferem em uma coluna, é fan out de join, que foi o que aconteceu da última vez que eu vi isso: uma dimensão tinha virado tipo 2 e o join não filtrava pela versão atual, então cada linha de fato casava com três linhas históricas da dimensão e a receita triplicava para os clientes afetados. Eu corrijo na camada em que aparece primeiro, não com um DISTINCT no modelo final, porque isso esconde o problema e deixa toda consulta mais lenta. Depois um teste de unicidade na granularidade e uma reconstrução das partições afetadas, para que o financeiro receba números corrigidos.

Vai encarar essa entrevista em breve? O GhostPilot escuta a sua chamada ao vivo, identifica a pergunta no instante em que ela é feita e coloca uma resposta estruturada na sua tela em tempo real. Teste na sua próxima entrevista simulada ou pegue um Session Pass de $29, sem assinatura, para a hora da verdade.

Veja como funciona

Perguntas de acompanhamento que você pode esperar

  • Como exatamente um join com uma dimensão tipo 2 causaria isso?
  • Por que deduplicar no modelo final é uma correção ruim?
  • Como você diria ao financeiro que os números históricos vão mudar?

Mais perguntas para Engenheiro de Dados

Seu entrevistador vai fazer a própria versão desta. Cole a descrição real da vaga no Question Predictor gratuito e receba as 20 perguntas que essa vaga tem mais chance de fazer, com o que cada uma está de fato sondando.

Prever minhas perguntas

Ensaie as perguntas difíceis antes que elas apareçam

Pratique com um copiloto ao vivo e depois entre pronto. Um Session Pass de $29 te leva até o fim da entrevista, sem assinatura e sem amarras.

Instalar o GhostPilot