BASE DE CONOCIMIENTO

Calcular un conteo acumulado o móvil distinto


Publicado: 07 Nov 2015
Fecha de la última modificación: 20 Jul 2023

Pregunta

Cómo calcular un conteo acumulado o móvil distinto de una dimensión.

Por ejemplo, el total acumulado de los clientes únicos que tengan un pedido en todo el período de tiempo, o bien un total móvil de clientes únicos que realizaron un pedido en un período de tiempo específico, como las últimas tres semanas.

Entorno

Tableau Desktop

Respuesta

En el libro de trabajo de ejemplo adjunto, se usa el conjunto de datos de ejemplo Superstore para realizar una demostración de las instrucciones siguientes.
HAGA CLIC PARA EXPANDIR LOS PASOS
Opción 1: usar FIXED para encontrar el valor distinto del conteo acumulado
Nota: este método no es válido para encontrar un conteo distinto móvil.
  1. Seleccione Análisis > Crear campo calculado.
  2. En el cuadro de diálogo Campo calculado que se abre, siga estos pasos y después haga clic en Aceptar:
    1. Asigne un nombre al campo calculado. En este ejemplo, el campo calculado se denomina “Primer pedido del cliente”.
    2. En el campo de fórmula, cree un cálculo similar al siguiente:
      { FIXED [Customer Name], [Order Date] : MIN(
      IF [Order Date] = { EXCLUDE [Order Date] : MIN([Order Date])}
      THEN 1
      ELSE 0
      END
      ) }
      
  3.  Cree un campo calculado con un nombre como “COUNTD acumulado preciso de clientes” con un cálculo similar al siguiente:
    RUNNING_SUM(SUM([Count Customer's 1st Order]))
  4. Haga clic con el botón derecho y arrastre [Fecha de pedido] a la vista.
  5. En el cuadro de diálogo Dejar campo, seleccione WEEK(Fecha de pedido) con el icono de calendario verde.
  6. Arrastre [COUNTD acumulado preciso de clientes] al estante Filas.
HAGA CLIC PARA EXPANDIR LOS PASOS
Opción 2: usar funciones de tabla para encontrar el valor distinto de conteo móvil
Nota: es probable que esta solución cause problemas de rendimiento, ya que la vista final debe contener todas las dimensiones necesarias para realizar el cálculo de tabla.
Paso 1: crear 3 campos calculados
  1. Seleccione Análisis > Crear campo calculado.
    1.  En el cuadro de diálogo Campo calculado que se abre, siga este procedimiento y haga clic en Aceptar:
    2. Asigne un nombre al campo calculado. En este ejemplo, el campo calculado se denomina “Período cada 3 semanas en que se encuentra un cliente”.
    3. En el campo de fórmula, cree un cálculo similar al siguiente:
      	WINDOW_MAX( MAX(1), -2, 0 )
    • Los cálculos de Tableau dependen en gran medida de la vista. Por lo tanto, sin el contexto de la vista, este cálculo primero indicará el valor 1 de cada marca (por ejemplo, fila, punto, barra, etc.) en la vista y, a continuación, devolverá el máximo de esos unos de las dos marcas de nuevo a esta marca.
    • En este ejemplo, la vista final tiene una marca por cada semana de cada cliente. Por lo tanto, con ese contexto, este cálculo indicará 1 si el cliente realizó un pedido en la semana actual o en las dos semanas anteriores. Si un cliente realizó un pedido cada semana, este cálculo seguirá indicando únicamente 1, ya que usaremos WINDOW_MAX() en lugar de WINDOW_SUM().
    • Este cálculo por sí solo indicará únicamente un 1 o 0 por cada cliente. Por lo tanto, necesitamos anidar este cálculo en una función WINDOW_SUM() para sumar todos los unos de todos los clientes. Estos cálculos deben estar en campos calculados separados para que podamos definir cómo se calcularán las funciones de tabla de forma distinta.
  2. Cree un campo calculado con un nombre como “Conteo móvil de clientes cada 3 semanas” con un cálculo similar al siguiente:
    WINDOW_SUM([Every 3 Week Period a Customer is In])
  3. Cree un campo calculado llamado como "Primer filtro" con un cálculo similar al siguiente:
    FIRST() = 0
Paso 2: crear la vista
  1. Haga clic con el botón derecho y arrastre [Fecha de pedido] al estante Columnas.
  2. En el cuadro de diálogo Dejar campo, seleccione WEEK(Fecha de pedido) con el icono de calendario verde.
    1. Haga clic con el botón derecho en WEEK(fecha de pedido) en el estante Columnas y seleccione Discreto.
    2. El campo de fecha tiene que ser discreto, ya que, de lo contrario, el gráfico de líneas se desglosaría por [Nombre de cliente].
  3. Arrastre [Nombre de cliente] a Detalle en la tarjeta Marcas.
    • El campo [Nombre de cliente] debe estar en la vista para que los cálculos de tabla se realicen correctamente. Después, filtraremos la vista para que parezca que solo hay una línea.
  4. Arrastre [Conteo móvil de clientes cada 3 semanas] al estante Filas.
Paso 3: editar cálculos de tabla
  1. Haga clic con el botón derecho en [Conteo móvil de clientes cada 3 semanas] en el estante Filas y seleccione Editar cálculo de tabla…
  2. En el cuadro de diálogo Cálculo de tabla, siga este procedimiento y cierre el cuadro de diálogo:
    1. En Cálculos anidados, seleccione “Período cada 3 semanas en que se encuentra un cliente”.
    2. En Calcular usando, seleccione “Dimensiones específicas”.
    3. En la lista de dimensiones, seleccione solo “Semana de fecha de pedido”.
    4. En Cálculos anidados, seleccione “Conteo móvil de clientes cada 3 semanas”.
    5. En Calcular usando, seleccione “Dimensiones específicas”.
    6. En la lista de dimensiones, seleccione solo “Nombre de cliente”.
      • En [Período cada 3 semanas en que se encuentra un cliente], queremos que Tableau Desktop contabilice cada período de 3 semanas en que se encuentre un cliente por cliente. Es decir, queremos que Tableau Desktop contabilice las semanas dentro de cada cliente. Al seleccionar una dimensión, el cálculo de tabla se ejecutará por cada valor de la dimensión. Al desactivar una dimensión, Tableau Desktop iniciará el cálculo por cada valor de esa dimensión.
      • De forma similar, queremos que [Conteo móvil de clientes cada 3 semanas] sume todos los clientes de cada semana.
  3. Arrastre [Primer filtro] al estante Filtros y, a continuación, haga clic en Aceptar para cerrar el cuadro de diálogo Filtro.
  4. Haga clic con el botón derecho en [Primer filtro] en el estante Filtros y seleccione Calcular usando > Nombre de cliente.
  5. En el cuadro de diálogo Filtro, seleccione Verdadero y haga clic en Aceptar.

Información adicional

Notas sobre la opción 1:
  • Este cálculo contabiliza cada cliente una vez (la primera vez que aparece en el conjunto de datos). Esto quiere decir que el método no es válido para encontrar un conteo distinto de movimiento, ya que la expresión FIXED no puede encontrar la fecha del primer pedido de un período de tiempo móvil.
  • El cálculo del paso 2 realiza lo siguiente:
    • Primero, la expresión { EXCLUDE [Fecha de pedido]: MIN([Fecha de pedido])} encuentra la fecha del primer pedido por cliente. Normalmente, usaríamos la expresión { FIXED [Nombre de cliente]: MIN([Fecha de pedido])} para encontrar el primer pedido. Sin embargo, el alcance de EXCLUDE se establece mediante la instrucción FIXED exterior. Es decir, que la instrucción EXCLUDE empieza con las dimensiones [Nombre de cliente] y [Fecha de pedido] y, a continuación, excluye [Fecha de pedido].
    • Después, la instrucción IF indica 1 en la fecha, que es la fecha del primer pedido de ese cliente.
    • La instrucción IF indicará 1 en cualquier fila donde la fecha coincida con la fecha del primer pedido. Esto quiere decir que, si los datos subyacentes tienen varios registros para ese primer pedido, cada una de esas filas será 1. Como solo queremos contabilizar una vez a cada cliente, el mínimo de la instrucción IF se fija en [Nombre de cliente].
    • También necesitamos añadir [Fecha de pedido] a la declaración de dimensión de la instrucción FIXED para que la vista final muestre el cambio en un período de tiempo.
Notas sobre la opción 2:
  • Los cálculos de Tableau dependen en gran medida de la vista. Por lo tanto, sin el contexto de la vista, el cálculo del paso 2 primero indicará el valor 1 de cada marca (por ejemplo, fila, punto, barra, etc.) en la vista y, a continuación, devolverá el máximo de esos unos de las dos marcas de nuevo a esta marca.
  • En este ejemplo, la vista final tiene una marca por cada semana de cada cliente. Por lo tanto, con ese contexto, este cálculo indicará 1 si el cliente realizó un pedido en la semana actual o en las dos semanas anteriores. Si un cliente realizó un pedido cada semana, este cálculo seguirá indicando únicamente 1, ya que usaremos WINDOW_MAX() en lugar de WINDOW_SUM().
  • Este cálculo por sí solo indicará únicamente un 1 o 0 por cada cliente. Por lo tanto, necesitamos anidar este cálculo en una función WINDOW_SUM() para sumar todos los unos de todos los clientes.
  • Estos cálculos deben estar en campos calculados separados para que podamos definir cómo se calcularán las funciones de tabla de forma distinta.
¿Fue de ayuda este artículo para resolver el problema?