Radar Charts

What gifts do people plan to spend money on Valentine’s Day?

 By: Rosario Gauna @rosariogaunag

For week 7 of #WorkoutWednesday, @lorna_eden prepared and delighted us with a challenge with a design and information especially dedicated to the date: What gifts do people plan to spend money, on Valentine’s Day?

In her challenge, Lorna indicates that she is looking for reinforcement in several areas, one of them, the handling of Radar Chart.

This blog will focus on the process of building Radar Chart, a type of chart that often has the label of “complicated”. I hope to help in this blog, to leave behind the negative labels with respect to working with this type of chart.

I share below the procedure I followed to create the radar charts per year that asks us the Lorna challenge.

DATA MODELING

Step 1: Pivot data from Columns to Rows

Since in the data file the information for each type of gifts is shown in independent columns, the first step that is required is to convert those columns into rows. This in order to facilitate working the data in Tableau.

For which, after you have set up the data source, in the grid, select the 7 columns corresponding to the names of the gift types. Click the drop-down arrow next to the column name, and then select Pivot.

This operation creates two new columns called “Pivot field names” and “Pivot field values” are created and added to the data source. The two new columns replace the 7 original columns that you selected to create the pivot.

Picture2

Step 2: Rename the new columns created in the Pivot.

To give a meaning more consistent with the data handled, the two new columns will be renamed:

  • “Pivot field names” will be renamed “Type of Gift”
  • “Pivot field values” will be renamed “Percent Buying”

CALCULATE BASIC VARIABLES

As I read this week’s challenge, I immediately recalled a previous challenge from @LukeStanke on Radio Charts at week 10 of  # WorkoutWednesday2018. In that challenge, Luke included within the spoilers the following formulas for the calculation of coordinates (x, y).

  • Radius * SIN(2 * PI() * [Percent of Circle]) will return your X-axis
  • Radius * COS(2 * PI() * [Percent of Circle]) will return your Y-axis

These formulas will also be very useful in solving this week’s challenge.

If you aren’t familiar with these formulas, I ask you not to worry, because in this blog we will review the basic concepts of its operation and you will be able to verify for yourself that it’s precisely these formulas that will make the hard work for us and not the other way around.

To use the formulas for the calculation of coordinates (x, y), we must previously calculate two basic variables: “Percent of Circle” and “Radius”.

Step 3: Calculate the “Percent of Circle” field.

This variable will determine the position that each of the types of gifts will occupy, seeking to distribute them uniformly within a range between 0 and 1.

For your calculation you should consider: 1) The order in which each type of gift will be displayed, 2) The total number of types of gifts that will be graphed, which in this exercise is 7.

This will help us to have each type of gift have a position within an imaginary circle (as if there will be 7 stops within the rotation of a few hands of clock), depending on the order in which each type of gift will be displayed.

For this calculation, I preferred the use of a simple formula in order to focus on better understanding what is sought.

Percent of Circle =

CASE [Type of Gift]

WHEN ‘Jewelry’ THEN 0/7

WHEN ‘Greeting   cards’ THEN 1/7

WHEN ‘Gift  card/gift certificate’ THEN 2/7

WHEN ‘Flowers’ THEN 3/7

WHEN ‘Clothing’ THEN 4/7

WHEN ‘Candy’ THEN 5/7

WHEN ‘An  evening out’ THEN 6/7

END

We already have the first of the two basic calculations, nothing complicated, right?

Step 4: Calculate the “Radius” field.

The “Radius” is intended to help determine how far away from the center of our imaginary circle will be each point. The higher the percentage of purchases by type of gift, the point will be further from the center.

In this exercise, the original data contains the percentage of purchases of each type of gift. Therefore, we will only take the data, without the need for additional calculations.

Radius = SUM([Percent Buying])

So easy, we already have the second variable required by the formulas of the coordinates.

CALCULATING COORDINATES

Step 5: Calculate coordinates (x, y).

At this point, we will see how the formulas for obtaining coordinates (x, y) will make the work really difficult for us.

x = [Radius] * ATTR (SIN (2 * PI () * [Percent of Circle]))
y = [Radius] * ATTR (COS (2 * PI () * [Percent of Circle]))

In the following image, an example with the information of the year 2018, of the basic data calculated in steps 3 and 4 is shown. And as after the formulas are applied, they are transformed into coordinates (x, y).

Picture3

DEFINITION OF THE CHART

Step 6: Create chart.

For the creation of the chart it is necessary to filter the data to work only with those that meet the condition of Tableau = “Null”. This is because the data included additional records in order to create a heart image in an independent chart and that should not be considered for this chart.

To create the radar chart, you must select the option of polygons in the mark’s menu. Remember that polygons are points that are connected by lines that surround an area.

In this exercise, the points to be connected will be located in the previously calculated coordinates and you must indicate on the “Path” shelf, the order in which the lines will be drawn to connect the points. By joining the points or vertices of the polygon, the radar images will be formed.

Move to the shelves of:

  • Filters ⬅  Filter the data: Keep those that meet the condition Tableau = NULL
  • Columns ⬅  “x”
  • Rows ⬅  “y”
  • Color ⬅  “Year” sorted descending, to create a radar per year
  • Tooltips ⬅  “Percent buying”
  • Path ⬅  “Type of Gift”

In color, use the 25% opacity effect and the border effect to create the line around each polygon.

The chart uses a double axis to include small circles at each vertex in the polygon.

For which a copy of the variable “y” is included in the “Rows” shelf and the “Circle” mark is selected for the second axis.

Picture4

Adjust the tooltips and the formats.

I hope this blog has helped to break down the negative labels that radar charts are complicated and that they feel comfortable trying their own creations with new data.

Thanks Lorna, for preparing us such a special challenge for Valentine’s Day.

Link to challenge

Picture0

I take this opportunity to thank you, because I’m very moved by all the messages of support received. It’s an incredible honor for me, to be part of the Tableau Zen 2019 group.

I want to especially thank all those people who have supported me in my learning and who have motivated me to try new challenges.

