DISTINCTCOUNT no DAX: Como Contar Clientes Únicos no Power Pivot

Para contar quantos clientes únicos aparecem numa tabela de vendas do Power Pivot, crie uma medida com =DISTINCTCOUNT(Tabela[Coluna]) — ela conta os valores distintos de uma coluna, ignorando repetições automaticamente, mesmo que o mesmo cliente apareça em centenas de linhas de pedidos diferentes.

Você já precisou saber quantos clientes diferentes compraram num determinado mês, mas a única contagem disponível somava o número de pedidos, inflando o resultado porque cada cliente fiel aparecia várias vezes na base?

Sem uma função pensada para contar valores únicos, esse tipo de indicador acaba sendo calculado errado com bastante frequência — confundindo “quantos pedidos” com “quantos clientes”, o que distorce análises de recorrência, ticket médio por cliente e taxa de retenção.

Neste artigo iremos mostrar a diferença entre contar linhas e contar valores únicos, a sintaxe da função DISTINCTCOUNT, e um exemplo prático de como usá-la para contar clientes únicos numa base de pedidos.

DOMINE EXCEL COMIGO

QUERO APRENDER EXCEL

A diferença entre COUNTROWS e DISTINCTCOUNT

Uma medida como COUNTROWS(Pedidos) conta quantas linhas existem na tabela — ou seja, quantos pedidos foram feitos, incluindo vários pedidos do mesmo cliente. Já DISTINCTCOUNT conta quantos valores diferentes aparecem numa coluna específica, então se o mesmo cliente fez 5 pedidos, ele conta como 1 na contagem de clientes únicos, não como 5.

Sintaxe da função DISTINCTCOUNT

=DISTINCTCOUNT(Coluna)

O único argumento aceito é uma coluna (não uma tabela inteira). A função aceita qualquer tipo de dado — texto, número ou data — e conta cada valor distinto uma única vez. Se não houver nenhuma linha visível no contexto de filtro atual, o resultado é BLANK; caso contrário, retorna a contagem de valores diferentes.

Exemplo prático: contando clientes únicos numa base de pedidos

Considere uma tabela de pedidos onde alguns clientes aparecem mais de uma vez:

A B
1 Pedido Cliente
2 1001 Maria
3 1002 João
4 1003 Maria
5 1004 Maria
6 1005 Paula

A medida Total de Pedidos = COUNTROWS(Pedidos) retorna 5. Já a medida

Clientes Únicos = DISTINCTCOUNT(Pedidos[Cliente])

retorna 3 — Maria, João e Paula — mesmo Maria tendo feito 3 dos 5 pedidos. É essa segunda medida que reflete corretamente quantos clientes diferentes compraram, e não quantas transações aconteceram.

DISTINCTCOUNT conta valores em branco

Um detalhe pouco conhecido: o DISTINCTCOUNT inclui o BLANK como um valor distinto na contagem, caso existam linhas sem cliente preenchido. Se você precisa ignorar esses casos, existe a função DISTINCTCOUNTNOBLANK, que faz exatamente a mesma coisa, mas exclui o BLANK do total.

Combinando DISTINCTCOUNT com CALCULATE

Para contar clientes únicos dentro de um contexto específico — por exemplo, só os clientes que compraram acima de determinado valor — combine DISTINCTCOUNT com CALCULATE e um filtro:

Clientes Grandes Compradores = CALCULATE( DISTINCTCOUNT(Pedidos[Cliente]); Pedidos[Valor] > 500 )

Essa medida recalcula a contagem de clientes únicos, mas agora restrita apenas aos pedidos com valor acima de 500 — a mesma lógica se aplica a qualquer segmentação por categoria, região ou período de tempo já presente no modelo.

Desempenho: por que preferir DISTINCTCOUNT em vez de fórmulas alternativas

Antes do DISTINCTCOUNT existir, era comum simular a mesma contagem com COUNTROWS(VALUES(Pedidos[Cliente])) ou com truques envolvendo SUMX. O DISTINCTCOUNT é uma função nativa otimizada para esse cálculo específico, sendo geralmente mais rápida do que essas alternativas manuais, especialmente em tabelas grandes.

