BASE DE DADOS DE CONHECIMENTO

Contagem dos membros da dimensão que atendem a uma condição


Publicado: 05 Sep 2017
Data da última modificação: 20 Jul 2023

Pergunta

Como computar a contagem dos membros da dimensão que atendem a uma condição.

Ambiente

Tableau Desktop

Resposta

Em geral, a fórmula para contar os membros da dimensão que atendem a uma condição é:
 
{ FIXED [Dimension] : SUM(
IF <Condition>
THEN 1
ELSE 0
END
) }

Há vários casos que podem utilizar essa fórmula geral. A seguir estão alguns exemplos usando o conjunto de dados de amostra Superstore.  
         
CLIQUE PARA EXPANDIR A SOLUÇÃO
Exemplo 1: usar um intervalo de valores com parâmetros
Neste exemplo, a exibição contém [Category (Categoria)] e [Segment (Segmento)] em Linhas, e o objetivo é contar o número de clientes com vendas entre dois valores de parâmetro para cada combinação de categoria e segmento.
  1. Selecione Análise > Criar campo calculado.
  2. Na caixa de diálogo Campo calculado que é aberta, faça o seguinte e clique em OK:
    1. Nomeie o campo calculado. Neste exemplo, o campo calculado chama-se "Nº de clientes com vendas específicas"
    2. No campo de fórmula, crie um campo calculado similar ao seguinte:
      IF { INCLUDE [Customer Name] : SUM([Sales])} <= [Sales Lower Limit]
      AND { INCLUDE [Customer Name] : SUM([Sales])} <= [Sales Upper Limit]
      THEN 1
      ELSE 0
      END
  3. Arraste [Nº de clientes com vendas específicas] para Texto, no cartão Marcas
CLIQUE PARA EXPANDIR A SOLUÇÃO
Exemplo 2: usar um valor de texto
Neste exemplo, a exibição contém [Order ID (ID da compra)] e [Product Name (Nome do produto)] nas linhas, e o objetivo é contar as encomendas que contêm o produto "Porta-clipes".
  1. Crie um campo calculado denominado "Nº de encomendas com um Porta-clipes" com um cálculo semelhante ao seguinte:

    { FIXED [Order ID] : MAX(
    IF [Product Name] = "Porta-clipes"
    THEN 1
    ELSE 0
    END)}

  2. Arraste [Nº de encomendas com um Porta-clipes] para Texto, no cartão Marcas
CLIQUE PARA EXPANDIR A SOLUÇÃO
Exemplo 3: criação de categorias

Neste exemplo, [State (Estado)] foi adicionado ao Texto, e o objetivo é categorizar os estados pelo número de cidades com um lucro negativo.

  1. Crie um campo calculado denominado "Nº de cidades não lucrativas" com um cálculo semelhante ao seguinte:

    { FIXED [State] : SUM(
    IF { INCLUDE [City] : SUM([Profit]) } < 0
    THEN 1
    ELSE 0
    END
    ) }

  2. Crie um campo calculado denominado "Categorias com base no lucro da cidade" com um cálculo semelhante ao seguinte:

    IF [# of Unprofitable Cities] = 0
    THEN "Todas as cidades tem lucro positivo"
    ELSEIF [# of Unprofitable Cities] = 1
    THEN "Uma cidade tem lucro negativo"
    ELSE "Várias cidades têm lucros negativos"
    END

  3. Arraste [Categorias com base no lucro da cidade] para a divisória Colunas
CLIQUE PARA EXPANDIR A SOLUÇÃO
Exemplo 4: usar funções de tabela
Neste exemplo, a exibição já está filtrada para mostrar os 10 principais clientes por vendas, categoria e segmento. O objetivo é destacar qualquer categoria/segmento que tenha mais de dois clientes com lucro negativo.
  1. Crie um campo calculado denominado "Três ou mais dos 10 principais clientes com lucro negativo" com um cálculo semelhante ao seguinte:

    IF
    WINDOW_SUM(
    IF SUM([Profit]) < 0
    AND [Sales Rank] <= 10
    THEN 1
    ELSE 0
    END ) > 2
    THEN "Três ou mais clientes com lucro negativo"
    ELSE "Bom posicionamento"
    END

  2. Arraste [Três ou mais dos 10 principais clientes com lucro negativo] para Color, no cartão Marcas
  3. Clique com o botão direito do mouse em [Três ou mais dos 10 principais clientes com lucro negativo], em Color, e selecione Calcular usando > Nome do cliente.

Informações adicionais

Observações sobre o Exemplo 1:
  • A expressão INCLUDE é necessária porque o campo [Customer Name (Nome do cliente)] não está na exibição
  • SUM([Sales]) é agregada ao nível de detalhe da exibição (nesse exemplo, [Categry (Categoria)] e [Segment (Segmento)]), além de [Customer Name (Nome do cliente)], pois a expressão INCLUDE lista [Customer Name (Nome do cliente)]
  • O cálculo ["Nº de clientes com vendas selecionadas] avaliará se as vendas por cliente estão abaixo do [Limite superior de vendas] e acima do [Limite inferior de vendas]. Se as vendas por cliente estiverem no intervalo especificado, esse cálculo retornará 1 e, quando adicionado, agirá como uma contagem de clientes
  • Esse cálculo também pode ser gravado com uma COUNTD()
Observações sobre o Exemplo 2:
  • A instrução IF lê cada registro no conjunto de dados completos para verificar se o [Product Name (Nome do produto)] é "Porta-clipes". Nesse caso, o cálculo retornará 1 para esse registro. Em seguida, a expressão FIXED retornará o máximo de valores 1 e 0 para cada registro com o mesmo valor de [Order ID (ID da compra)].
  • Em Superstore, há apenas um registro para cada combinação exclusiva de [Product Name (Nome do produto)] e [Order ID (ID da compra)], o que significa que a função MAX() pode ser substituída por SUM () e retornar o mesmo resultado, pois somar um valor é o mesmo que aproveitá-lo ao máximo.
Observações sobre o Exemplo 3:
  • A expressão INCLUDE retornará a soma do lucro por cidade e por estado, pois [State (Estado)] está na expressão FIXED. O cálculo retornará o número 1 para cada cidade não lucrativa, que é uma forma de contar as cidades.
Observações sobre o Exemplo 4:
  • Como os filtros do cálculo de tabela não filtram os dados subjacentes, este exemplo deve usar cálculos de tabela em vez de expressões de nível de detalhe (LOD), tornando-se necessário adicionar uma condição ao cálculo para que haja classificação. No entanto, RANK () é uma função de tabela e não pode ser usada dentro de um cálculo de LOD.
  • Os cálculos de tabela são afetados por cada dimensão não agregada à exibição. A forma como um cálculo de tabela é calculado pelas dimensões na exibição pode ser a causa deste cálculo não retornar resultados corretos. Para resolver esse problema, altere a opção Calcular usando. Para obter mais informações, consulte Transformar valores com cálculos de tabela.
Este artigo resolveu o problema?