I hope to continue having fun with new learnings and continue having the privilege of being able to share them with you.

Thank you! Thank you!! Thank you!!!

Rosario Gauna

 

Advertisements

Gráficas de Radar

¿En qué regalos planea la gente gastar dinero, en San Valentín?

 Por: Rosario Gauna @rosariogaunag

Para la semana 7 de #WorkoutWednesday, @lorna_eden nos preparó y deleitó con un reto con un diseño e información especialmente dedicado a la fecha: ¿En qué regalos planea la gente gastar dinero, el Día de San Valentín?

En su reto, Lorna nos indica que busca el reforzamiento en varias áreas, una de ellas, el manejo de gráficas de Radar.

Este blog se enfocará al proceso de construcción de las gráficas de Radar, un tipo de gráfico que tiene muchas veces la etiqueta de “complicado”. Espero ayudar en este blog, a dejar atrás las etiquetas negativas con respecto a trabajar con este tipo de grafico.

Les comparto a continuación, el procedimiento que seguí para crear las gráficas de radar por año que nos solicita el reto de Lorna.

MODELACIÓN DE DATOS

Paso 1: Pivot data from Columns to Rows

Dado que en el archivo de datos la información para cada tipo de regalos se muestra en columnas independientes, lo primero que se requiere es convertir esas columnas en renglones. Esto con la finalidad de facilitar trabajar los datos en Tableau.

Para lo cual, después de configurar la fuente de datos en la cuadrícula ubicada en la parte inferior derecha, se seleccionan las 7 columnas correspondientes a los nombres de los tipos de regalo. Dar clic en la flecha desplegable junto al nombre de la última columna y después seleccionar la opción “Pivot”.

Esta operación crea dos nuevas columnas denominadas “Pivot field names” y “Pivot field values”, que reemplazarán las 7 columnas originales que seleccionamos para crear el pivot.

Picture2

Paso 2: Renombrar las nuevas columnas creadas en el Pivot.

Para darle un significado más acorde a los datos manejados se renombrarán las dos nuevas columnas:

  • “Pivot field names” se renombrará como “Type of Gift”
  • “Pivot field values” se renombrará como “Percent Buying”

CALCULAR LAS VARIABLES BÁSICAS

Al leer el reto de esta semana, recordé inmediatamente un reto previo de @LukeStanke sobre gráficas radiales en la semana 10 de #WorkoutWednesday2018. En ese reto, Luke incluyó dentro de los spoilers las siguientes fórmulas para el cálculo de coordenadas (x, y).

  • Radius * SIN(2 * PI() * [Percent of Circle]) will return your X-axis
  • Radius * COS(2 * PI() * [Percent of Circle]) will return your Y-axis

Estas fórmulas, serán también de gran utilidad en la solución del reto de esta semana.

Si tú no estás familiarizado con estas fórmulas te pido que no te preocupes y mucho menos que entres en pánico, ya que en este blog revisaremos los conceptos básicos de su funcionamiento y podrás comprobar por ti mismo, que son precisamente estas fórmulas las que harán el trabajo difícil por nosotros y no al revés.

Para utilizar las fórmulas para el cálculo de coordenadas (x, y), debemos calcular previamente dos variables básicas: “Percent of Circle” y “Radius”.

Paso 3: Calcular el campo de “Percent of Circle”.

Esta variable determinará la posición que ocupará cada uno de los tipos de regalos, buscando distribuirlos uniformemente dentro de un rango entre 0 y 1.

Para su cálculo se deberá tener en cuenta: 1) El orden en que se desplegarán cada tipo de regalo, 2) El número total de tipos de regalos que se graficarán, que en este ejercicio es de 7.

Esto nos ayudará a que cada tipo de regalo cuente con una posición dentro de un círculo imaginario (como si se tratarán de 7 paradas dentro del giro de unas manecillas de reloj), en función al orden en que se desplegará cada tipo de regalo.

Para este cálculo, preferí la utilización de una fórmula sencilla con la finalidad de enfocarnos en comprender mejor lo que se busca.

Percent of Circle =

CASE [Type of Gift]

WHEN ‘Jewelry’ THEN 0/7

WHEN ‘Greeting   cards’ THEN 1/7

WHEN ‘Gift   card/gift certificate’ THEN 2/7

WHEN ‘Flowers’ THEN 3/7

WHEN ‘Clothing’ THEN 4/7

WHEN ‘Candy’ THEN 5/7

WHEN ‘An  evening out’ THEN 6/7

END

Ya tenemos el primero de los dos cálculos básicos, nada complicado ¿Verdad?

Paso 4: Calcular el campo de “Radius”.

El “Radius” tiene como finalidad ayudar a determinar que tan alejados del centro de nuestro círculo imaginario estará cada punto. Entre mayor sea el porcentaje de compras por tipo de regalo, el punto estará más alejado del centro.

En este ejercicio, los datos originales contienen el porcentaje de compras de cada tipo de regalo. Por lo cuál, prácticamente sólo tomaremos el dato, sin necesidad de cálculos adicionales.

Radius = SUM([Percent Buying])

Así de fácil, ya tenemos la segunda variable requerida por las fórmulas de las coordenadas.

CÁLCULAR COORDENADAS

Paso 5: Calcular coordenadas (x, y).

En este punto, veremos como las fórmulas de obtención de coordenadas (x, y) realizarán el trabajo realmente difícil por nosotros.

x = [Radius] * ATTR (SIN (2 * PI () * [Percent of Circle]))
y = [Radius] * ATTR (COS (2 * PI () * [Percent of Circle]))

En la siguiente imagen, se muestra un ejemplo con la información del año 2018, de los datos básicos calculados en los pasos 3 y 4. Y como después de aplicadas las fórmulas, se transforman en coordenadas (x, y).

Picture3

DEFINICION DE LA GRÁFICA

Paso 6: Crear gráfica.

