BASE DE DADOS DE CONHECIMENTO

Calcular contagens contínuas ou móveis distintas


Publicado: 07 Nov 2015
Data da última modificação: 20 Jul 2023

Pergunta

Como calcular uma contagem contínua ou móvel distinta de uma dimensão.

Por exemplo, o total acumulado de clientes únicos que fizeram uma compra durante todo o período, ou um total móvel de clientes únicos que fizeram uma compra dentro de um período, como nas últimas três semanas.

Ambiente

Tableau Desktop

Resposta

A pasta de trabalho de exemplo em anexo usa o conjunto de dados de exemplo da Superstore para demonstrar as instruções a seguir:
CLIQUE PARA EXPANDIR AS ETAPAS
Opção 1: usar FIXED para encontrar a contagem contínua distinta
Observação: esse método não funcionará para encontrar a contagem móvel distinta.
  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 é denominado "Primeira compra do cliente"
    2. No campo de fórmula, crie um cálculo similar ao seguinte:
      { FIXED [Customer Name], [Order Date] : MIN(
      IF [Order Date] = { EXCLUDE [Order Date] : MIN([Order Date])}
      THEN 1
      ELSE 0
      END
      ) }
      
  3. Crie um campo calculado denominado "COUNTD contínua precisa dos clientes" com um cálculo similar ao seguinte:
    RUNNING_SUM(SUM([Count Customer's 1st Order]))
  4. Clique com o botão direito e arraste [Data da compra] para a exibição
  5. Na caixa de diálogo Soltar campo, selecione WEEK(Data da compra) com o ícone de calendário verde
  6. Arraste [COUNTD contínua precisa dos clientes] até a divisão Linhas
CLIQUE PARA EXPANDIR AS ETAPAS
Opção 2: usar as funções de tabela para encontrar a contagem móvel distinta
Observação: essa solução provavelmente causará problemas de desempenho, pois a exibição final deverá conter todas as dimensões necessárias para realizar o cálculo de tabela.
Etapa 1 - Criar três campos calculados
  1. Selecione Análise > Criar campo calculado.
    1. Na caixa de diálogo Campo calculado que é aberta, faça o seguinte e clique em OK:
    2. Nomeie o campo calculado. Neste exemplo, o campo calculado é denominado "Período de cada 3 semanas em que um cliente está".
    3. No campo de fórmula, crie um cálculo similar ao seguinte:
      	WINDOW_MAX( MAX(1), -2, 0 )
    • Os cálculos do Tableau são altamente dependentes da exibição. Portanto, sem o contexto da exibição, o cálculo retornará primeiro o valor 1 para cada marca (por exemplo, linha, ponto, barra, etc.) da exibição e, em seguida, retornará para essa marca o máximo de valores 1 de duas marcas.
    • Neste exemplo, a exibição final tem uma marca para cada semana, para cada cliente do cliente. Por isso, nesse contexto, o cálculo retornará 1, se o cliente tiver uma encomenda nesta semana ou nas duas semanas anteriores. Se um cliente tiver uma compra para cada semana, esse cálculo só retornará 1, pois WINDOW_MAX () está sendo usado, em vez de WINDOW_SUM ().
    • Este cálculo sozinho retornará apenas 1 ou 0 para cada cliente. Portanto, é necessário aninhá-lo em uma WINDOW_SUM() para somar todos os valores 1 para todos os clientes. Esses cálculos devem estar em campos calculados separados, para que seja possível definir como as funções da tabela estão calculando de forma diferente.
  2. Crie um campo calculado denominado "Contagem móvel de clientes a cada 3 semanas" com um cálculo semelhante ao seguinte:
    WINDOW_SUM([Every 3 Week Period a Customer is In])
  3. Crie um campo calculado com um nome como "Primeiro filtro" e um cálculo similar ao seguinte:
    FIRST() = 0
Etapa 2 - Criar a exibição
  1. Clique com o botão direito do mouse e arraste [Data da compra] para a divisória Colunas.
  2. Na caixa de diálogo Soltar campo, selecione WEEK(Data da compra) com o ícone de calendário verde
    1. Clique com o botão direito do mouse em WEEK(Data da compra) na divisória Colunas e selecione Discreto.
    2. O campo de data precisa ser discreto, caso contrário, o gráfico de linha será quebrado por [Nome do cliente].
  3. Arraste [Nome do cliente] até Detalhe, no cartão Marcas.
    • O campo [Nome do cliente] deve estar na exibição para que os cálculos da tabela sejam realizados corretamente. Posteriormente, a exibição será filtrada para parecer que há apenas uma linha.
  4. Arraste [Contagem móvel de clientes a cada 3 semanas] até a divisória Linhas.
Etapa 3 - Editar cálculos de tabela
  1. Clique com o botão direito do mouse em [Contagem móvel de clientes a cada 3 semanas] na divisória Linhas e selecione Editar cálculo de tabela…
  2. Na caixa de diálogo Cálculo de tabela, faça o seguinte e feche a caixa de diálogo:
    1. Em Cálculos aninhados, selecione Período de cada 3 semanas em que um cliente está.
    2. Em Calcular usando, selecione Dimensões específicas. 
    3. Na lista de dimensões, verifique apenas a Semana da data da compra
    4. Em Cálculos aninhados, selecione Contagem móvel de clientes a cada 3 semanas.
    5. Em Calcular usando, selecione Dimensões específicas. 
    6. Na lista de dimensões, verifique apenas o Nome do cliente
      • Para [Período de cada 3 semanas em que um cliente está], o Tableau Desktop deve contar um período de 3 semanas por cliente. Ou seja, o Table Desktop deve contar semanas dentro de cada cliente. Quando uma dimensão estiver marcada, o cálculo de tabela será executado para todos os valores da dimensão. Quando estiver desmarcada, o Tableau Desktop nunca iniciará o cálculo para todos os valores dessa dimensão.
      • Da mesma forma, a [Contagem móvel de clientes a cada 3 semanas] deve somar todos os clientes em cada semana.
  3. Arraste [Primeiro filtro] para a divisória Filtros e clique em OK para fechar a caixa de diálogo Filtro.
  4. Clique com o botão direito do mouse em [Primeiro filtro] na divisória Filtros e selecione Calcular usando > Nome do cliente.
  5. Na caixa de diálogo Filtro, selecione Verdadeiro e clique em OK.

Informações adicionais

Observações sobre a Opção 1:
  • Este cálculo conta todos os clientes uma vez, na primeira vez em que aparecem no conjunto de dados. Isso significa que esse método não funcionará para encontrar uma contagem móvel distinta, pois a expressão FIXED não pode encontrar a data da primeira encomenda para um período móvel.
  • O cálculo na etapa 2 faz o seguinte:
    • Primeiro a expressão {EXCLUDE [Data da compra]: MIN([Data da compra])} encontra a data da primeira encomenda por cliente. Normalmente, a expressão {FIXED [Nome do cliente] seria usada: MIN([Data da compra])} para encontrar a primeira encomenda. No entanto, o escopo de EXCLUDE é definido pela instrução FIXED externa. Ou seja, a instrução EXCLUDE começa com as dimensões [Nome do cliente] e [Data da compra] e, em seguida, exclui a [Data da compra].
    • Em seguida, a instrução IF retorna 1 na data da primeira encomenda desse cliente.
    • A instrução IF retornará 1 para qualquer linha em que a data corresponda à da primeira encomenda. Isso significa que, se os dados completos tiverem vários registros para a primeira encomenda, cada uma dessas linhas será 1. Como cada cliente deverá ser contado apenas uma vez, o mínimo da instrução IF será fixado no [Nome do cliente].
    • Também é necessário adicionar a [Data da compra] à declaração de dimensão da instrução FIXED, para que a exibição final mostre a alteração ao longo do tempo.
Observações sobre a Opção 2:
  • Os cálculos do Tableau são altamente dependentes da exibição. Portanto, sem o contexto da exibição, o cálculo na etapa 2 retornará primeiro o valor 1 para cada marca (por exemplo, linha, ponto, barra, etc.) da exibição e, em seguida, retornará para essa marca o máximo de valores 1 de duas marcas.
  • Neste exemplo, a exibição final tem uma marca para cada semana, para cada cliente do cliente. Por isso, nesse contexto, o cálculo retornará 1, se o cliente tiver uma encomenda nesta semana ou nas duas semanas anteriores. Se um cliente tiver uma compra para cada semana, esse cálculo só retornará 1, pois WINDOW_MAX () está sendo usado, em vez de WINDOW_SUM ().
  • Este cálculo sozinho retornará apenas 1 ou 0 para cada cliente. Portanto, é necessário aninhá-lo em uma WINDOW_SUM() para somar todos os valores 1 para todos os clientes.
  • Esses cálculos devem estar em campos calculados separados, para que seja possível definir como as funções da tabela estão calculando de forma diferente.
Este artigo resolveu o problema?