Defina o Grain Antes da Sintaxe do JOIN
Evite multiplicação acidental de linhas em queries de tracking.
O nível de evidência descreve minha experiência com o conteúdo. Fonte oficial descreve contrato/documentação da plataforma. Observação de produção não deve ser tratada automaticamente como limite oficial.
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.
Descreva em linguagem simples o grain de cada fonte.
Faça JOIN usando a chave completa exigida pelo relacionamento do evento.
Pré-agregue fontes de evento many-to-many antes de combiná-las.
Use IsUnique apenas quando ele representar exatamente a métrica desejada.
Multiplicação clássica
Fazer JOIN direto entre _Open e _Click apenas por SubscriberKey pode multiplicar linhas porque um mesmo subscriber pode ter vários opens e vários clicks. Agregar só depois da multiplicação pode esconder o sintoma e ainda deixar a query cara.
Padrão mais seguro
Pré-agregue cada fonte de evento no grain que você precisa e só então faça JOIN dos resultados menores.
/* Stage 1: one row per subscriber */ SELECT SubscriberKey, MAX(EventDate) AS LastOpenDate FROM _Open WHERE IsUnique = 1 GROUP BY SubscriberKey /* Stage 2: repeat for clicks, then join the staged DEs */
Chaves de tracking de email
Para logs de envio e joins de tracking em nível de subscriber, a orientação da Salesforce costuma utilizar JobID, ListID, BatchID e SubscriberID em conjunto quando aplicável.