Para la creación de la gráfica se requiere filtrar los datos para trabajar únicamente con los que cumplan con la condición de Tableau = “Null”. Esto porque en los datos se incluyeron registros adicionales con la finalidad de crear una imagen de corazón en una gráfica independiente y que no deben ser considerados para esta gráfica.

Para crear la gráfica de radar, se debe seleccionar en el menú de marcas la opción de polígonos. Recordemos que los polígonos son puntos que se conectan mediante líneas que rodean un área.

En este ejercicio, los puntos a conectar se ubicarán en las coordenadas previamente calculadas y  se le deberá indicar en el estante de “Path”, el orden en que se trazarán las líneas para conectar los puntos. Al unirse los puntos o vértices del polígono se formará las imágenes de radar.

Mover a los estantes de:

  • Filters ⬅  Filtrar los datos: Mantener los que cumplan la condición Tableau = NULL
  • Columns ⬅  “x”
  • Rows ⬅  “y”
  • Color ⬅  “Year” ordenado descendentemente, para crear un radar por año
  • Tooltips ⬅  “Percent buying”
  • Path ⬅  “Type of Gift”

En color utilice el efecto de opacidad al 25% y el efecto de border para crear la línea alrededor de cada polígono.

La gráfica utiliza un eje doble para incluir pequeños círculos en cada vértice en el polígono.

Para lo cual se incluye en el estante de “Rows” una copia de la variable “y” y se selecciona la marca de “Circle” para el segundo eje.

Picture4

Ajuste los tooltips y los formatos.

Espero que este blog haya contribuido a derribar las etiquetas negativas sobre que las gráficas de radar son complicadas y que se sientan cómodos para intentar sus propias creaciones con nuevos datos.

Gracias Lorna, por prepararnos un reto tan especial para el Día de San Valentín.

Link a reto

Picture0

Aprovecho para agradecerles, porque me encuentro muy emocionada por todos los mensajes de apoyo y cariño recibido. Es un increíble honor para mí ser parte del grupo de Tableau Zen 2019.

Deseo agradecer muy especialmente a todas aquellas personas que me han apoyado en mi aprendizaje y que me han motivado a intentar nuevos retos.

Espero continuar divirtiéndome con nuevos aprendizajes y seguir contando con el privilegio de poder compartirlos con ustedes.

Gracias! Gracias!! Gracias!!!

Rosario Gauna

Single Sheet Drill-Down using #SetActions

By: Rosario Gauna @rosariogaunag

A few months ago, @RodyZakovich prepared us a challenge that required presenting three levels of Drill-Down on a single sheet, seeking to provide a better user experience (UX).

When this challenge was published, the version of Tableau 2018.3 was not yet released, so it was necessary to use a set of advanced tricks, including the use of data modeling and “Actions Filters” to solve the challenge. Link to the Blog

With the arrival of the #SetActions with Tableau 2018.3, the handling of Drill-Down in the Visualizations became much simpler.

Although in previous blogs I have provided clues to the main steps required to achieve this challenge with #SetActions. Given the questions I have still received, I considered it convenient to write a new blog dedicated to detailing each of the steps to solve this challenge using the functionality of #SetActions.

First let’s remember the main points of the challenge:

  • It’s required to work with three levels of Drill-Down: 1) Year, 2) Month, and 3) Day.
  • Initially, a bar chart with information at the Year level is displayed.
  • Subsequently, when selecting one or more of the years, the view must be replaced with a bar chart with the monthly information corresponding to the year or selected years.
  • Then, when selecting one or more of the months, the view should be replaced with a line chart, with the daily information corresponding to the selected month or months.
  • When finished, the original bar chart with the information at the year level must be displayed again.

Below I share the steps I used, in this new version:

FOR LEVEL 1 OF THE HIERARCHY (YEAR)

Step 1: Create a field called “YEAR”.

Since the three levels of the hierarchy are implicit in a single dimension: the order date, the first thing we will do is to have a new field that contains the values of the first hierarchy: Years.

The new field will be calculated truncating to years the value of the original date.

Year =

DATE(DATETRUNC(‘year’, [Order Date]))

Step 2: Create the “Year Set” Set.

The Set will be associated with the dimension created in the previous step.

picture02

Step 3: Create the Set Action “Year Set Action”

At this point, let’s define the first #SetActions.

Remember that the new functionality of the #SetActions allows users to update the values of a Set (i.e., which members of the Set are: IN / OUT Set), interacting directly with the “marks” of a Viz.

In the definition of the #SetActions you must indicate the Set to be updated or Target Set. In this case we will use the “Year Set” defined in the previous step.

Choose the option that all Set values should be removed when the selection is cleaned.

picture03

FOR LEVEL 2 OF THE HIERARCHY (MONTH)

Step 4: Create a Drill-Down Dimension “Month-DD”.

In this step, the value of the date truncated at the month level will be assigned to the new dimension when the year to which the record belongs is defined as “IN” of the “Year Set”. Otherwise, it will be assigned the value of NULL.

That is, it will contain the value of the month, as long as it corresponds to one of the years selected by the user in level 1.

How is this achieved? With the combined use of Set and #SetActions.

  • Remember that with the #SetActions, for the first time, the user is allowed to modify the original definition of a Set, by interacting directly with the Viz.
  • How is that? With the Set Action the user can control with their interaction with the “marks” which members are IN or OUT with the associated Set.
  • That is, the “Year Set Action” defined in step 3, will update which members are IN or OUT in the “Year Set” defined in step 2, according to the “marks” selected by the user in the Viz.

That is, the formula to be defined will evaluate for each record if the Year is IN in the SET: “Year Set”. If yes, the value of the month will be assigned, otherwise it will be assigned the value of NULL.

Month DD=

IIF([Year Set], DATE(DATETRUNC(‘month’, [Order Date])), NULL)

Step 5: Create the “Month DD Set” Set.

The new Set will be associated with the dimension created in the previous step.

picture04

Step 6: Create the Set Action “Month Set Action”.

Define that your Target Set is the “Month DD Set”, defined in the previous step. And choose the option that all Set values should be removed, when the selection is cleaned.

picture05

