BASE DE CONOCIMIENTO

Combinar varios campos de fecha


Publicado: 24 Apr 2017
Fecha de la última modificación: 09 Apr 2024

Pregunta

Cómo combinar múltiples campos de fecha en un solo eje o un solo encabezado de fecha.

Por ejemplo, cada pedido tiene una [Fecha de pedido] y una [Fecha de envío]. El objetivo final es mostrar un gráfico de líneas o bien una tabulación cruzada del número de pedidos hechos y enviados cada mes. Si se usa [Fecha de pedido] como eje o encabezado, el número de pedidos enviados cada mes será incorrecto, y viceversa.

Entorno

Tableau Desktop

Respuesta

En el libro de trabajo de ejemplo adjunto se utiliza el conjunto de datos de muestra Superstore para mostrar todas las opciones.
HAGA CLIC PARA EXPANDIR LA SOLUCIÓN
Opción 1: pivotar los campos de fecha
  1. Pivote los campos de fecha, de modo que solo haya un campo con datos de fecha, y un segundo campo como "Evento" que describa si el evento es "pedido hecho" o "pedido enviado" Nota: para más fuentes de datos, la dinamización puede realizarse directamente en Tableau Desktop. Para obtener información detallada, consulte Pivotar datos de columnas a filas.
  2. Haga clic con el botón derecho y arrastre [Valores de campo de tabla dinámica] al estante Filas.
  3. En el cuadro de diálogo Dejar campo, seleccione MY(Valores de campo de tabla dinámica) y haga clic en Aceptar.
  4. Haga clic con el botón derecho en [Nombres de campo de tabla dinámica] en el panel Datos y seleccione Alias...
  5. En el cuadro de diálogo Editar alias, asigne un alias más descriptivo para Fecha de pedido y Fecha de envío y haga clic en Aceptar.
  6. Arrastre [Nombres de campo de tabla dinámica] al estante Columnas.
  7. Haga clic con el botón derecho y arrastre [ID de pedido] hasta Texto en la tarjeta Marcas.
  8. En el cuadro de diálogo Dejar campo, seleccione CNTD(ID de pedido) y haga clic en Aceptar.
HAGA CLIC PARA EXPANDIR LA SOLUCIÓN
Opción 2: usar un cálculo LOD
Esta opción requiere que cada campo de fecha tenga al menos un registro para cada agrupación de fecha de la vista. En este ejemplo, cada fila es un mes; por ende, tanto [Fecha de pedido] como [Fecha de envío] debe tener al menos un pedido para cada mes.
  1. Elija un campo de fecha para crear los encabezados o el eje de fecha. Este ejemplo usa [Fecha de pedido].
  2. Haga clic con el botón derecho y arrastre [Fecha de pedido] al estante Filas.
  3. En el cuadro de diálogo Dejar campo, seleccione MDY(Fecha de pedido) con el icono # azul y haga clic en Aceptar.
  4. Haga clic con el botón derecho y arrastre [ID de pedido] hasta Texto en la tarjeta Marcas.
  5. En el cuadro de diálogo Dejar campo, seleccione CNTD(ID de pedido).
  6. Haga clic con el botón derecho en el encabezado "Número distinto de ID de pedido" en la vista y seleccione Editar alias...
  7. En el cuadro de diálogo Editar alias, escriba un nombre nuevo y haga clic en Aceptar.
  8. Cree un campo calculado con un nombre como "Pedidos enviados" con un cálculo similar al siguiente:

    MIN(
    IF DATETRUNC('month', [Fecha de pedido]) = DATETRUNC('month', [Fecha de envío])
    THEN { FIXED DATETRUNC('month', [Ship Date]) : COUNTD([Order ID]) }
    END
    )


    9. Haga doble clic en [Pedidos enviados] en el panel Datos para añadir un campo a la vista.

     
