Pular para o conteúdo
Fynx
Power BI6 min de leitura

COUNTROWS e DISTINCTCOUNT em DAX: como calcular

COUNTROWS e DISTINCTCOUNT em DAX: a diferença entre contar linhas e contar valores únicos, quando usar cada função e exemplos práticos para não errar a contagem.

F
Fynx

Contar parece trivial, até a contagem vir errada por confundir linha com valor único

Contar é a operação mais básica de qualquer análise, e mesmo assim é onde muita gente erra em DAX. A confusão é sempre a mesma: contar quantas linhas existem não é o mesmo que contar quantos valores diferentes aparecem. Quantos pedidos tivemos é uma pergunta de linhas; quantos clientes distintos compraram é uma pergunta de valores únicos. Usar a função errada retorna um número que parece certo e não é, e ninguém percebe até alguém conferir. Dominar COUNTROWS e DISTINCTCOUNT em DAX é dominar essas duas perguntas diferentes. Este guia explica cada função, mostra quando usar cada uma e evita o erro clássico de inflar ou subestimar uma contagem.

COUNTROWS conta quantas linhas existem em uma tabela

A função COUNTROWS é a mais direta: ela recebe uma tabela e devolve o número de linhas dessa tabela, dentro do contexto de filtro atual. Se você tem uma tabela de pedidos, COUNTROWS aplicada a ela responde quantos pedidos existem no recorte selecionado. É a função certa para contar eventos, transações, ocorrências, tudo que corresponde a uma linha do fato. A sintaxe básica é simples:

Total de Pedidos = COUNTROWS ( Pedidos )

Quando o usuário filtra por um mês ou uma região, o contexto de filtro reduz as linhas consideradas, e COUNTROWS devolve a contagem daquele recorte. É por isso que ela deve ser uma medida, e não uma coluna: assim reage aos filtros do relatório. COUNTROWS é a escolha natural sempre que a pergunta tem a forma de quantos registros.

DISTINCTCOUNT conta quantos valores diferentes aparecem em uma coluna

A função DISTINCTCOUNT resolve a outra pergunta: quantos valores únicos existem em uma coluna, dentro do contexto atual. Se a mesma pessoa fez dez pedidos, ela conta uma vez só. É a função certa para contar clientes distintos, produtos diferentes vendidos, cidades atendidas, qualquer coisa em que a repetição não deve inflar o número. A sintaxe aponta para a coluna:

Clientes Distintos = DISTINCTCOUNT ( Pedidos[ClienteID] )

Aqui está a diferença que causa tantos erros: COUNTROWS dos pedidos e DISTINCTCOUNT do cliente dão números completamente diferentes, e cada um responde a uma pergunta distinta. Confundir os dois é dizer que tivemos tantos clientes quantos pedidos, o que quase nunca é verdade. DISTINCTCOUNT é indispensável para métricas de alcance e de variedade.

As duas funções respondem a perguntas diferentes

FunçãoContaPergunta típica
COUNTROWSLinhas de uma tabelaQuantos pedidos, transações, ocorrências
DISTINCTCOUNTValores únicos de uma colunaQuantos clientes, produtos, cidades distintas
COUNTROWS com VALUESValores distintos via tabelaAlternativa flexível ao DISTINCTCOUNT

COUNTROWS combinado com VALUES ou DISTINCT também conta valores únicos

Existe uma forma alternativa de contar valores distintos que vale conhecer, porque dá mais flexibilidade em cenários avançados. Como COUNTROWS conta linhas de uma tabela, você pode passar a ela uma tabela de valores únicos gerada por VALUES ou DISTINCT sobre uma coluna. O resultado equivale ao DISTINCTCOUNT:

Clientes Distintos = COUNTROWS ( VALUES ( Pedidos[ClienteID] ) )

Na maioria dos casos, DISTINCTCOUNT é mais direto e legível, e deve ser a primeira escolha. A combinação com VALUES entra quando você precisa manipular a tabela de valores antes de contar, aplicando algum filtro adicional ou lógica dentro do CALCULATE. Saber que as duas abordagens existem ajuda a resolver contagens mais elaboradas, mas para o dia a dia, DISTINCTCOUNT resolve a contagem de únicos com clareza.