FOR LEVEL 3 OF THE HIERARCHY (DAY)

Step 7: Create a Drill-Down Dimension “Day DD”.

In this step, the value of the date of the order will be assigned to the new dimension, that is, to day level, when the condition that the year to which the record belongs is defined “IN” in the “Year Set” and in addition, the condition that the month to which the record belongs is defined “IN” in the “Month DD Set” is fulfilled. Otherwise, it will be assigned the value of NULL.

That is, it will contain the value of the day as long as it corresponds to one of the months-months selected by the user.

Day DD =

IIF([Year Set] AND [Month DD Set], [Order Date], NULL)

TO FILTER AND SHOW ONLY THE MOST DETAILED LEVEL MARKS

The Drill-Down on a single sheet implies using a Drill Down with exclusion or filter, that is, it’s required to show only the “marks” of the next level of hierarchy according to the level of hierarchy of the “marks” previously selected by the user.

This means that, if the user selects one or more “marks” of years, the next view should show only “marks” at the month level. In contrast, when the user selects one or more “level” marks of the month the following view should show only “marks” at the day level.

The next two steps will help us with this requirement.

Step 8: Create the Dimension “Level.

This variable will help us identify the maximum level of hierarchy that is being handled in each record according to the values of the “Day DD” and “Month DD” dimensions.

Level =

IIF(NOT ISNULL([Day DD]), 3,

IIF(NOT ISNULL([Month DD]), 2, 1))

Step 9: Create the Dimension “Filter”.

This variable compares the level of each record vs. the maximum level in the table. (TRUE / FALSE)

Filter =

[Level] = {FIXED : MAX([Level])}

TO CREATE A PERSONALIZED AXIS BY LEVEL OF DETAIL

Although it’s not a requirement of the original challenge, I decided to customize the date axis to show string formats depending on the displayed level of the data.

Step 10: Create a Dimension for the “X” axis: “Date Axis”

To customize the signs of the date axis according to the level shown in the Drill-Down, a dimension type string will be created.

Date Axis =

CASE [Level]

WHEN 1 THEN STR(DATEPART(‘year’, [Order Date]))

WHEN 2 THEN LEFT(DATENAME(“month”,[Month DD]),3) + “, ” + RIGHT(STR(DATEPART(‘year’, [Order Date])),2)

WHEN 3 THEN LEFT(DATENAME(“month”,[Month DD]),3) + ” ” + STR(DATEPART(‘day’, [Order Date])) + “, ” + RIGHT(STR(DATEPART(‘year’, [Order Date])),2)

END

Step 11: Create the Dimension “Sort”.

This new dimension will allow to order the values of “Date Axis” according to their chronological order.

Sort  =

CASE [Level]

WHEN 1 THEN [Year]

WHEN 2 THEN [Month DD]

WHEN 3 THEN [Day DD]

END

CREATE THE CHART

Step 12: Create the bar and line chart.

Move to the shelves of:

  • Columns ⬅  “Date Axis” and sort ascending by “Sort”.
  • Rows ⬅  “Bar Sales” for the bar chart and

“Line Sales” for line chart.

  • Detail ⬅  “Year”, “Month DD” and “Day DD”

The chart uses a double axis for sales. You must synchronize both axes and hide the axis on the right side of the chart.

Adjust the tooltips and the formats.

Ready!

Link to Tableau Public

pictureaa

 

Below I share a summary of the main steps related to the use of the Set and the #SetActions in this exercise.

picture06

I hope this blog is useful for you.

If you have any questions about the blog, do not hesitate to contact me on twitter (@rosariogaunag)

Regards!

Rosario Gauna

DrillDown en una sola Hoja utilizando #SetActions

Por: Rosario Gauna @rosariogaunag

Hace ya algunos meses atrás, @RodyZakovichnos preparó un reto que requería presentar tres niveles de DrillDown en una sola hoja, buscando brindar una mejor experiencia al usuario (UX).

Cuando se publicó este reto aún no se lanzaba la versión de Tableau 2018.3, por lo cual, era necesario la utilización de un conjunto de trucos avanzados, incluyendo el uso de modelación de datosy de“Actions Filters”para lograr resolver el retoLink al Blog

Con la llegada de los #SetActions con Tableau 2018.3, el manejo de Drill-Down en las Vizualizaciones se volvió mucho más sencillo.

Aunque en blogs previos he brindado pistas de los principales pasos requeridos para lograr este reto con #SetActions y dadas las preguntas que aún he recibido, consideré conveniente escribir un nuevo blog dedicado a detallar cada uno de los pasos para resolver este reto utilizando la funcionalidad de #SetActions

Primero recordemos los puntos principales del reto:

  • Se requiere trabajar con tres niveles de Drill Down: 1) Año, 2) Mes y 3) Día.
  • Inicialmente, se muestra una gráfica de barras con la información a nivel Año.
  • Posteriormente, al seleccionar uno o más de los años, se debe reemplazar la vista con una gráfica de barras con la información mensual que correspondan al año o años seleccionados.
  • Después, al seleccionar uno o más de los meses, se debe reemplazar la vista con una gráfica de líneas, con la información diaria que corresponde al mes o meses seleccionados.
  • Al terminar, se deberá mostrar nuevamente la gráfica de barras original con la información a nivel año.

A continuación comparto los pasos que utilicé, en esta nueva versión:

PARA EL NIVEL 1 DE LA JERARQUÍA (AÑO)

Paso 1: Crear un campo denominado “YEAR”.

Dado que los tres niveles de la jerarquía están implícitos en una sola dimensión: la fecha de orden, lo primero que realizaremos será tener un nuevo campo que contenga los valores de la primera jerarquía: Años.

El nuevo campo se calculará truncando a años el valor de la fecha original.

Year =

DATE(DATETRUNC(‘year’, [Order Date]))

 Paso 2: Crear el Set “Year Set”.

El Set se asociará a la dimensión creada en el paso previo.

picture02

Paso 3: Crear el Set Action “Year Set Action”

En este punto, vamos a definir el primer #SetActions.