HAGA CLIC PARA EXPANDIR LA SOLUCIÓN
Opción 3: usar el scaffolding de fechas
Esta opción requiere que un campo de fecha siempre vaya delante de otro campo de fecha, y funciona mejor cuando dos campos de fecha definen un intervalo.
  1. Cree una tabla que contenga una lista maestra de todas las fechas posibles, la cual se unirá a la conexión de datos original. En este ejemplo, el nombre de esa tabla es "Lista de fechas maestra".
  2. Abra la pestaña Fuente de datos en Tableau Desktop
  3. Añada la tabla "Hoja 1" al área del lienzo.
  4. En el cuadro de diálogo Unir, haga lo siguiente:
    1. Seleccione Restantes
    2. En Fuente de datos, seleccione Fecha del pedido
    3. En Hoja 1, seleccione Fecha.
    4. Haga clic en el signo de igualdad y seleccione <=
    5. En Fuente de datos, haga clic en Añadir nueva cláusula de unión y seleccione Fecha de envío
    6. En Hoja 1, seleccione Fecha.
    7. Haga clic en el signo de igualdad y seleccione >=
  5. Seleccione Análisis > Crear campo calculado.
  6. En el cuadro de diálogo Campo calculado que se abre, siga estos pasos y haga clic en Aceptar:
    1. Asigne un nombre al campo calculado. En este ejemplo, el campo calculado se llama "Pedidos hechos".
    2. En el campo de fórmula, cree un cálculo parecido al siguiente:
      COUNTD(
      IF DATETRUNC('month', [Fecha de pedido]) = DATETRUNC('month', [Fecha])
      THEN [ID de pedido]
      END
      )
  7. Cree un campo calculado con un nombre como "Pedidos enviados" con un cálculo similar al siguiente:
    COUNTD(
    IF DATETRUNC('month', [Fecha de envío]) = DATETRUNC('month', [Fecha])
    THEN [ID de pedido]
    END
    )
  8. Haga clic con el botón derecho y arrastre [Fecha] hasta el estante Filas.
  9. En el cuadro de diálogo Dejar campo, seleccione MY(Fecha) y haga clic en Aceptar.
  10. Arrastre [Pedidos hechos] hasta Texto en la tarjeta Marcas.
  11. Haga doble clic en [Pedidos enviados] en el panel Datos para añadir un campo a la vista.
HAGA CLIC PARA EXPANDIR LA SOLUCIÓN
Opción 4: utilizar la combinación de datos
Esta opción no funcionará para un intervalo de fechas.
  1. Cree una tabla que contenga una lista maestra de todas las fechas posibles, y cree una nueva conexión para dicha lista. En este ejemplo, la conexión recibe el nombre de "Hoja1 (lista de fechas maestra)".
  2. Vaya a Datos > Sample - Superstore > Duplicar. En este ejemplo, he nombrado las dos copias de "Sample - Superstore" como "Sample - Superstore (enlace en la fecha de pedido)" y "Sample - Superstore (enlace en la fecha de envío)" para que quede más claro.
  3. Vaya a Datos > Editar relaciones...
  4. En el cuadro de diálogo Relaciones, haga lo siguiente:
    1. Para fuente de datos primaria, seleccione Hoja1 (lista de fechas maestra).
    2. Para la fuente de datos secundaria, seleccione Sample - Superstore (enlace en la fecha de pedido).
    3. Seleccione el botón de selección Personalizado.
    4. Haga clic en Añadir...
  5. En el cuadro de diálogo Añadir/Editar asignación de campos, haga lo siguiente:
    1. Haga clic en la flecha de al lado de Fecha para expandir las opciones de fecha.
    2. Seleccione el nivel de fecha que coincida con mayor granularidad con el nivel de fecha usado en la vista. En este ejemplo, la vista usa MY(Fecha).
    3. En el panel derecho, haga clic en la flecha al lado de Fecha de pedido.
    4. Seleccione el nivel de fecha correspondiente para Fecha de pedido.
    5. Haga clic en Aceptar.
  6. Repita los pasos 4-5 con "Sample - Superstore (enlace en la fecha de envío)" como fuente de datos secundaria, y añadiendo la relación MY(Fecha) = MY(Fecha de envío).
  7. Haga clic en Aceptar para cerrar el cuadro de diálogo Relaciones.
  8. En una nueva hoja de trabajo, haga clic con el botón derecho y arrastre [Fecha] desde la conexión de datos "Hoja1 (lista de fechas maestra)" hasta la vista.
  9. En el cuadro de diálogo Dejar campo, seleccione MY(Fecha) y haga clic en Aceptar.
  10. Haga clic con el botón derecho en el encabezado "Número distinto de ID de pedido" en la vista y seleccione Editar alias...
  11. En el cuadro de diálogo Editar alias, escriba un nombre más descriptivo y haga clic en Aceptar.
  12. Haga clic con el botón derecho y arrastre [ID de pedido] desde la fuente de datos "Sample - Superstore (enlace en la fecha de pedido)" hasta Texto en la etiqueta Marcas.
  13. En el cuadro de diálogo Dejar campo, seleccione CNTD(ID de pedido) y haga clic en Aceptar.
  14. Haga clic con el botón derecho y arrastre [ID de pedido] desde la fuente de datos "Sample - Superstore (enlace en la fecha de envío)" hasta Texto en la etiqueta Marcas.
  15. En el cuadro de diálogo Dejar campo, seleccione CNTD(ID de pedido) y haga clic en Aceptar.
  16. Arrastre CNTD(ID de pedido) desde Detalles en la tarjeta Marcas hasta los números de la vista y deje el campo.
  17. En el cuadro de diálogo Editar alias, escriba un nombre más descriptivo y haga clic en Aceptar.

