Cómo funciona el análisis para fuentes de datos de varias tablas que usan relaciones

El uso de una fuente de datos que tiene varias tablas relacionadas afecta a la forma en que funciona el análisis en Tableau. Debido a que varias tablas relacionadas tienen dominios independientes y conservan sus niveles de detalle originales, cuando se arrastran los campos a la vista:

  • Los datos se consultan en su nivel de detalle original.
  • Solo se consultan los datos que son relevantes para una visualización.
  • Las relaciones entre las tablas afectan a los resultados de la consulta. El flujo de creación de una visualización puede variar en función de cómo se relacionan las tablas de campos entre sí en el modelo de datos o si no están relacionadas directamente.

Para saber más sobre las mejoras de las fuentes de datos y ver una introducción al uso de las relaciones, mire este vídeo de 5 minutos.

Nota: la interfaz para editar relaciones que se muestra en este vídeo y en este tema difiere ligeramente de la versión actual, pero tiene la misma funcionalidad.

Obtenga más información sobre cómo funcionan las relaciones en Las relaciones no deben asustarle y en estas publicaciones del 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.

Nota: Todavía puede crear fuente de datos de tabla individual en Tableau. Puede crear una tabla lógica mediante una combinación de uniones de filas, de columnas, SQL personalizado, etc.. El comportamiento del análisis de tabla individual en Tableau no ha cambiado. El análisis en una sola tabla lógica que contiene una mezcla de dimensiones y medidas funciona igual que en versiones anteriores a Tableau 2020.2.

Consideraciones para el análisis

Validación de relaciones

Tiene varias opciones para validar el modelo de datos para el análisis. Al crear el modelo para la fuente de datos, se recomienda ir a la hoja, seleccionar esa fuente de datos y, a continuación, crear una visualización para explorar recuentos de registros, valores esperados, valores no coincidentes, valores nulos o valores de medida repetidos. Trabaje con campos de diferentes tablas para comprobar que los resultados son los esperados.

Qué buscar:

  • ¿Las relaciones en el modelo de datos utilizan los campos coincidentes correctos para sus tablas?
  • ¿Agregar varios pares de campos coincidentes hará que la relación sea más precisa?
  • ¿Cuáles son los resultados de arrastrar diferentes dimensiones y medidas a la vista?
  • ¿Está viendo el número esperado de filas?
  • Si ha cambiado cualquiera de los ajustes predeterminados de la configuración de Opciones de rendimiento, ¿los valores que está viendo en la visualización son los que podría esperar? Si no lo son, compruebe la configuración o restablezca la configuración predeterminada.

Opciones para validar las relaciones y el modelo de datos:

  • Cada tabla incluye un recuento de sus registros, como un campo llamado TableName(Count) ajustado al nivel de detalle de la tabla. Para ver el recuento de una tabla, arrastre el campo Recuento a la vista. Para ver el recuento de todas las tablas, seleccione el campo Recuento para cada tabla en el panel Datos y, a continuación, haga clic en la tabla de texto en Mostrarme.
  • Haga clic en Ver datos en el panel Datos para ver el número de filas y datos por tabla. Además, antes de empezar a crear relaciones, ver los datos de la fuente de datos antes o durante el análisis puede ser útil para hacerse una idea del ámbito de cada tabla. Para obtener más información, consulte Ver datos subyacentes.
  • Arrastre las dimensiones a las filas para ver el Número de filas en la barra de estado. Para ver valores no coincidentes, haga clic en el menú Análisis y, a continuación, seleccione Diseño de tabla > Mostrar filas vacías o Mostrar columnas vacías. También puede arrastrar diferentes medidas a la vista, como <YourTable>(Count) desde una de las tablas representadas en la visualización. Esto garantiza que verá todos los valores de las dimensiones de esa tabla.

Consejo: si desea ver las consultas que se generan para las relaciones, puede usar el registro del rendimiento en Tableau Desktop.

  1. Haga clic en el menú Ayuda y, a continuación, seleccione Configuración y rendimiento > Iniciar registro de rendimiento.
  2. Arrastre los campos a la vista para crear la visualización.
  3. Haga clic en el menú Ayuda y, a continuación, seleccione Configuración y rendimiento > Detener registro de rendimiento. El libro de trabajo de registro de rendimiento se abrirá automáticamente.
  4. En el panel Resumen de rendimiento, en Eventos ordenados por hora, haga clic en una barra "Ejecutar consulta" y vea la consulta siguiente.

Otra opción más avanzada es utilizar Tableau Log Viewer(El enlace se abre en una ventana nueva) en GitHub. Puede filtrar por una palabra clave específica utilizando end-protocol.query. Para obtener más información, comience con la página wiki de Tableau Log Viewer(El enlace se abre en una ventana nueva) en GitHub.

Visualizaciones solo de dimensión

Al utilizar una fuente de datos de varias tablas con tablas relacionadas: si crea una visualización de solo dimensión, Tableau utiliza combinaciones internas y no verá el dominio completo sin coincidencias.

Para ver combinaciones parciales de valores de dimensión, puede:

  • Utilizar Mostrar filas/columnas vacías para ver todas las filas posibles. Haga clic en el menú Análisis y, a continuación, seleccione Diseño de tabla > Mostrar filas vacías o Mostrar columnas vacías. Tenga en cuenta que esta configuración también desencadenará la densificación para los campos Fecha y Agrupación numérica, que puede que no le interesen.
  • Agregue una medida a la vista, como <YourTable>(Count), desde una de las tablas representadas en la visualización. Esto garantiza que verá todos los valores de las dimensiones de esa tabla.

Para obtener más información, consulte también Comportamiento de valores no coincidentes para dimensiones que podrían sorprenderle y Solución de problemas del análisis de varias tablas.

Cuándo usar los cálculos y expresiones de nivel de detalle (LOD)

Dado que Tableau comprende el nivel de detalle (LOD) de las tablas de entrada, no es necesario utilizar los cálculos LOD para eliminar la duplicación no deseada debida a las uniones.

Es posible que aún desee utilizar cálculos LOD para:

  • Gestionar la duplicación no deseada en las tablas de origen.
  • Calcular agregaciones de varios niveles (por ejemplo, un promedio de una suma)
  • Realizar análisis de cohortes (por ejemplo, para calcular la primera fecha de pedido para cada cliente)

Si la dimensionalidad de un cálculo LOD incluye campos de una sola tabla, ese cálculo aparecerá en su propia tabla en el panel Datos.

Ejemplos de análisis de varias tablas

El siguiente conjunto de ejemplos muestra cómo los datos se pueden consultar a través de varias tablas relacionadas. Esta fuente de datos de varias tablas contiene una breve lista de apariciones de actores en diferentes papeles en películas.

Una fila en la tabla de Apariciones significa que un Actor interpretó un Personaje particular en una Película específica. En este conjunto de datos, un Actor puede tener cero o más Apariciones.

Obtenga más información sobre cómo funcionan las relaciones en estas publicaciones del blog de Tableau:

Ejemplo 1: Análisis de una sola pregunta en los datos unidos frente a los datos relacionados

Cuando se conectaba a datos en Tableau antes de la versión 2020.2, la fuente de datos podía constar de una sola tabla o de varias tablas en las que las filas y columnas se unían en una única tabla desnormalizada. A partir de Tableau 2020.2, Tableau reconoce y conserva datos normalizados para fuentes de datos de varias tablas, en las que los datos de las tablas permanecen separados y cada tabla mantiene su propio nivel de detalle. Los siguientes ejemplos muestran cómo difiere el análisis entre los datos de una tabla individual y las fuentes de datos de varias tablas.

Este ejemplo muestra tres tablas de datos de películas: Apariciones, Actores y Películas.

Estas tablas pueden unirse entre sí, juntando la tabla de Apariciones con la tabla de Actores (Actor = Actor) y la tabla de Apariciones con la tabla de Películas (Película = Película). Si las uniones son uniones exteriores completas, de modo que no se pierda ninguna fila, el resultado final tendrá este resultado. Tenga en cuenta que los campos que se utilizan en las cláusulas de unión aparecen dos veces.

Los datos que se reúnen en una sola tabla de esta manera se denominan no normalizados o planos.

Estos datos unidos son datos planos. Cada fila consiste en la aparición de un actor como personaje de una película (así, John Rhys-Davies tiene dos filas para El regreso del rey porque interpretó dos personajes); por lo tanto, el nivel de granularidad de los datos es el de un personaje de una película. La información que es relevante en varias filas está duplicada. La fecha de estreno de El retorno del rey está presente dos veces porque hay dos personajes de esa película en el conjunto de datos. La estatura de John Rhys-Davies está catalogada cinco veces porque hay 5 combinaciones únicas de personaje/película para él como actor.

Por lo tanto, estos datos planos tienen algunas características que hay que tener en cuenta. Por ejemplo, si quiere registrar la altura de un actor por el promedio de la ganancia bruta de sus películas, podríamos sacar la altura en las columnas y la ganancia bruta en las filas, para luego obtener el promedio de la ganancia bruta. Pero si lo hace, la vista predeterminada no parece correcta. Aquí se supone que John Rhys-Davies mide 925 cm de altura, eso es una barbaridad.

Esto se debe a que la agregación predeterminada es SUM. Hay 5 filas en los datos para él, así que obtenemos la altura verdadera de 185 cm cinco veces. Esto se puede arreglar cambiando la agregación de la altura, digamos a la media o al mínimo. Esto devuelve, efectivamente, el valor de una sola fila (ya que todas son iguales).

Cuando se modifica la agregación, las alturas son mucho más realistas. Pero ahora debemos prestar atención a la ganancia bruta media. Recuerde que Tableau tiene en cuenta las cinco filas para la altura de John Rhys-Davies. Al pensar en el promedio de ingresos brutos de las películas en las que participó, no se debería tener en cuenta el promedio de cinco filas, sino más bien el promedio de tres películas. No queremos contar dos veces las ganancias obtenidas por El retorno del rey porque haya interpretado dos personajes en la película. ¿Es eso lo que está pasando?

Haciendo algunos cálculos rápidos, las películas de El señor de los anillos deberían tener un promedio de (869 + 923 + 1119)/3, o 970,3 $. Sin embargo, el valor en el diagrama de dispersión es de 990,6 $. El promedio actual se obtiene de las cinco filas (869 + 923 + 923 + 1119 + 1119)/5.

Esto no es tan fácil de arreglar como el problema de la altura al cambiar la agregación. Es necesario usar una expresión de Nivel de detalle (LOD) para alterar el nivel de detalle que tiene en cuenta Tableau, pasando del valor predeterminado (Aparición) al nivel de Película. Se podría crear un cálculo para el nivel de detalle Ganancia bruta como {FIXED [Movie] : MIN([Gross (USD millions)])} y luego tomar el promedio de ese nuevo campo para nuestra vista.

La expresión de nivel de detalle puede entenderse como "para cada película, devuelve su ganancia bruta mínima". Esto elimina el problema de la duplicación porque la ganancia bruta siempre se devuelve por película, aunque la vista se cree con Película y Actor.

Ahora los números son correctos. John Rhys-Davies mide 185 cm de altura, y el promedio bruto de sus películas en este conjunto de datos es de 970,3. Es necesario entender cómo se replicaban los datos y cómo Tableau agregaba los datos para visualizarlos antes de comprobar que se devolvieran los valores correctos.

Datos normalizados en varias tablas

La creación de relaciones entre tablas lógicas puede parecer similar a la creación de uniones, pero en lugar de aplanar los datos en una sola tabla, con todas las réplicas que ello puede conllevar, Tableau tiene en cuenta las relaciones entre las tablas. La información se extrae de cada cuadro con el nivel de detalle apropiado y se relaciona con otros datos.

En la página Fuente de datos, no verá la vista de cuadrícula "completa" de la tabla aplanada. No existe. Tableau mantiene las tres tablas como están y simplemente establece las relaciones, reuniendo los datos necesarios según lo requiera la vista.

Para crear el mismo diagrama de dispersión, arrastre Altura y Ganancia bruta a la vista y establezca Ganancia bruta como promedio. Eso es todo. Tableau examina la forma en que los datos de cada tabla se relacionan con los datos de otras tablas relacionadas y averigua cómo debe mostrarse la altura (por actor) y cómo debe calcularse el promedio bruto (por película).

Ejemplo 2: Dimensión de una sola tabla

Si las dimensiones de su visualización provienen de una sola tabla, Tableau consulta solo una tabla y muestra los resultados de todo el dominio. Puede añadir medidas y seguir viendo todo el dominio.

Por ejemplo, si usa la fuente de datos de Apariciones en Película introducida anteriormente, al agregar el campo Actor a una visualización se obtiene la siguiente visualización:

Debido a que la única dimensión de la visualización procede de la tabla Actores, Tableau ejecutará una consulta solo con la tabla Actores. Todos los actores que aparecen en la tabla Actores aparecerán en la visualización, independientemente de si tienen alguna Aparición.

Llevar el campo Aparición Actor a la vista como medida y luego aplicar una agregación COUNT crea una vista que muestra el número de apariciones por actores. Verá que Sigourney Weaver no tiene ninguna Aparición, pero su nombre sigue en la vista.

Ejemplo 3: Dimensiones de varias tablas

Si las dimensiones de la vista provienen de varias tablas, Tableau encuentra la tabla que relaciona todas las dimensiones y muestra el dominio de esa tabla. Por consiguiente, algunos valores de las dimensiones que del Ejemplo 1 cambian.

Por ejemplo, al arrastrar un campo de la tabla Películas a la visualización, se modifica la consulta. Debido a que las tablas Películas y Actores están relacionadas por la tabla Apariciones, la consulta devuelve solamente los pares Actor/Película que existan en la tabla Apariciones.

Debido a que Sigourney Weaver no tiene ninguna Aparición en este conjunto de datos (y, por lo tanto, no está relacionada con ninguna de las Películas del conjunto de datos), los pares Actor/Película no la muestran:

Ejemplo 4: Medidas que no se pueden dividir mediante una dimensión

Si una medida no se puede dividir mediante una dimensión, Tableau utiliza esa dimensión para replicar la medida.

La siguiente visualización muestra la cantidad total recaudada por la película. Dado que ambos campos provienen de la tabla Películas, Tableau consultará solo la tabla Películas.

La tabla Películas incluye los ingresos brutos ya agregados de cada película, como se muestra en la siguiente visualización (las ganancias brutas de Infinity War no estaban disponibles en el momento en que se creó este conjunto de datos y, por tanto, aparecen como cero).

Si agrega el campo Actor a esta visualización, Tableau sabe que no puede desglosar los ingresos brutos de la película por actor, ya que esta información más granular no está disponible en el modelo de datos. En cambio, Tableau muestra los ingresos brutos de la película para cada película, y se incluye en los actores.

Ejemplo 5: Dimensión que no está relacionada jerárquicamente con una medida

Al eliminar la dimensión Película de la visualización anterior, se consulta la suma de la medida de Ganancia bruta en la película de cada Actor. El resultado es la ganancia brutal total de cada película en la que ha aparecido el actor.

En este caso, no hay una relación jerárquica entre la dimensión, el actor, la medida y la película (ya que han podido participar varios actores en la misma película). Por ejemplo, Benedict Cumberbatch y Chris Hemsworth aparecieron en Dr. Strange. En este caso, Tableau incluye la ganancia bruta de la película Dr. Strange en los totales de ambos actores.

Debido a que el mismo valor de está incluido en los totales de varios actores, Tableau no podrá sumar directamente estos valores.

Sin embargo, cuando se muestran los totales para esta visualización, tenga en cuenta que Tableau calcula correctamente el total de ganancia bruta sin incluir las películas duplicadas.

 

Solución de problemas del análisis de varias tablas

Se pueden producir las siguientes situaciones con varias tablas relacionadas. En esta tabla se describen escenarios conocidos y descripciones de alto nivel sobre cómo solucionar problemas del análisis.

Situación del análisis Descripción
Unión interna para visualizaciones solo de dimensión Es posible que no vea inmediatamente todos los valores que esperaba al agregar varias dimensiones a la misma vista. O bien, es posible que observe que agregar una nueva dimensión a la visualización de una tabla diferente hace que algunos valores desaparezcan de la visualización.

Tableau utilizará consultas que conserven la combinación de valores que existe realmente en los datos. Esto significa que verá las filas que se producirían por una unión interna de las tablas que proporcionan dimensiones a la visualización.

Si desea ver combinaciones parciales de los valores de dimensión, puede activar Mostrar filas/columnas vacías para ver todas las filas posibles o puede agregar una medida, como <MyTable>(Count), desde una de las tablas representadas en la vista para asegurarse de que ve todos los valores de las dimensiones de esa tabla.
Constantes en los cálculos En un origen de datos de varias tablas, los valores constantes se comportan como si provinieran de su propia tabla con una sola fila. Si agrega un valor constante, se comportará como si el agregado estuviera en una sola fila. Sum(10) siempre será igual a 10. Avg(10) también será siempre igual a 10. Count(10) siempre será igual a 1.

Para garantizar la compatibilidad con versiones anteriores, los valores constantes de un origen de datos de tabla de un solo ámbito se comportarán como si el valor constante se replicara para cada valor de la tabla.

Las constantes de los cálculos de nivel de fila no cambian el nivel de detalle de del cálculo de la fila. El cálculo [Ventas] + 10 se comportará como si viniera de la misma tabla que el campo [Ventas].
Forzar una unión externa Tableau se asegura de que todos los valores de medida se representan en la visualización (junto con todas las combinaciones de valores de dimensión que realmente se producen en los datos). Por lo tanto, si desea asegurarse de que está viendo todos los valores posibles en los datos, incluidos los "NULL sin coincidencia", puede hacerlo incorporando medidas a la vista de cada tabla de la hoja de trabajo.
No veo los valores de medida que esperaría de un cálculo entre tablas El dominio de un cálculo es la unión interna de sus entradas. Si no hay valores coincidentes de todas las entradas del cálculo de la medida, no se incluirán en el cálculo de la medida.

Considere la posibilidad de utilizar un cálculo LOD para transferir los valores de medida al mismo objeto antes de crear el cálculo de nivel de fila.
El cálculo para cambiar entre campos de diferentes tablas lógicas ofrece resultados inesperados Si tiene un cálculo que cambia entre campos de nivel de fila, ya sea mediante una declaración de caso, declaración de condición o una función como "IFNULL", es posible que vea resultados inesperados. Esto se debe a que este cálculo se realiza para cada fila, donde la fila es la unión interna entre las entradas del cálculo.

Otro enfoque mejor sería el de cambiar entre valores agregados, en lugar de intentar cambiar dentro del cálculo de nivel de fila. Esto también producirá una mejora en el rendimiento de casos con tablas individuales.

Alternativamente, esto es solo un problema para los cálculos que aparecen entre tablas, por lo que el uso de cálculos LOD para llevar todos los campos a la misma tabla funcionará también.

No haga esto:
SUM( IF [Parameter] == "Foo" THEN [Field 1] ELSE [Field 2] END )

Haga esto:
IF [Parameter] == "Foo" THEN SUM([Field 1]) ELSE SUM([Field 2]) END
Anulaciones inesperadas sin coincidencias Es posible que vea valores de medida asociados a un valor de dimensión NULL que no esperaba. Esto puede ser posiblemente una señal de que las relaciones en la fuente de datos se configuraron incorrectamente. También puede indicar que, en realidad, hay valores no coincidentes de la tabla que contiene la medida que no tienen ninguna fila correspondiente en la tabla de dimensiones.

En el pasado, estos datos podrían haberse perdido si se seleccionaba el tipo de unión incorrecto. Cuando se utilizan relaciones, se conservan estos valores no coincidentes. Si no desea ver los valores no coincidentes, puede excluirlos mediante un filtro.
Valores añadidos incorrectos ¿Está usando relaciones o uniones? Con las relaciones, los elementos añadidos se calculan correctamente de forma predeterminada. Al utilizar uniones, es posible que deba escribir cálculos LOD para anular la duplicación de valores.

¿Ha configurado incorrectamente las Opciones de rendimiento en las relaciones? Intente restablecer las opciones de rendimiento al valor predeterminado y vea si esto produce las agregaciones correctas.
Las dimensiones replican los valores de medida en lugar de particionarlos.

Los filtros de dimensión no producen un subconjunto de las medidas.
 Compruebe que los campos utilizados para definir relaciones son correctos.
Tableau está generando demasiadas consultas o consultas con muchas uniones a la izquierda Compruebe los registros o la grabación de rendimiento para ver cuántas consultas se generan y cuántas uniones izquierdas se utilizan. Con las nuevas capacidades de modelado de datos, Tableau genera consultas con uniones izquierdas o consultas adicionales para asegurarse de que los valores de medida no coincidentes siempre se incluyen en la visualización. Si no necesita ver los valores no coincidentes, use filtros para quitar los valores no coincidentes (NULL) de la visualización. Esto debería dar lugar a menos consultas.

Si sabe que los datos no tienen valores no coincidentes, puede establecer la configuración Integridad referencial para cada relación en "Todos los valores coinciden", en Opciones de rendimiento. Esto también dará lugar a menos consultas.

También puede reducir la complejidad de la visualización para reducir el número de consultas generadas. La eliminación de medidas y la ocultación de controles de filtro son formas clave de simplificar las consultas de varias tablas relacionadas con datos.
Las consultas tienen muchas subconsultas Compruebe los registros o la grabación de rendimiento para ver la complejidad de las consultas que genera Tableau.

Tableau genera automáticamente subconsultas para anular la duplicación de datos y, cuando es necesario, para generar agregaciones correctas. Esto es similar a las consultas generadas por los cálculos de LOD.

Si sabe que las relaciones entre las tablas lógicas de los datos tienen cardinalidad de varios a uno o de uno a uno, puede establecer esta información de cardinalidad en la relación Opciones de rendimiento. Esto permitirá a Tableau eliminar subconsultas innecesarias, ya que sabrá que no se puede realizar ninguna duplicación.
Estaba usando uniones para filtrar datos En la versión 2020.2, Tableau trabajará todo lo posible para recuperar valores no coincidentes. A veces, eso significa que usará una unión izquierda donde podría haber especificado una unión interna para filtrar intencionalmente los datos.

Si filtra los valores no coincidentes que aporta esta unión, Tableau podrá optimizar la consulta de nuevo a una unión interna.

Dependiendo de su escenario específico, podría tener sentido modelar esta unión interna como una combinación física dentro de una tabla lógica. Esto es especialmente eficaz si se utiliza una tabla que contiene medidas para filtrar una tabla de dimensiones, ya que no introducirá más replicaciones de medidas.
¡Gracias por sus comentarios!Sus comentarios se han enviado correctamente. ¡Gracias!