Recordemos que la nueva funcionalidad de los #SetActions permite que los usuarios puedan actualizar los valores de un Set (es decir, que miembros del Set están: IN/OUT del Set), interactuando directamente con las “marks” de una Viz.

En la definición del #SetActions se debe indicar el Set que se actualizará o Target Set.  En este caso utilizaremos el “Year Set” definido en el paso previo.

Elegir la opción de que todos los valores del Set deberán ser removidos cuando la selección se limpie.

picture03

PARA EL NIVEL 2 DE LA JERARQUÍA (MES)

Paso 4: Crear una Drill-Down Dimension “Month-DD”.

En este paso se asignará a la nueva dimensión el valor de la fecha truncada a nivel mes cuando el año a que pertenece el registro esté definido “IN” del “Year Set”. En caso contrario, se le asignará el valor de NULL.

Es decir, contendrá el valor del mes, siempre y cuando corresponda a uno de los años seleccionados por el usuario en el nivel 1.

¿Cómo se logra esto? Con el uso combinado del Set y del #SetActions.

  • Recordemos que con los #SetActions, por primera vez, se permite al usuario modificar la definición original de un Set, al interactuar directamente con la Viz.
  • ¿Cómo es eso? Con el Set Action el usuario puede controlar con su interacción con las “marks” que miembros están IN o OUT con el Set asociado.
  • Es decir, el “Year Set Action” definido en el paso 3, actualizará que miembros están IN o OUT en el “Year Set” definido en el paso 2, conforme a las “marks” seleccionadas por el usuario en la Viz.

Es decir, la fórmula a definir evaluará para cada registro si el Año esta IN en el SET: “Year Set”. En caso afirmativo, se le asignará el valor del mes, en caso contrario se le asignará el valor de NULL.

Month DD=

IIF([Year Set], DATE(DATETRUNC(‘month’, [Order Date])), NULL)

Paso 5: Crear el Set “Month DD Set”.

El nuevo Set se asociará a la dimensión creada en el paso previo.

picture04

Paso 6: Crear el Set Action “Month Set Action”.

Definir que su Target Set es el “Month DD Set”, definido en el paso previo. Y elegir la opción de que todos los valores del Set deberán ser removidos, cuando la selección se limpie.

picture05

PARA EL NIVEL 3 DE LA JERARQUÍA (DIA)

Paso 7: Crear una Drill-Down Dimension “Day DD”.

En este paso, se asignará a la nueva dimensión el valor de la fecha de la orden, es decir a nivel día, cuando se cumple la condición que el año a que pertenece el registro esta definido “IN” en el “Year Set” y además se cumple la condición que el mes a que pertenece el registro esta definido “IN” en el “Month DD Set”. En caso contrario, se le asignará el valor de NULL.

Es decir, contendrá el valor del día siempre y cuando corresponda a uno de los años-meses seleccionados por el usuario.

Day DD =

IIF([Year Set] AND [Month DD Set], [Order Date], NULL)

PARA FILTRAR Y MOSTRAR SOLO LAS MARKS DE NIVEL MÁS DETALLADO

El Drill Down en una sola hoja implica utilizar un Drill Down con exclusión o filtro, es decir, se requiere mostrar solo las “marks” del siguiente nivel de jerarquía de acuerdo al nivel de jerarquía de las “marks” previamente seleccionadas por el usuario.

Esto quiere decir que, si el usuario selecciona una o más “marks” de años, la siguiente vista deberá mostrar solo “marks” a nivel mes. En cambio, cuando el usuario selecciona una o más “marks” de nivel de mes la siguiente vista deberá mostrará solo “marks” a nivel día.

Los siguientes dos pasos nos ayudarán con este requerimiento.

Paso 8: Crear la Dimension “Level”.

Esta variable nos ayudará a identificar el nivel máximo de jerarquía que se está manejando en cada registro de acuerdo a los valores de las dimensiones “Day DD” y “Month DD”.

Level =

IIF(NOT ISNULL([Day DD]), 3,

IIF(NOT ISNULL([Month DD]), 2, 1))

Paso 9: Crear la Dimension “Filter”.

Esta variable compara el nivel de cada registro vs. el nivel máximo en la tabla. (TRUE/FALSE)

Filter =

[Level] = {FIXED : MAX([Level])}

PARA CREAR UN EJE PERSONALIZADO POR NIVEL DE DETALLE

Aunque no es un requerimiento del reto original, decidí personalizar el eje de fechas para mostrar formatos de string dependiendo del nivel mostrado de los datos.

Paso 10: Crear una Dimension para el eje de las “X”: “Date Axis”

Para personalizar los letreros del eje de fechas de acuerdo al nivel mostrado del Drill-Down, se creará una dimensión tipo string.

Date Axis =

CASE [Level]

WHEN 1 THEN STR(DATEPART(‘year’, [Order Date]))

WHEN 2 THEN LEFT(DATENAME(“month”,[Month DD]),3) + “, ” + RIGHT(STR(DATEPART(‘year’, [Order Date])),2)

WHEN 3 THEN LEFT(DATENAME(“month”,[Month DD]),3) + ” ” + STR(DATEPART(‘day’, [Order Date])) + “, ” + RIGHT(STR(DATEPART(‘year’, [Order Date])),2)

END

Paso 11: Crear la Dimension “Sort”.

Esta nueva dimensión permitirá ordenar los valores de “Date Axis” de acuerdo a su orden cronológico.

Sort  =

CASE [Level]

WHEN 1 THEN [Year]

WHEN 2 THEN [Month DD]

WHEN 3 THEN [Day DD]

END

 CREAR LA GRÁFICA

Paso 12: Crear la gráfica de barras y de líneas.

Mover a los estantes de:

  • Columns ⬅  “Date Axis”y ordenar ascendentemente by “Sort”.
  • Rows ⬅  “Bar Sales” para la gráfica de barras y

“Line Sales” para la gráfica de línea.

  • Detail ⬅  “Year”, “Month DD” y “Day DD”