Escolher a função certa depende de o que uma linha representa

A regra prática para não errar é sempre a mesma: pergunte-se o que uma linha da tabela representa e o que você quer contar. Se cada linha é um evento e você quer o número de eventos, é COUNTROWS. Se você quer o número de entidades diferentes, mesmo que cada uma apareça em várias linhas, é DISTINCTCOUNT sobre a coluna daquela entidade. Um pedido com três itens tem três linhas na tabela de itens: COUNTROWS conta três, DISTINCTCOUNT do pedido conta um. Cada resposta é certa para uma pergunta. Antes de escrever a medida, defina em palavras a pergunta de negócio, e a função certa aparece sozinha. Esse hábito evita o erro silencioso de reportar uma contagem inflada como se fosse o número de clientes. Para modelos e medidas corretas, veja nossos serviços de Power BI, o guia completo de Power BI para empresas e os dashboards.

Cuidados que evitam contagens enganosas

Alguns cuidados finais mantêm as contagens confiáveis. Escreva-as como medidas, não colunas, para que reajam aos filtros do relatório e mostrem a contagem do recorte selecionado. Atenção a valores em branco: dependendo do caso, linhas com a coluna vazia podem ou não entrar na conta, e vale conferir se o resultado bate com o esperado. E lembre que DISTINCTCOUNT considera o contexto de filtro atual, então clientes distintos no mês têm uma contagem, e clientes distintos no ano, outra, sem que a soma dos meses seja igual ao ano, justamente porque um cliente pode comprar em vários meses. Entender esse comportamento evita a estranheza de ver os subtotais não somarem, que na verdade é a contagem de únicos funcionando corretamente.

Perguntas frequentes

Qual a diferença entre COUNTROWS e DISTINCTCOUNT? COUNTROWS conta quantas linhas existem em uma tabela, ideal para contar eventos como pedidos. DISTINCTCOUNT conta quantos valores diferentes aparecem em uma coluna, ideal para contar entidades únicas como clientes. Uma conta ocorrências, a outra conta únicos.

Como conto clientes distintos em DAX? Com DISTINCTCOUNT aplicado à coluna que identifica o cliente, por exemplo DISTINCTCOUNT sobre a coluna de código do cliente. Assim, mesmo que um cliente tenha muitos pedidos, ele é contado uma única vez no recorte atual.

COUNTROWS pode contar valores únicos? Sim, combinado com VALUES ou DISTINCT sobre uma coluna, ele conta as linhas dessa tabela de valores únicos, equivalendo ao DISTINCTCOUNT. Mas para o uso comum, DISTINCTCOUNT é mais direto e legível.

Por que os subtotais da contagem de únicos não somam? Porque DISTINCTCOUNT respeita o contexto de filtro. Um cliente que compra em vários meses é contado em cada mês, mas uma vez só no ano. Por isso a soma dos meses pode ser maior que o total anual, e isso é o comportamento correto.

Devo escrever a contagem como medida ou coluna? Como medida. Assim ela reage aos filtros do relatório e mostra a contagem do recorte selecionado. Uma coluna calculada ficaria fixa e não responderia às seleções do usuário, além de pesar no modelo.

Valores em branco entram na contagem? Depende do caso e da função. Linhas com a coluna vazia podem ou não ser consideradas conforme a contagem, então vale conferir se o resultado bate com o esperado, especialmente em colunas que podem ter registros sem valor.

Conte a coisa certa, defina a pergunta primeiro

COUNTROWS e DISTINCTCOUNT respondem a perguntas diferentes: quantos registros e quantos únicos. Definir em palavras o que você quer contar aponta a função certa e evita a contagem inflada. Se quiser medidas corretas e confiáveis, fale com a gente.

Quer aplicar isso na sua empresa?

A Fynx implementa BI, Power BI e Power Platform de ponta a ponta. Conte seu cenário e devolvemos um diagnóstico direto ao ponto.

Falar com um especialista

Vamos transformar seus dados em decisão?

Conte seu cenário. Devolvemos um diagnóstico e uma proposta com faixa de investimento em poucos dias úteis, sem folheto, direto ao ponto.