Uma linha representa o quê?
Defina o grain de cada origem e do target final antes de fazer qualquer JOIN.
Os padrões que mais uso no Marketing Cloud: deduplicação determinística, ROW_NUMBER(), grain de query, filtros SARGable, staging, target actions e segmentação de audiência.
A meta é uma referência que eu consiga abrir no meio do trabalho real, não uma parede de copy-paste.
Use ROW_NUMBER() quando a pergunta de negócio for “qual única linha deve sobreviver dentro de cada grupo lógico?”. A parte difícil não é a função — é definir corretamente a partição e a regra de ordenação.
Uma regra de Golden Record muitas vezes precisa considerar confiança da fonte, prioridade de status ou precedência de permissão antes da recência. Coloque essas regras no ORDER BY da window function para que a linha sobrevivente represente o contrato de negócio.
Em Data Extensions e Data Views grandes, o lado em que a função é aplicada pode decidir se o banco consegue usar índice de forma eficiente. Sempre que possível, mantenha as colunas pesquisáveis “nuas” no lado esquerdo dos predicados.
A maioria dos problemas do tipo “minha contagem explodiu” é problema de grain. Defina o que uma linha representa em cada fonte antes de escrever o JOIN.
Quando uma Query Activity acumula joins, scans e transformações demais, divida o trabalho em etapas determinísticas. Você ganha observabilidade, scans menores e isolamento de falhas muito melhor.
O texto SQL é só metade da Query Activity. A target action muda a forma como a plataforma escreve os dados e pode virar gargalo conforme o alvo cresce.
Use NTILE() quando você precisa de grupos aleatórios equilibrados. Use módulo de _CustomObjectKey quando precisa de uma divisão muito barata e aproximadamente uniforme em Data Extensions padrão grandes e o equilíbrio exato não é obrigatório.
Uma Data Extension é uma tabela relacional, não uma lista ordenada. ORDER BY é útil junto com TOP ou window functions para escolher quais linhas vencem, mas consumidores downstream nunca devem depender da ordem física das linhas.
Esses são os defaults que quero lembrar antes de promover uma query de exploração para uma automação produtiva.
Defina o grain de cada origem e do target final antes de fazer qualquer JOIN.
PARTITION BY não é decoração sintática. É a definição de identidade que você está impondo.
Uma sequência legível de queries pequenas geralmente vence uma query heroica que ninguém quer depurar.