La gráfica utiliza un eje doble para las ventas. Se deben sincronizar ambos ejes y ocultar el eje del lado derecho de la gráfica.

Ajuste los tooltips y los formatos.

¡Listo! 

Link a Tableau Public 

pictureaa

A continuación comparto un resumen de los principales pasos relacionados con el uso de los  Set y los #SetActions en este ejercicio.

picture06

Espero que este blog les sea de utilidad.

Si tienen alguna pregunta sobre el blog, no duden en ponerse en contacto conmigo en twitter (@rosariogaunag)

¡Saludos!

Rosario Gauna

SET ACTIONS

By: Rosario Gauna @rosariogaunag

The version of Tableau 2018.3 brought a new functionality: Set Actions.

It was an incredibly exciting experience to begin using them and knowing their functionality.

Many times, when I study a material that contains many new ideas for me, I try to organize them and summarize them in a presentation format, since I feel that it forces me to investigate and deepen more on the subject.

As I want to share my summary, the format of this blog will be a little different, since I will use the presentation material that I prepared to understand the basic operation of the Set Actions.

The new functionality of the Set Actions works on Sets, so what we will do first is remember:

What are Sets?

01-SetsOkay, but:

How are Sets used?

Sets can be used in multiple ways in Tableau, let’s see some examples:

01b-Sets

Now, let’s move on to the main interest of this blog:

What does the new functionality of Set Actions offer us?

02-Set ActionsAnd good:

What are Set Actions?

03-Set Actions

With the Set Actions, for the first time, the user is allowed to modify the original definition of a Set, by interacting directly with the Viz.

This new functionality offers us a new and powerful way to improve the user experience by allowing greater flexibility and control for the end user.

How is that? With the Set Action the user can control with their interaction with the “marks” which members are IN or OUT in the Set.

Now we will review very quickly:

What are the general steps to use Set Actions?

05-Set ActionsNow, let’s review an example of a Set and how it is modified when activated and / or deactivated with a Set Actions:

04-Set Actions

It can be seen that when configuring a Set Actions, it also specifies what happens when it’s finished, that is, when the user’s selection is cleared with the values associated with the Set.

Examples:

The Set Actions came to change the rules of the game in the development of dashboards. They offer us multiple possibilities for its use, in this blog, let’s review just some examples among the multiple possibilities for its use.

1) Proportional Brushing with Set Actions.

In this example, Set Actions are used to allow the user to select one or more Segment marks within the Sales by Segment chart and based on their selection. The second chart corresponding to Sales by Categories will be updated to show in blue, the part of the bar corresponding to the value of the sales of the segments selected by the user and in gray, the part of the bar with the value of the sales of the segments that were not selected by the user.

In this example, in the definition of the Set Actions, it’s indicated that when the action is finished “Add all values to Set” will be added, in such a way, that the bars of the second chart corresponding to the Sales by Category will be shown in blue , since all the elements will be IN of Segment Set.

06-Example1

2) Dynamic Reference Line and Coloring with Set Actions.

In this example, the user is allowed to select a date and based on the date selected by the user, the chart will update:

1) The reference line, with the sales value of the date selected by the user, and

2) The colors of the Sales line according to the value of the variation of the sales of each day with respect to the value of the sales of the date selected by the user.

In this example, in the definition of the Set Actions, it’s indicated that when the action is finished, “Keep Set Values” must be maintained, that is, the last value selected by the user is maintained.

07-Example2

3) Asymmetric Drill Down with Set Actions

In this example, three levels of Drill Down are handled: 1) Category, 2) Sub-Category, and 3) Product Name.

The Set Actions will help us to update the chart according to the selection of the user to show the next level of Drill Down for those “marks” that were selected.

Therefore, depending on the selection of the user, the update of the chart can show “marks” of one level, of two levels or even of the three levels of Drill Down simultaneously. It’s for this reason that this type of Drill Down is given the name as “Asymmetric Drill Down”, since in the same chart, “marks” of different level of aggregation are shown.

In this example, in the definition of the Set Actions, you are told that when you finish the action you must “Remove all values from Set”, that is, it will be empty.

08-Example3

4) Drill Down with Exclusion Using Set Actions.

In this last exercise, three levels of detail are handled: 1) Per year, 2) Per month, and 3) Per day.

It’s a variation of the previous exercise, where the use of a filter is included to show only the marks of the next level of detail that correspond to the user’s previous selection.

This means that, when the user selects one or more “marks” of years, the chart will be updated to show the information at the month level for the year or selected years.

And when, the user selects one or more “marks” of months, the chart will be updated to show the information at the day level for the selected month or months.

09-Example4In conclusion:

10-Resumen

The Set Actions, like the Level Of Detail (LOD) Expressions, were placed within my favorite features of Tableau because of its great power and versatility.

Link to Tableau Public

00-Set Actions 

I say goodbye with the hope that this quick review of the Set and Set Actions has been useful for you.

If you have any questions about the blog, do not hesitate to contact me on twitter (@rosariogaunag).

Regards!

Rosario Gauna

 

 

What is the “Makeup of Sales”?

By: Rosario Gauna @rosariogaunag

The challenge that @LukeStanke prepared for week 50 of #WorkoutWednesday is fresh out of the oven and definitely a challenge that promised great fun.

Link to the challenge

The challenge asks to create a trellis-chart for “State” using pie graphs.

A multiple chart or trellis chart is a series of similar charts or tables that use the same scale and axes to show different partitions of a data set, allowing you to easily compare and contrast the values ​​between the charts.

The challenge also requires allowing the user to select one of the “Sub-Categories”. Based on the selection of the user, the Pie of each of the “States” can be divided into three parts:

  • The percentage of sales of the “Sub-Category” selected within the sales of the State.
  • The percentage of sales of the rest of the “Sub-Categories” that correspond to the same “Category” to which the “Sub-Category” belongs, selected by the user.
  • The percentage of sales remaining to complete 100%.

To add a greater degree of emotion, the following features can be added to the challenge: 1) The “Category” should not be defined using a rigid coding of the “Sub-Category”; and 2) Sort the “States” based on the sales percentage of the “Sub-Category” selected by the user.

Next, I share the procedure that I used:

Step 1: Calculate for each “State”, its position or coordinates. That is, in which column and row each “State” should be displayed.

The SuperStore data set has 49 “States” included (not Alaska or Hawaii, but the District of Columbia is included) which provides a perfect data set for a 7 × 7 grid. Because the grid size will not change, you can use a short version of the calculation of the coordinates, leaving fixed the value of 7 States plotted by row.

COLUMN =

INT( (Index() – 1) % 7)

ROW =

INT( (Index() – 1) / 7)

 Step 2: Create a parameter for the user to select a “Sub-Category”.

Define the parameter with the name “Choose Sub-Category” and its values will be taken directly from the “Sub-Category” field.

Step 3: Calculate the Category to which the “Sub-Category” selected by the user belongs.

An LOD calculation will be used to set the value of the “Category” to which the “Sub-Category” selected by the user belongs.

Selected Category =

{FIXED :

MAX(IIF([Sub-Category] = [Choose Sub-Category],  [Category],  NULL))}

Step 4: Create a dynamic dimension that represents each of the three parts in which the Pie is subdivided.

Slice =

IIF([Category] = [Selected Category],

IIF([Sub-Category] = [Choose Sub-Category],  “1st”,  “2nd”),  “3rd”)

Step 5: Calculate the values of the total sales by “State” and the total sales by “State-Slice”.

LOD calculations will be used for its definition.

Sales by State = {FIXED [State] : SUM([Sales])}
Sales by State & Slice = {FIXED [State], [Slice] : SUM([Sales])}

Step 6: Calculate the Sales Percentage that will be displayed in the tooltips of the Pie chart.

% Sales = SUM([Sales]) / SUM([Sales by State])

Step 7: Calculate the sales percentages of the first and second slice of the Pie.

These two fields will be used to order the display of the “States”. For its definition, LOD calculations will be used.

% Sales 1st Slice =

{FIXED [State] :

AVG(IIF([Slice] = “1st”,

[Sales by State & Slice] / [Sales by State], NULL))}

% Sales 2nd Slice =

{FIXED [State] :

AVG(IIF([Slice] = “2nd”,

[Sales by State & Slice] / [Sales by State], NULL))}

Step 8: Calculate the “Sort” field.

This formula will help to display first, all the “States” that had sales in the selected “Sub-Category”, ordered by the percentage of sales of the first slice of the Pie, that is, by the percentage of sales of the ” Sub-Category “selected.

Subsequently, those “States” that do not have sales in the selected Sub-Category will be displayed, ordered by the percentage of sales of the second slice.

Sort =

IIF(NOT ISNULL([% Sales 1st Slice]),

[% Sales 1st Slice] + 100,

[% Sales 2nd Slice])

Step 9: Calculate the Color field.

Color =

[Slice] +

IIF([Category] = [Selected Category],  “-” + [Selected Category],  “”)

This formula will allow to set independent colors by “Category”, for the first and second slice of the Pie. In the case of the third slice, the gray color will always be used, regardless of the selected category.

Picture2

Step 10: Define the Trellis-Chart

For the PIE graph move to the shelves of:

  • Columns   ⬅“Column” (convert to discrete)
  • Rows   ⬅“Row” (use reverse scale)
  • Detail   ⬅“State” ordered by the “Sort” field
  • Color   ⬅Color
  • Angle   ⬅SUM(Sales)
  • Tooltips   ⬅AGG(% of Sales) and ATTR(Legend)

For the table calculations of the variables “Columns” and “Rows” the following definition will be used:

Picture3

For the “Text” graphic move to the shelves of:

  • Rows   ⬅Row-0.5 (use dual axis and synchronized)
  • Detail   ⬅“State” ordered by the field of “Sort”
  • Detail   ⬅“Color”
  • Color   ⬅“Selected Category”
  • Text   ⬅“State” and “% Sales of 1stSlice”

Picture4

Step 11: Calculate the Legend field.

This formula will allow to calculate the dynamic signs that contain the meaning of each one of the three colors used in Pie graphs.

Legend =

IIF([Category] = [Selected Category],

IIF([Sub-Category] = [Choose Sub-Category],

[Sub-Category],   “Rest of ” + [Category]),   “All others”)

Step 12: Define the secondary graph to show the dynamic legends with what each color means in the Pie graphs.

Move to the shelves of:

  • Columns   ⬅Color
  • Color   ⬅Color
  • Text   ⬅Legend

 Step 13: Adjust tooltips and formats.

Ready!

Link to Tableau Public 

Picture1

I take this opportunity to thank @LukeStanke for sharing this challenge that exceeded my initial expectations of fun.

If you have any questions about the blog, do not hesitate to contact me on twitter (@rosariogaunag)

Regards!

Rosario Gauna

¿Cuál es el “Makeup of Sales”?

Reto, WorkoutWednesday, LOD Calc, Table Calc, Trellis Chart

Por: Rosario Gauna @rosariogaunag

El desafío que @LukeStanke nos preparó para la semana 50 de #WorkoutWednesday está recién salido del horno y definitivamente es un reto que prometía gran diversión.

Link al reto

El reto solicita crear un trellis-chart por “State” utilizando gráficas de Pie.

Un gráfico múltiple o una trellis-chart es una serie de gráficos o tablas similares que usan la misma escala y los mismos ejes para mostrar diferentes particiones de un conjunto de datos, lo que permite comparar y contrastar fácilmente los valores entre los gráficos.

El reto además requiere permitir al usuario seleccionar una de las “Sub-Categories”. En base a la selección del usuario, el Pie de cada uno de los “States” podrá dividirse hasta en tres partes:

  • El porcentaje de ventas de la “Sub-Category” seleccionada dentro de las ventas del State.
  • El porcentaje de ventas del resto de las “Sub-Categories” que corresponden a la misma “Category” a la que pertenece la “Sub-Category” seleccionada por el usuario.
  • El porcentaje de ventas restante para completar el 100%.

