Los cálculos en las relaciones no deben asustarle

Los cálculos pueden ser intimidantes. Los cálculos en una fuente de datos que usa relaciones pueden parecer más intimidantes. Pero no hay razón para tener miedo de los cálculos en las relaciones.

Nota: Si aún no se siente cómodo con los principios detrás de las fuentes de datos que usan relaciones, consulte Las relaciones no deben asustarle antes de seguir avanzando.

Tipos de cálculo

Un cálculo de nivel de fila es algo que se calcula para cada registro de los datos. Por ejemplo, cada transacción de venta tiene un importe de venta, el precio, potencialmente ajustado por el porcentaje de descuento: Price * (1- ZN([Discount])). Esto se calcula fila por fila para cada transacción: los resultados se pueden entender como agregar una nueva columna en la fuente de datos para Importe de ventas.

También hay cálculos agregados. Los cálculos agregados se calculan en el nivel de detalle de la visualización y su valor depende de la estructura de la vista. Los recuentos son un ejemplo de un cálculo agregado. El valor de Count([Title]) depende de si estamos viendo el recuento por formato, autor o día de ventas.

Consulte nuestro blog(El enlace se abre en una ventana nueva) para obtener más información sobre los tipos de cálculos.

Nivel de detalle de la tabla

Dado que cada tabla de la fuente de datos de Tableau puede tener su propio nivel de detalle, la tabla a la que está asociado un cálculo tiene un gran impacto. Por ejemplo, históricamente en Tableau (antes de 2020.2, antes de las relaciones), era posible contar el número de registros en la fuente de datos creando un cálculo con el valor constante 1 y sumándolo. 1 se asignó a cada fila de la fuente de datos, por lo que la suma era igual al número de filas.

Ahora, sin embargo, ese cálculo tendría un valor de 1. No hay ningún nivel de detalle global para toda la fuente de datos y un cálculo constante reside en el área sin asignar en la parte inferior del panel Datos. Tiene su propio nivel de detalle. La suma de 1 es simplemente 1.

Como se mencionó anteriormente, los cálculos que tienen el mismo nivel de detalle que una tabla, normalmente porque contienen un campo de la tabla, pertenecen a esa tabla en el panel Datos. Por ejemplo, la concatenación de Nombre y Apellido para obtener el nombre completo de cada autor (es decir, [First Name] + " " + [Last Name]) se coloca en la tabla Autor.

Sin embargo, si tuviéramos que usar campos de varias tablas en un cálculo, el cálculo iría al área sin asignar en la parte inferior del panel Datos. Esto se denomina cálculo de nivel de fila entre tablas; requiere una combinación de nivel de fila de las tablas implicadas, lo que puede afectar al rendimiento. (Asegúrese de que la cardinalidad correcta está establecida en las Opciones de rendimiento de la relación).

Asignación del nivel de detalle

Dado que el nivel de detalle de una tabla controla lo que representan los resultados de un cálculo, es importante tener cálculos en las tablas adecuadas. Se puede utilizar una expresión de nivel de detalle fijo para extraer un cálculo en una tabla específica. El campo al que se fija la expresión (la declaración de dimensión(El enlace se abre en una ventana nueva)) determina el nivel de detalle de los resultados.

Ejemplo: Autor de libros turísticos

P: ¿En cuántos eventos de giras de libros participa cada autor?

R: Este número debe “pertenecer” a cada autor, por lo que debe ir en la tabla Author.

  • Eventos giras de libros del autor: {FIXED [Author Name] : SUM([Book Tour Events])}
  • (Esto se puede considerar en lenguaje sencillo como “el número de eventos de gira de libros asociados con cada autor”)

P: ¿Cuántos autores no están haciendo ninguna gira de libros?

R: Es tentador probar un cálculo como

  • COUNTD(IF ISNULL([Book Tour Events]) THEN ([Author Name]) END).
  • (Esto se puede considerar en lenguaje sencillo como “si el valor de Book Tour Events es nulo (NULL), se debe devolver el nombre del autor. Después, se recuenta cada nombre de autor”)

Sin embargo, se trata de un cálculo de nivel de fila entre tablas porque Book Tour Events procede de la tabla Series y Author Name es de la tabla Author. Además, los cálculos entre tablas como ese usan uniones internas, lo que significa que cuando no hay ningún valor correspondiente de ambas tablas, la fila se quita de los resultados de la unión. Lo que a su vez significa que le pedimos a Tableau que cuente algo que no existe. Tenga en cuenta que si los dos campos estuvieran en la misma tabla, sin embargo, esta sería una buena manera de hacerlo. No hay nada de malo con el cálculo tal y como está, excepto que no encaja bien con la estructura de la fuente de datos.

En su lugar, debemos indicar la presencia o ausencia de eventos de giras de libros para cada autor, y mantener esos resultados en la tabla Author. Una vez que se marcan los autores que participan en una gira de libros y los que no, podemos contar el número de ellos que no lo están haciendo.

  • ¿Participa en una gira de libros? : IF {FIXED [Author Name]: COUNT([Book Tour Events])} = 0 THEN "No" ELSE "Yes" END
  • (Esto se puede considerar en lenguaje sencillo como “Para cada autor, se debe contar el número de eventos de gira de libros. Si ese recuento es cero, se etiqueta al autor como ‘No’. De lo contrario, se le etiqueta como ‘Sí’. Al nombrar el campo “Book tour participant?”, se alinean los valores para sí y para no).

Ahora podemos contar el número de valores para No y responder a la pregunta original.

Si nuestro cálculo es Autores sin giras de libros: IF [Book tour participant?]= "No" THEN ([Author Name]) END, obtendremos una lista de autores que no están haciendo giras de libros. (Esto se puede considerar como “para cada autor, si el valor de Book tour participant? (¿Participa en una gira de libros?) es No, se debe indicar el nombre del autor”).

Si nuestro cálculo es COUNTD(IF [Book tour participant?]= "No" THEN ([Author Name]) END), obtendremos una respuesta numérica que se alojará en el área sin asignar en la parte inferior del panel Datos. ¿Por qué? Esto es porque este cálculo es un cálculo agregado.

Pregunta extra:

También es posible utilizar la estructura del cálculo Book tour participant? (¿Participa en una gira de libros?) directamente para devolver la lista de nombres de autor. IF {FIXED [Author Name]: COUNT([Book Tour Events])} = 0 THEN ([Author Name]) END . ¿A dónde iría este cálculo en el panel Datos? ¿Por qué? Pruébelo en su propia copia de Tableau Desktop o descargue este libro de trabajo para verlo. (Requiere Tableau Desktop 2020.2 o superior. Una vez en los libros de trabajo, haga clic en el cálculo en el panel Datos y seleccione Editar para abrir el editor de cálculo y ver una explicación en los comentarios del cálculo).

Recursos relacionados

¿Se siente un poco abrumado y quiere retroceder un paso? Consulte Las relaciones no deben asustarle

¿Quiere seguir explorando cómo hacer análisis complejos con relaciones? Consulte Las relaciones más profundas no deben asustarle.

Para obtener más información sobre los fundamentos técnicos de las relaciones directamente de la mano del equipo de gestión de productos, consulte la serie sobre relaciones en el blog de Tableau.

Vea también podcasts de vídeo sobre relaciones de Action Analytics(El enlace se abre en una ventana nueva), como Why did Tableau Invent Relationships?(El enlace se abre en una ventana nueva) Haga clic en "Video Podcast" en Library(El enlace se abre en una ventana nueva) para ver más.

¡Gracias por sus comentarios!Sus comentarios se han enviado correctamente. ¡Gracias!