Pergunta de entrevista para Analista de Dados

O que é um join com fan out e como você identificaria um na sua própria query?

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

Resposta rápida

O fan out acontece quando você faz join com uma tabela que tem várias linhas correspondentes por chave, então cada linha da esquerda é duplicada e qualquer SUM sobre ela fica inflado. É a causa mais comum de receita superestimada em um relatório. Detecte contando as linhas antes e depois do join, ou verificando se a chave do join é de fato única do lado direito antes de agregar.

Por que os entrevistadores perguntam isso

Isso produz números errados que parecem críveis, que é a pior classe de bug analítico, e normalmente só é pego por alguém do financeiro que sabe o total de verdade. Os entrevistadores querem um hábito ativo de detecção e não uma definição, e de preferência o padrão de pré agregar o lado de muitos antes do join.

Como estruturar sua resposta

  • Explique o mecanismo: um join um para muitos duplicando as linhas da esquerda.
  • Mostre por que os agregados inflam em vez de dar erro.
  • Dê o hábito de detecção: contagem de linhas antes e depois.
  • Verifique explicitamente a unicidade da chave do lado do join.
  • Ofereça a correção: agregar o lado de muitos primeiro e só depois fazer o join.

Exemplo de resposta

Exemplo falado, em primeira pessoa

Se eu faço join de pedidos com itens do pedido por order_id, e um pedido tem quatro itens, aquela linha de pedido agora aparece quatro vezes. Nada dá erro, mas se eu somo o total do pedido eu quadrupliquei a receita daquele pedido. É insidioso porque o número é plausível, só que errado, e quem descobre normalmente é o financeiro três semanas depois. Meu hábito é contar as linhas da tabela base, rodar o join, contar de novo e, se o número mudou, eu preciso conseguir explicar por quê. Eu também checo antes a unicidade da chave do join com um group by rápido e having count maior que um, o que leva dez segundos. A correção costuma ser agregar o lado de muitos até a granularidade que eu quero antes do join, então eu somo a receita dos itens por pedido em uma CTE e faço join dessa única linha por pedido de volta no cabeçalho. Isso mantém a granularidade intacta e deixa a query mais fácil de raciocinar.

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 você reescreveria uma query com fan out para preservar a granularidade?
  • Por que SELECT DISTINCT é uma correção ruim para isso?
  • Como você detectaria isso em um dashboard que outra pessoa construiu?

Mais perguntas para Analista 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