Para añadir un mayor grado de emoción, se le puede agregar los siguientes desafíos al reto: 1) No se debe definir la “Category” utilizando una codificación rígida de la “Sub-Category”; y 2) Ordenar los “States” en base al porcentaje de ventas de la “Sub-Category” seleccionada por el usuario.

A continuación, comparto el procedimiento que utilicé:

Paso 1: Calcular para cada “State”, su posición o coordenadas. Es decir, en qué columna y renglón debe desplegarse cada “State”.

El conjunto de datos de SuperStore tiene 49 “States” incluidos (no Alaska o Hawaii, pero se incluye el Distrito de Columbia) lo que brinda un conjunto de datos perfecto para una cuadrícula de 7 × 7. Porque el tamaño de la cuadrícula no cambiará, se puede utilizar una versión corta del cálculo de las coordenadas, dejando fijo el valor de 7 “States” graficados por renglón.

COLUMN =

INT( (Index() – 1) % 7)

ROW =

INT( (Index() – 1) / 7) 

Paso 2: Crear parámetro para que el usuario seleccione una “Sub-Category”.

Definir el parámetro con el nombre de “Choose Sub-Category” y sus valores se tomarán directamente del campo de “Sub-Category”.

Paso 3: Calcular la Categoría a la que pertenece la “Sub-Category” seleccionada por el usuario.

Se utilizará un cálculo LOD para fijar el valor de la “Category” a la que pertenece la “Sub-Category” seleccionada por el usuario.

Selected Category =

{FIXED :

MAX(IIF([Sub-Category] = [Choose Sub-Category],  [Category],  NULL))}

Paso 4: Crear una dimensión dinámica que represente cada una de las tres partes en que se subdivida el Pie.

Slice =

IIF([Category] = [Selected Category],

IIF([Sub-Category] = [Choose Sub-Category],  “1st”,  “2nd”),  “3rd”)

Paso 5: Calcular los valores de las ventas totales por “State” y las ventas totales por “State-Slice”.

Se utilizarán cálculos LOD para su definición.

Sales by State = {FIXED [State] : SUM([Sales])}
Sales by State & Slice = {FIXED [State], [Slice] : SUM([Sales])}

Paso 6: Calcular el Porcentaje de Ventas que se desplegará en el tooltips de la gráfica de Pie.

% Sales = SUM([Sales]) / SUM([Sales by State])

Paso 7: Calcular los porcentajes de ventas de la primera y segunda rebanada del Pie.

Estos dos campos se utilizarán para ordenar el desplegado de los “States”. Para su definición se usarán cálculos LOD.

% Sales 1st Slice =

{FIXED [State] :

AVG(IIF([Slice] = “1st”,

[Sales by State & Slice] / [Sales by State], NULL))}

% Sales 2nd Slice =

{FIXED [State] :

AVG(IIF([Slice] = “2nd”,

[Sales by State & Slice] / [Sales by State], NULL))}

Paso 8: Calcular el campo de “Sort”

Esta fórmula ayudará a desplegar en primer lugar, todos los “States” que tuvieron ventas en la “Sub-Category” seleccionada, ordenados por el porcentaje de ventas de la primera rebanada del Pie, es decir, por el porcentaje de ventas de la “Sub-Category” seleccionada.

Posteriormente, se desplegarán aquellos “States” que no cuentan con ventas en la Sub-Category seleccionada, ordenados por el porcentaje de ventas de la segunda rebanada.

Sort =

IIF(NOT ISNULL([% Sales 1st Slice]),

[% Sales 1st Slice] + 100,

[% Sales 2nd Slice])

Paso 9: Calcular el campo de Color

Color =

[Slice] +

IIF([Category] = [Selected Category],  “-” + [Selected Category],  “”)

Esta fórmula permitirá establecer colores independientes por “Category”, para la primera y segunda rebanada del Pie. En el caso de la tercera rebanada siempre se utilizará el color gris, independientemente de la categoría seleccionada.

Picture2

Paso 10: Definir la Trellis-Chart

Para la gráfica de PIE mover a los estantes de:

  • Columns   ⬅“Column” (convertir a discreto)
  • Rows   ⬅“Row” (utilizar escala inversa)
  • Detail   ⬅“State” ordenado por el campo de “Sort”
  • Color   ⬅Color
  • Angle   ⬅SUM(Sales)
  • Tooltips   ⬅AGG(% of Sales) y ATTR(Legend)

Para los cálculos de Tabla de las variables “Columns” y “Rows” se utilizará la siguiente definición:

Picture3

Para la gráfica de “Text” mover a los estantes de:

  • Rows   ⬅Row-0.5 (utilizar dual eje y sincronizado)
  • Detail   ⬅“State” ordenado por el campo de “Sort”
  • Detail   ⬅“Color”
  • Color   ⬅“Selected Category”
  • Text   ⬅“State” y “% Sales of 1stSlice”

Picture4

Paso 11: Calcular el campo de Legend

Esta fórmula permitirá calcular los letreros dinámicos que contengan el significado de cada uno de los tres colores utilizados en las gráficas de Pie.

Legend =

IIF([Category] = [Selected Category],

IIF([Sub-Category] = [Choose Sub-Category],

[Sub-Category],   “Rest of ” + [Category]),   “All others”)

Paso 12: Definir la gráfica secundaria para mostrar las leyendas dinámicas con lo que significa cada color en las gráficas de Pie.

Mover a los estantes de:

  • Columns   ⬅Color
  • Color   ⬅Color
  • Text   ⬅Legend

Paso 13: Ajustar los tooltips y los formatos.

¡Listo!  

Link a Tableau Public 

Picture1

Aprovecho para dar las gracias a @LukeStanke por compartirnos este reto que sobrepasó mis expectativas iniciales de diversión.

Si tiene alguna pregunta sobre el blog, no dudes en ponerte en contacto conmigo en twitter (@rosariogaunag)

¡Saludos!

Rosario Gauna