Contagem distinta direto na Tabela Dinâmica, sem escrever DAX

Se os dados já estão no Modelo de Dados, existe um atalho que dispensa criar uma medida manualmente: ao arrastar o campo Cliente para a área de valores de uma Tabela Dinâmica conectada ao Modelo de Dados, abra Configurações do Campo de Valor e escolha a opção Contagem Distinta na lista de tipos de cálculo. O Excel monta, por trás dos panos, o equivalente a uma medida DISTINCTCOUNT, sem exigir nenhuma fórmula digitada. Esse atalho é útil para uma análise pontual, mas tem a mesma limitação de qualquer medida implícita: não pode ser reaproveitado em outra medida, nem renomeado de forma consistente em todo o arquivo — para isso, vale mais a pena criar a medida explícita com DISTINCTCOUNT diretamente no Power Pivot.

Combinando DISTINCTCOUNT com DIVIDE: ticket médio por cliente

Uma aplicação prática comum é dividir o total vendido pelo número de clientes únicos, para chegar num “ticket médio por cliente” (diferente do ticket médio por pedido, que divide pelo número de pedidos):

Ticket Médio por Cliente = DIVIDE( SUM(Pedidos[Valor]); DISTINCTCOUNT(Pedidos[Cliente]) )

Com os dados do exemplo anterior, se a soma total de valores fosse 4.500 distribuída entre os 5 pedidos, o ticket médio por pedido seria 4.500 / 5 = 900, enquanto o ticket médio por cliente seria 4.500 / 3 = 1.500 — um número bem diferente, e muito mais relevante para entender quanto cada cliente costuma gastar no total.

Disponibilidade

DISTINCTCOUNT está disponível em qualquer ambiente que use o motor DAX: Power Pivot no Excel 2013 ou mais recente (Windows, incluindo Microsoft 365), Power BI Desktop e Power BI Service. O atalho de Contagem Distinta direto na Tabela Dinâmica também está disponível nessas mesmas versões, desde que os dados estejam no Modelo de Dados. Não existe no Excel para Mac nem no Excel Online, já que nenhum dos dois tem Power Pivot. No Google Sheets, o equivalente mais próximo é combinar ÚNICO com CONT.VALORES numa fórmula de planilha comum.

Perguntas frequentes

DISTINCTCOUNT conta valores em branco?

Sim, o BLANK é considerado um valor distinto e entra na contagem. Se você precisa desconsiderar essas linhas, use a função DISTINCTCOUNTNOBLANK, que funciona igual mas ignora o BLANK.

Qual a diferença entre DISTINCTCOUNT e COUNTROWS?

COUNTROWS conta o número de linhas de uma tabela (por exemplo, o total de pedidos), enquanto DISTINCTCOUNT conta quantos valores diferentes existem numa coluna específica (por exemplo, quantos clientes diferentes fizeram esses pedidos), ignorando repetições.

DISTINCTCOUNT aceita mais de uma coluna como argumento?

Não, DISTINCTCOUNT aceita apenas uma única coluna por vez. Para contar combinações únicas de mais de uma coluna, é preciso combinar outras funções, como DISTINCTCOUNT sobre uma coluna calculada que concatena os valores.

Veja também: Inteligência de Tempo no DAX: YTD, MTD e Comparações com Ano Anterior, que usa o DISTINCTCOUNT como parte do cálculo de uma média móvel.

Compartilhe ou Comente

Se você curtiu esse artigo aonde mostramos a diferença entre contar linhas e contar valores únicos no DAX, a sintaxe da função DISTINCTCOUNT e um exemplo prático de contagem de clientes únicos numa base de pedidos, compartilhe com as suas redes sociais e não se esqueça de deixar um comentário aqui embaixo caso você tenha ficado com alguma dúvida.

Sua planilha já confundiu “número de pedidos” com “número de clientes” alguma vez? Você já usa DISTINCTCOUNT no seu dia a dia com Power Pivot ou Power BI? Conta para nós nos comentários!

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *