Etiqueta: filtros

LODs para filtrar dos niveles distintos de detalle o agregación

Por defecto, en ocasiones los filtros en Tableau no funcionan como podríamos en principio esperar. Un claro ejemplo en este sentido y que me he encontrado en varios clientes es cuando queremos filtrar, en base a una medida agregada, dos gráficos con distintos niveles de detalle. Vamos a ver como podemos solucionar esto con un sencillo cálculo LOD.

Ejemplo

Veamos un ejemplo para que quede más claro. Tenemos un dashboard con dos gráficos. Uno muestra el beneficio, las ventas y el margen de beneficio (la suma del beneficio – SUM([Profit]) – dividido por la suma de ventas – SUM([Sales]) -)  de nuestra empresa para cada una categoría de producto disponible. El segundo, muestra esas mismas variables en una tabla, pero para cliente de la empresa.

Ahora supongamos que queremos filtrar el dashboard en base al margen de beneficio de cada cliente. Tal vez queramos analizar los datos sólo de clientes con un margen positivo, o un margen negativo. Si incluimos el margen de beneficio en filtros y aplicamos dicho filtro a los dos gráficos ¿Qué ocurre?

 

 

Como podemos ver en la imagen de arriba si nos fijamos en los totales includos en la parte superior de cada gráfico, no estamos obteniendo los mismos resultados ¿Por qué? Al fin y al cabo estamos utilizando el mismo filtro para ambos gráficos.

El motivo es el distinto nivel de detalle de cada uno. Nuestro filtro Profit Ratio utiliza el cálculo SUM([Profit]) / SUM([Sales]). Pero para el gráfico de barras el nivel de detalle es la subcategoría (es decir, Profit Ratio nos devuelve dicha medida para cada una de las subcategorías), mientras que la tabla el nivel de detalle es el cliente (Profit Ratio por cliente).

Por tanto, cuando filtramos valores con un Profit Ratio de menos del 10%, estamos filtrando por un lado categorías con un Profit Ratio inferior a dicha cifra, mientras que en la tabla estamos filtrando clientes con un Profit Ratio inferior a dicha cifra. Los resultados, por tanto, no tienen nada que ver.

Utiliza un cálculo LOD

No contamos con la dimensión cliente en nuestro gráfico de barras, y además si lo incluimos en el nivel de detalle, no tendremos una barra para cada subcategoría, sino que cada una de estas se dividirá, mostrando una marca para cada uno de los clientes ¿Cómo podemos solucionar esto y filtrar, para ambos gráficos en base al margen de beneficio de los clientes?

 

Aquí es cuando utilizar LOD es extremadamente útil ya que lo que queremos no es filtrar en base al margen de beneficio. Queremos filtrar en base al margen de beneficio de cada cliente. Es decir, lo que queremos es una variable que fije el cálculo del margen de beneficio para cada cliente independiente del nivel de detalle que tengamos en la visualización. Es decir:

 

Profit Ratio by Client = { FIXED [Customer Name] : [Profit Ratio] }

 

Recordad que al utilizar un cálculo LOD debemos utilizar una medida agregada – SUM([Sales]) o AVG([Sales]) por ejemplo – pero en este caso particular, al ser Profit Ratio un cálculo ya agregado – SUM([Profit]) / SUM([Sales]) – nuestro nuevo cálculo funcionará perfectamente.

 

Perfecto, ahora ya tenemos un cálculo que nos devuelve el margen de beneficio a nivel de cliente. Por lo que utilizaremos este nuevo cálculo como filtro. Pero ojo, porque si simplemente arrastramos el nuevo cálculo a filtros, por defecto estará filtrando utilizando la SUMA del nuevo cálculo. Lo cual funcionará sin problemas en nuestra tabla con el nivel de detalle del cliente, pero no en nuestro gráfico de barras, ya que lo que hará será sumar el margen de beneficio de cada uno de los clientes incluidos en las ventas de esa categoría.

 

Para asegurarnos de que el filtro funciona correctamente, arrastamos haciendo click con el botón derecho del ratón nuestra nueva medida a filtros, y seleccionamos ‘All Values’ para que el filtro muestre valores sin agregarlos al nivel de la subcategoría.

 

 

Comprobando los resultados

Si ahora utilizamos este filtro en los dos gráficos, los totales coinciden, porque estamos especificando a Tableau que el cálculo del margen de beneficio sea siempre al nivel de detalle del cliente, y estamos utilizando dicho filtro para ambos gráficos.

 

 

Ahora, incluso aunque filtremos valores inferiores al 10%, vemos que contamos aun con categorías con un margen de beneficio menor. Ya que Tableau no está filtrando para el gráfico de barras las categorías que, en total, tienen un margen de beneficio menor al 10%, sino que está filtrando los clientes con un margen de beneficio superior al 10% que tienen alguna venta de la subcategoría en cuestión.

Vemos además como las cifras totales de beneficio, ventas y margen de beneficio cuadran en ambos gráficos, lo que demuestra que estamos filtrando exactamente los mismos datos en ambos casos.

Novedades en Tableau 10 (II): Filtros a través de distintas bases de datos

Para mi esta es la gran novedad de Tableau 10 y la que más impacto tiene en mi día a día. Antes de Tableau 10, para utilizar un filtro en varias bases de datos al mismo tiempo había que crear un parámetro para que este, a través de un campo calculado en cada una de las bases de datos, actuara como un filtro. El problema es que los parámetros no pueden ser de opcion múltiple por ejemplo, y aunque este método era suficiente en la mayoría de casos, tenía sus limitaciones y llevaba más trabajo.
Ahora no obstante, podemos por fin filtrar con un único filtro distintas bases de datos siempre que haya una relación establecida entre las mismas. Vamos a ver como.

¿Cómo filtrar a través de varias bases de datos en Tableau 10?
 
Lo primero que haremos será conectarnos a dos bases de datos independientes. Para este ejemplo, utilizaré dos de las que vienen por defecto en Tableau: World Indicators y World Bank Indicators.
Como se puede ver en las imágenes, cada base de datos tiene una serie de medidas muy diferente, y tienen algunas dimensiones que podrían ser similares, en concreto Country, Region y Year. Si estuvieramos utilizando Tableau 9, y quisiéramos filtrar por país un dashboard que utiliza las dos bases de datos, tendríamos que crear un parámetro con todos los países, crear en cada base de datos un campo calculado similar a: Parametro=Country, y utilizar dicho campo en cada uno de los gráficos del dashboard, asegurándonos que marcamos sólo la opción True. De este modo, Tableau sólo mostrará los datos correspondientes al país de nuestra base de datos que es igual que la opción seleccionada en el parámetro.
¿Cuál es la diferencia en Tableau 10? Muy sencillo, vamos a crear una simple tabla con la dimensión de País (Country) de ambas bases de datos. Arrastramos Country/Region de World Bank Indicators al estante de Filas y hacemos lo mismo con el campo Country de World Indicators. Esto será lo que obtendremos:
Si observamos la esquina superior derecha de la imagen, vemos el icono de cada una de nuestras bases de datos. El de World Bank Indicators con una marca azul, y el de World Indicators con una marca naranja. Esto nos está indicando cual de las dos fuentes de datos es la primera (la azul) y cual la secundaria (la naranja). La base de datos que utilizamos en primer lugar en una visualiación, siempre será la primaria. En mi caso, como he arrastrado primero la dimensión de Country/Region de World Bank Indicators, esta base de datos es mi base de datos primaria. Cabe destacar además que la fuente de datos que es primaria o secundaria puede variar en cada hoja de Tableau si altero el orden en el que utilizo alguna variable de cada base de datos en otra visualización dentro del mismo workbook. Además de las marcas que nos indican la fuente de datos primaria y secundaria, vemos también que hay un icono naranja en la pildora Country que tengo en segundo lugar en el estante de filas. De nuevo esto nos indica que ese campo proviene de la fuente de datos secundaria.
Aun más importante, si observamos nuestra visualización, en este caso una tabla, vemos que estamos obteniendo los datos correctos para el campo Country/Region que proviene de nuestra fuente primaria. En cambio, de la fuente secundaria sólo estamos obteniendo el símbolo * ¿Por qué? ¿Hay algún error en nuestra base de datos? Ninguno. Lo único que tenemos que hacer es establecer una relación entre nuestras bases de datos.
¿Qué son las relaciones entre bases de datos?
Básicamente se trata de los campos que Tableau identifica como relacionados entre dos bases de datos. Estos campos se identifican con un pequeño icono similar al eslabón de una cadena, y nos permiten realizar, por ejemplo, data blending entre varias fuentes de datos y, lo que nos interesa en este post, filtrar a través de bases de datos.
Por defecto, Tableau identificará campos que tienen exactamente el mismo nombre en dos bases de datos distintas como posibles campos a relacionar. Sin embargo, en nuestro ejemplo el nombre del campo país es distinto, por lo que Tableau no lo identifica automáticamente. Tendremos que definir manualmente la relación entre nuestra base de datos ¿Cómo hacemos esto? Muy sencillo, hacemos click en el menú Data (Datos) y luego en Edit Relationships… (Editar Relaciones…).
Vemos que en nuestro caso ya existe una relación entre la base de datos primaria y la secundaria basada en el campo Region. Como decía antes, al tener el mismo nombre, Tableau lo identifica como un campo que podemos enlazar entre las dos bases de datos. Si en esa ventana hacemos click en Custom y posteriormente en Add…, podremos definir nuevos campos que relacionar entre las bases de datos.
Para nuestro ejemplo, vamos a seleccionar el campo Country/Region de la base de datos primaria y el campo Country de la base de datos secundaria. y hacemos click en ok. Podemos además añadir tantas relaciones como queramos y utilizar campos distintos como enlace en cada visualización. En nuestro caso volvemos a hacer click en Ok para confirmar nuestra relación.
Si miramos de nuevo a nuestras dimensiones de la base de datos secundaria, veremos que ahora el campo Country tiene un icono junto a él similar al de un eslabón de cadena, con una barra en medio y en color gris. Esto nos indica que podemos enlazar dicho campo con la base de datos secundaria, pero que ahora mismo no está activado.
Si hacemos click en ese icono cambiará a color naranja y desaparecerá la barra en mitad de la cadena, y ahora podemos ver lo que ha ocurrido en nuestra visualización:
Efectivamente, ahora nos aparecen correctamente todos los países de nuestra base de datos secundaria junto al campo de la base de datos primaria. Ahora podemos crear una visualización con nuestra base de datos World Bank Indicators, por ejemplo, Pasajeros por Aire en cada país, y otra distinta con nuestra base de datos World Indicators, por ejemplo, un diagrama de dispersión de la mortalidad infantil y el uso de internet, y poner ambas en un mismo dashboard.
A continuación incluimos el filtro de país para una de ellas desde el dashboard a través de la pestaña de la visualización, filtros y seleccionando el campo de país:
Y por último hacemos click en la pestaña del filtro y en la opción Apply to Worksheets veremos una opción que no teníamos antes en Tableau 9: All Using Related Data Sources. Hacemos click en dicha opción y ahora el filtro de País afectará a todas las visualizaciones que hayamos creado en nuestro dashboard con alguna de esas dos bases de datos.
Ahora podemos seleccionar solo algunos de los países utilizando el filtro y ambos gráficos mostrarán sólo los países que hayamos seleccionado. Incluso si estamos utilizando un filtro de opción múltiple.
Además podemos también seleccionar la opción Selected Worksheets en el filtro si no queremos que el filtro afecte a todos los gráficos y sólo queremos que afecte a algunos en concreto a nuestra elección.

Herramientas de Alteryx para la preparación de datos II: Filter

Después de un largo tiempo sin hablar de Alteryx, hoy vamos a hablar rápidamente de otra de las herramientas más sencillas de utilizar: Filter (Filtrar)

 

La herramienta filtrar se encuentra, al igual que Sample en la pestaña de Preparación de datos (Preparation) y como su propio nombre indica nos permite filtrar nuestra base de datos de forma rápida y sencilla, dividiéndola en dos. Por un lado tendremos el output «T» o «True» (es decir, los registros de la base de datos que cumplen la condición que indiquemos) y el output «F» o «False» (aquellos registros que no cumplen dicha condición).
Al arrastrar la herramienta sobre la zona de trabajo y hacer click sobre ella, veremos las siguientes opciones de configuración:

 

La herramienta Filter, como se puede observar, tiene dos opciones básicas, Basic Filter (filtro básico) y Custom Filter (filtro personalizado).
La opción básica cuenta con 3 campos clave, en el primero de ellos seleccionaremos la cabecera o columna sobre la que queremos filtrar. En el segundo, a través del menú desplegable, definiremos el tipo de instrucción que queremos para el filtro (si es mayor que, menor que, igual a, no es nulo, contiene ciertos caracteres, etc.) y en el último de ellos estableceremos la condición concreta para filtrar.
Cabe destacar que dependiendo del tipo de columna de que se trate (numérica, cadena / texto o fecha) las opciones que tendremos en el menú desplegable serán diferentes. Así, si se trata de un campo numérico, las opciones que tendremos son igual, distinto, menor, menor o igual, mayor, mayor o igual, es nulo o no es nulo:
Si se trata de un campo de texto, las opciones que tendremos son igual, no es igual, antes de, después de, contiene, no contiene, es nulo, no es nulo, vacío o no es vacío:
Y si se trata de un campo con formato Fecha, obtendremos las mismas opciones que en el caso de un valor numérico, pero pudiendo definir la fecha a través de un calendario desplegable:
Si con los filtros básicos no tenemos suficiente, podemos entonces seleccionar el filtro personalizado, En el filtro personalizado tenemos dos zonas clave, la superior donde podemos seleccionar los distintos campos disponibles en la base de datos, ver las funciones disponibles o las expresiones que hayamos guardado previamente, y la zona inferior, donde definiremos la expresión que se utilizará para filtrar la base de datos.
Las funciones se encuentran además agrupadas por tipos, disponiendo así de distintas funciones según queramos crear un filtro condicional, un filtro de fecha, en base al fichero, financiero, matemático, espacial, de texto, etc. Pudiendo además hacer doble click en una expresión, de forma que aparecerá directamente en el apartado inferior de «Expresión», y pudiendo definir el campo a utilizar y la condición concreta. Así, por ejemplo, podemos definir un filtro mucho más especifico, y filtrar sólo los consumidores cuyas primeros 5 caracteres en el nombre sean «David».

De este modo, en el output «T» (Verdadero) de la herramienta Filter tendremos todos aquellos registros en los que los 5 primeros caracteres del campo Customer Name sean «David», es decir, aquellos en los que se cumple la condición establecida. Mientras que en el output «F» (Falso) tendremos el resto de registros que no cumplen dicha condición.En resumen, una herramienta muy sencilla de usar, pero que permite crear filtros avanzados rápidamente, con la ventaja además de contar con 2 outputs distintos con los que seguir trabajando a posteriori.

Parámetros V: Cómo utilizar parámetros para cambiar de gráfico

Una de las claves para crear un dahsboard efectivo es mostrar suficiente información pero sin llegar a sobrecargar el mismo, lo que llevaría a una menor capacidad de comunicación de la información que estamos mostrando y por tanto menor efectividad e impacto del mismo. Que sea tan fácil analizar y crear gráficos con Tableau hace que sea también más fácil que nos olvidemos de la importancia de dicha efectividad y acabemos mostrando en una misma pantalla más información de la recomendable.
No obstante, podemos también utilizar un parámetro para que el usuario eliga el gráfico que quiere visualizar, de forma que no se muestren varios gráficos al mismo tiempo, ganando facilidad de lectura y fomentando la interacción del usuario ¿Cómo se puede hacer esto? Lo explico a continuación en unos sencillos pasos.

Imaginemos que queremos que en vez de mostrar 2 gráficos en la misma pantalla, sea el usuario el que decida que gráfico quiere ver. Lo primero que tendremos que hacer es crear los dos gráficos en Tableau, del mismo modo que siempre. Para este ejemplo he creado primero un Treemap mostrando todos los productos de mi base de datos, donde el tamaño indica la cantidad vendida de cada producto y el color indica el descuento medio realizado. Es importante además que las dos visualizaciones se muestren como «Entire View» (Pantalla completa):

En segundo lugar he creado un diagrama de dispersión, con el beneficio en el eje X, las ventas en el eje Y y la media de descuento en color:

Ahora es cuando tendremos que crear el parámetro que permita elegir entre estos dos gráficos. En este caso se tratará de un parámetro de tipo String (Cadena) que muestre el texto de cada uno de los gráficos a mostrar:
Como siempre que estamos utilizando parámetros, el siguiente paso es mostrar el control del parámetro en ambos gráficos. Y a continuación creamos el campo calculado en el que utilizaremos el parámetro creado. En este caso el campo calculado no podría ser más sencillo, simplemente vamos a indicar en el campo calculado el nombre de nuestro parámetro:
Ahora tendremos que utilizar dicho campo calculado. Lo que haremos es lo siguiente:
1) Asegurarnos que en el primer gráfico está seleccionado la opción del parámetro que corresponde. Es decir, en nuetro caso, en la pestaña del Treemap, que en el control del parámetro está actualmente seleccionado «Treemap».
2) Arrastramos el campo calculado que hemos creado a la tarjeta de filtros. Nos aparecerá sólo la opción «Treemap» en el filtro, la seleccionamos y aceptamos.
3) Ahora vamos a la pestaña donde se encuentra el segundo gráfico, el diagrama de dispersión. Seleccionamos en el control del parámetro «Diagrama de dispersión», volvemos a arrrastrar el campo calculado creado a la tarjeta de filtros y seleccionamos la opción «Diagrama de dispersión».
4) Lo que hemos hecho hasta ahora ha sido utilizar el parámetro como filtro en ambos gráficos, de forma que, si ahora volvemos a nuestro Treemap, veremos que no aparece nada en la visualización. Esto es que vamos por buen camino, si en dicha pestaña del Treemap ahora cambiamos la selección del parámetro, debería aparecernos el gráfico correspondiente, pero entonces si vamos de nuevo a la pestaña del diagrama de dispersión, no veremos dicha visualización.
5) Creamos un nuevo dashboard (o utilizamos el que tengamos creado y donde queramos utilizar ambos gráficos) y arrastramos sobre el mismo un contenedor (Container) horizontal o vertical.
6) Ahora arrastramos los dos gráficos dentro del contenedor. 
7) Por último, pero también muy importante, ocultamos los títulos de ambos gráficos. De lo contrario siempre se verá el título del otro gráfico y se perderá la efectividad de la visualización.
Este es el resultado final:
Ahora, si cambiamos el parámetro en el dashboard, aparecerá uno u otro gráfico, ganando espacio en la visualización y además involucrando al usuario final en el mismo, al poder optar por ver uno u otro gráfico.