Información adicional

Notas sobre la opción 2 (expresión de nivel de detalle):
  • Cada campo de fecha debe tener al menos un registro para el nivel de fecha usado en la vista.
  • La expresión FIXED indicará el número distinto total de pedidos enviados cada mes en [Fecha de envío] independientemente de dónde aparezca en la vista dicho mes de [Fecha de envío]. Por ejemplo, los pedidos enviados en febrero fueron realizados tanto en enero como en febrero. Por tanto, la propia expresión FIXED indicaría 59 pedidos tanto en MY(Fecha de pedido) = enero como en MY(Fecha de pedido) = febrero.
  • Toda la declaración IF está incluido en MIN() para evitar que las expresiones LOD indiquen valores duplicados dentro de una declaración IF.

Notas de la opción 3 (scaffolding de fechas):
  • También es posible enumerar todas las fechas de un nivel de fecha superior, como el primer día de cada mes. A continuación, en los pasos 4-2 y 4-5 use un cálculo de unión que establezca la fecha de la tabla original en el nivel de fecha correcto, como DATETRUNC('month', [Fecha de pedido])
  • Si no se puede añadir una tabla a la fuente de datos original con todas las fechas, cree una unión entre bases de datos a una tabla externa que contenga todas las fechas. Esta operación requiere actualizar a Tableau Desktop 10.5 o posterior para utilizar las desigualdades en cláusulas de unión en la funcionalidad de uniones entre bases de datos.
  • Esta opción duplicará los datos, lo cual es posible que afecte al resto de vistas que usen la misma fuente de datos.
  • A partir de Tableau Prep 2021.3.1, es posible crear un montaje de fechas (scaffolding) en Tableau Prep sin crear una lista de fechas. Consulte Rellenar huecos en datos secuenciales para obtener instrucciones.
Notas sobre la opción 4 (combinación de datos):
  • La combinación de datos tiene muchas limitaciones. Para obtener ayuda ante posibles problemas, consulte Solucionar problemas de combinación de datos
  • Las fechas enlazadas deben coincidir exactamente con la mayor granularidad con el nivel de fecha seleccionado en el cuadro de diálogo Relaciones.
  • Cuando se crean relaciones entre campos de diferentes fuentes de datos, cada campo solo puede estar asociado a otro campo a la vez, por lo que es necesario duplicar la fuente de datos original.
  • Todos los campos asociados a [Fecha de pedido] deben obtenerse a partir de la copia de la fuente de datos original enlazada con MY(Fecha) = MY(Fecha de pedido), y viceversa, para todos los campos asociados con [Fecha de envío].

Mostrar registros activos a lo largo del tiempo
Combinar datos
Crear expresiones de nivel de detalle en Tableau
Las declaraciones CASE e IF que contienen una expresión de nivel de detalle indican resultados imprevistos
¿Fue de ayuda este artículo para resolver el problema?