Niveles de cálculo

Tipico error de Tableau avisando que no se pueden mezclar campos agregados y no agregados.

Niveles de Cálculo en Tableau

Tableau tiene, fundamentalmente, dos modos de realizar los cálculos. O bien los computa a nivel de fila, o bien trabaja con agregados de filas. Y NO SE PUEDEN MEZCLAR. De lo contrario obtendremos el consabido No es posible mezclar argumentos de agregación y no agregación con esta función.

¿Cuál es cuál?

Nivel de fila, nivel de registro, mínimo nivel de detalle… 
Cuando la operación implica únicamente valores contenidos en ese registro.

Por ejemplo, para combinar dos campos o extraer información de uno de ellos. Puede ser todo lo complicado o todo lo sencillo que sea, lo único que importa es que no requiera valores presentes en otros registros.

Los agregados pueden estar accesibles a nivel de fila (LOD, level of detail) o no estarlo (vista y cálculos de tabla, table calculations).

Cualquier tipo de cálculo que pueda requerir valores presentes en otras filas o registros. En ocasiones la agregación será de 2 filas, o de 3, o de 1000… o de 1. Sí, puede haber agregaciones en las que sólo se usen valores de una fila.

¡Ponte a prueba con este mini test!

Espero que esta sucinta pildorilla haya hecho más sencillo distinguir estos dos tipos de campos calculados. Otras diferencias (¿las computa Tableau, la base de datos,…?) va más allá del objetivo aquí propuesto, pero aconsejo encarecidamente a quién esté más interesado en el tema que revise los artículos mencionados antes.

¡Muchas gracias por haber llegado hasta aquí!

Drawing Letters in Tableau

Equations to draw letters

Drawing Letters in Tableau

La versión en español está aquí

Little step-by-little step, making progress in my quest to understand what Tableau can offer beyond “Show me”. Inspired by Ken Flerlage‘s series of “the X & the Y“―but not quite yet at the level of parametric equations―  I’m designing here a tool to use Tableau’s canvas as a blank slate to draw some letters (say goodbye to 72pt size limit!).


  • Being able to enter a text (or, rather a 9-or-less-letter word) and draw it letter by letter using a combination of calculated fields in Tableau.


  1. Get the equations to draw the different letters in a given position ―template using Excel.
  2. Transport the equations to all the different possible positions using Alteryx.
  3. Create a workbook in Tableau to use as a template.
  4. Generate all the different calculations and place them in the worksheet computing as needed in the workbook using Alteryx.

Getting the Equations to Draw Some Letters

  1. Get the equations to draw the different letters in a given position ―template using Excel.
    1. Obtain a set of equations.
    2. Break it down into the individual segments compatible with Tableau.
    3. Rewrite the equations as needed.
Desmo’s “Alphabet” page was a blessing.
Equations to draw letters
Equations from

Some of the equations in the page are not compatible with the way Tableau draws its marks:

You just cannot feed the equation needed to draw the letter “C” to Tableau.

The original equation: \[\left(x-1\right)^2+\left(y-1\right)^2=1\left\{x\le1.75\right\}\]
can be split in two segments for y: \[ y = 1+\sqrt{1 – \left(x-1\right)^2} \left\{x\le1.75\right\}\]\[ y = 1-\sqrt{1 – \left(x-1\right)^2} \left\{x\le1.75\right\}\]
that “1.75” is a placeholder for a given position of X -but will need to be updated for other positions.

En Excel (y con la ayuda de papel y lápiz para despejar la x y la y), con un poco de paciencia, reconvirtiendo todas las ecuaciones en función de la posición de x:
Muestra de las ecuaciones de los distintos trazos — click para descargar todas.

First Incursion into Alteryx - getting things ready.

  1. Transport the equations to all the different possible positions using Alteryx.
    1. Decide the number of letters that we’re going to use.
    2. Convert the Excel template with the formulas to draw letters into proper Tableau Calculated Fields.
    3. Repeat the process with the different positions defined in (1)  (45 calcs right around the corner straight from here).
Restrict the number of letters to 9, with these characteristics (start & end defined as a function of the original equations, with a max-width per letter of 2 units and the position of the letter in the Tableau canvas).
Tabla con la posición de las distintas letras.
Letter positioning.

Using Alteryx and the template obtained in (1.3) to automate the process.

Process the template to obtain the formulas for Tableau.

Doing this, for each letter we obtain a set of five formulas (one for each segment–some letters can be drawn using a single stroke i.e. “i”, while some other need up to 5 i.e. “b”).

Output of running the Alteryx workflow in the original template.

Combining the total number of letters with start & end (2.1) and the Alteryx workflow to obtain the text of the 45 formulas (2.2):

Let’s combine the possible positions with the stroke template.

And the output:

Output with the 45 calculations — click to download the Excel file.

Tableau Template

  1. Create a workbook in Tableau to use as a template.
    1. Design the datasource.
    2. Outline of the view to draw the letters: calculated fields and how to compute them using the bins from (1).
    3. Calculate the different letters (which letters? what position?).

My aim is to simplify the datasource as much as possible and manipulate the different points in the strokes (and the x-axis) using Tableau’s ability to fill in the gap.

Original datasource:

Tabla con la posición de las distintas letras.
Original datasource with a single row.

After unioning with itself:

Union to obtain two rows.

Rows after the union.

Create a calculated field whose value changes with the table name (this step could also be parametrized but I’m hardcoding this as 100 for now):

Obtaining a min and max values based on the table name.


Bins to drive the position and strokes of the letters.

In a new worksheet:

  1. The bins created earlier (padded) in detail to provide the context to compute the different table calculations.
  2. The calculated field “t” is going to be the “x-axis”. Adjusted with hardcoded values of 100 y 200 based on padded.
“t”~ Index & Size to position the letters, computed using “padded”.
  1. With “t” and “padded” ready, the only thing left is to bring into the view the calculated fields for the segments of all the letters. I’m using only a couple as an example, where I copy the text generated earlier. All the calculated fields will be created in Alteryx using this as a template.
  2. Each segment needs to be computed using padded –for t and for letter.
Getting the worksheet ready – Click to magnify.

With this, we are (almost) ready to automate the steps.

To calculate the letters (which letters and where) we can combine some calculated fields:

  1. The first one, that I called “Name_letters“, is based on a parameter (in this example; however, it could vary based on other measures, say the sum of sales as seen here —example).

    Obtaining the text to draw based on a parameter. Could be replaced with a calculated field based on other measures as seen here.
  2. Next, one calculated field per letter. Given that the different intermediate points do not exist in the datasource (rather, they’re generated with the bins) it is necessary to use table calculations to retrieve them:

    Obtaining the first letter–table calculations are needed here.

    Changing the “start position” of the table calculation we can obtain the different letters.
  3. Finally, a calculated field based on the x-axis to decide which letter goes where.

    Deciding which letter to draw where based on the position in the x-axis. Hardcoded.

Second Incursion into Alteryx and Last Touch Ups in Tableau

  1. Generate all the different calculations and place them in the worksheet computing as needed in the workbook using Alteryx.
    1. Understanding the differences between the calculations previously obtained in Alteryx and the structure that calculated fields have in Tableau.
    2. Transform text into HTML and creating the formulas following Tableau’s format.
    3. Update the worksheet to use the calculated fields making sure they are computed correctly using padded.
    4. Alteryx workflow detailing the steps outlined in 4.3.

The formula obtained so far in Alteryx is in plain text. This is only useful to copy them in an open instance of Tableau when creating a calculated field. BUT, it’s not going to be apt for programmatically creating all the fields.

Plain text formula as it is currently obtained from Alteryx.
Useful only as a cut-and-paste exercise in calculated fields in Tableau.
Formula as it is actually stored in the XML of Tableau’s workbook.

In the XML of Tableau’s workbook, formulas are stored as “HTML” (i.e “>” is translated into “>”). In addition, this text is only the “formula“. Tableau needs additional details for each calculated field (the name, type, alias… and, in the case of calculated fields, the default instructions to compute them).
Fortunately, all this can be automated in Alteryx using one existing calculation as a template.

Starting from the template obtained earlier (2.3), and using an HTML reference table it is quite easy to replace the needed values using “Find and Replace” in Alteryx.

From plain text to HTML.

Once we get the HTML encoded formula, it has to be moved inside the XML of the workbook. Welcome to some minor “XML hacking” where we’ll be editing the XML of the .twb instead of using the “drag&drop” interface.
To make things easier, I’ve first edited the workbook in a text editor to create a template calculation based on the calculated fields in  4.1.

Template calculated field.

This template can now be updated in Alteryx to create N calculated fields (45 in this instance).

Extract the template calculated field from the workbook.

Using that template to create all the needed calculated fields:

Generating the workbook with all the calculated fields based on the template. Download the Alteryx workflow here.

Let’s have a look at the XML in the workbook again. This time, just focus on the structure of the worksheet:

Tableau’s worksheet.

There are three sections were calculated fields will need to be added:

Worksheet structure as seen in the XML.
  1. It seems clear that, given that we are using “Measure Names”, to be able to add additional calculated fields we have to edit the “categorical filter”. We’ll need to add as many “Groupfilter” sections as calculated fields.
  2. Rows will have the measure values and “t” in columns.
  3. To compute the full-range of padded we’ll need to show empty rows from the table layout option.


Having a look at “Datasource dependencies” we’ll find out that two entries are needed for each of the calculated fields that we want to add to the view.

  1. The first one is just the same one used earlier with the field name, alias, type, etc.

    Calculated field definition, the same as the one used earlier.


  2. The second one, “column-instance“, contains the specific information needed for this particular view, including how to compute it.

    This view’s specific information — detailing how to compute it.



Let’s see how to automate all this in Alteryx:

Using as input the .twb file (read as .csv, with no delimiters and concatenating everything in a single record), we can extract the information for the worksheet (named TEST in this example).

Obtaining the worksheet.

Next, the “Measures Names” filter can be updated to contain all the needed calculated fields:

Obtaining the updated “groupfilter”.

The calculated fields definitions obtained earlier (with name, type, etc.) need to be present also in the worksheet datasource-dependencies section:

Updating the calculated fields definitions.

These definitions do not include the information needed to compute the table calculations in the current view. These are part of the “column-instance” section that can also be updated:

Specific definition with the how to compute for the particular view.

Finally, we need to restore the “placeholder” values in the workbook:

Restoring the workbook.

and… we start from a test worksheet to a worksheet with all the strokes for all the letters computing properly. The only things left are changing the graph to line, adding “measure names” to colour and…(formatting, always formatting):

And just some more formatting left…

The full workflow in Alteryx:

Complete Alteryx workflow– download it here.


In this post, I have started to draw letters in Tableau; deepened the exploration of the X-Y relationship; used bins to make values accessible through table calculations while Tableau fills all the gaps with its magical “gap awareness” (domain completion? densification? domain padding? check this to learn more).

In addition, I introduced a couple of sections of the XML structure in the .twb file and I created, programmatically, near to  50 calculated fields (and showed how to place them in a worksheet!).

Some links to resources:

  1. Desmo’s “Alphabet” page.
  2. Excel file with the formula templates.
  3. Excel file with the multiple letters.
  4. Alteryx workflow
    to combine the template with strokes and letter and positions.
  5. Alteryx workflow 
    to HTML-encode all the text-plain calculations.
  6. Alteryx workflow to combine all the different calculated fields in a given worksheet.

I hope the reading was entertaining. Any and all comments are welcome:

Dibujando Letras en Tableau

Equations to draw letters

Dibujando Letras en Tableau - Drawing Letters in Tableau

English version is here

Poco a poco sigo avanzando en mi empeño por entender las posibilidades que ofrece Tableau más allá del “Show me”. Inspirado por la serie de Ken Flerlage de “la X y la Y“―pero no todavía al nivel de las ecuaciones paramétricas―  me lanzo aquí a diseñar una aplicación para usar Tableau como lienzo en el que escribir sin las restricciones de tamaño de los cuadros de texto.

  • Introducir un texto (o, mejor dicho, una palabra de nueve letras o menos) y dibujarla, letra a letra, como una combinación de fórmulas de Tableau.


  1. Obtener las ecuaciones para dibujar las distintas letras en una única posición teórica―plantilla usando Excel.
  2. Transportar las ecuaciones a las distintas posiciones usando Alteryx.
  3. Crear un libro de trabajo de Tableau que sirva de plantilla.
  4. Generar las distintas fórmulas en el libro de Tableau usando Alteryx.

Busando Ecuaciones para Dibujar Letras

  1. Obtener las ecuaciones para dibujar las distintas letras en una única posición teórica―plantilla usando Excel.
    1. Obtener un modelo de ecuaciones.
    2. Descomponerlo en los trazos necesarios y compatibles con Tableau.
    3. Reconvertir las ecuaciones necesarias.

La página de “Alphabet” de Desmos fue la solución a mis plegarias.

Equations to draw letters
Ecuaciones de

Algunas de las ecuaciones presentes en la página de Alphabet  no son compatibles con la manera de dibujar las marcas de Tableau.

Ecuación para dibujar la letra “C” – incompatible con la manera en que Tableau dibuja las marcas.

La ecuación original: \[\left(x-1\right)^2+\left(y-1\right)^2=1\left\{x\le1.75\right\}\]
se puede descomponer en dos trazos para y: \[ y = 1+\sqrt{1 – \left(x-1\right)^2} \left\{x\le1.75\right\}\]\[ y = 1-\sqrt{1 – \left(x-1\right)^2} \left\{x\le1.75\right\}\]
en los que ese “1.75” hace referencia a la posición de X -que habrá de variar según la posición de cada letra.

En Excel (y con la ayuda de papel y lápiz para despejar la x y la y), con un poco de paciencia, reconvirtiendo todas las ecuaciones en función de la posición de x:
Muestra de las ecuaciones de los distintos trazos — click para descargar todas.

Primera Incursión en Alteryx - preparación.

  1. Transportar las ecuaciones a las distintas posiciones usando Alteryx.
    1. Decidir el número de letras con el que trabajar.
    2. Procesar la plantilla de trazos y convertirla en fórmulas para Tableau.
    3. Repetir el proceso para cada una de las letras del punto (1).
Restringiendo el  número de letras a 9, con estas características (start y end definidos en función de las ecuaciones originales, con un ancho máximo de letra de dos unidades, y de la posición en las que aparecerán en el lienzo de Tableau).
Tabla con la posición de las distintas letras.
Posiciones de las letras
A partir de la plantilla obtenida anteriormente (paso 1.3), y usando Alteryx para automatizar el proceso.
Procesando la plantilla para obtener las fórmulas para Tableau.
De modo que, para cada letra, se obtiene una colección de cinco fórmulas, una por segmento necesario (algunas letras se pueden dibujar con un único trazo “i”, mientras que otras, como la “b” requieren hasta 5).
Resultado de aplicar el proceso a la plantilla original.
Combinando el número total de letras junto con la posición inicial y final (2.1) y el proceso desarrollado en Alteryx (2.2) para obtener el texto de 45 fórmulas, 5 por letra:
Combinando las posiciones originales de las letras con la plantilla de trazos.
Y el resultado:
Resultado de aplicar el proceso a la plantilla original con todas las letras — click para descargar el archivo de Excel.

Plantilla en Tableau

  1. Crear un libro de trabajo de Tableau que sirva de plantilla.
    1. Diseñar la fuente de datos.
    2. Bosquejo de la vista para dibujar las letras: fórmulas y cómputo de las mismas usando las agrupaciones generadas en el punto (1) como eje de las x .
    3.  Cálculo de las distintas letras (¿qué letras? ¿dónde?).

Mi objetivo es simplificar la fuente de datos original al máximo y manipular el número de puntos del trazado (y del eje de las x) empleando la capcacidad de Tableau de completar los datos.

La fuente de datos original:

Tabla con la posición de las distintas letras.
Fuente de datos inicial. Una única fila.

Tras una unión consigo misma:

Unión para generar dos filas.

Filas resultantes tras la unión.

Creando una fórmula cuyo valor varíe en función de la tabla (se podría parametrizar, pero por el momento voy a asignar un valor estático de 100):

Fórmula para generar valor mínimo y máximo.


Bins que van a determinar la posición de las letras.
En una hoja nueva:
  1. La agrupación generada anteriormente (padded) en detalle, para proporcionar la dimensión en la que generer los distintos cálculos de tabla.
  2. El campo calculado “t” que va a ser el “eje de las x” para la posición adecuada de las letras en las columnas. En este caso, ajustado con los valores 100 y 200 basados en la agrupación generada anteriormente (padded).
“t”~ Index & Size para posicionar las letras, calculada usando “padded”.
  1. Con “t” y “padded” ya en posición, no queda sino traer los campos calculados para los distintos trazos de las distintas letras. En este caso, uso como muestra los fragmentos de la primera letra. Todos los demás, los traeré posteriormente usando Alteryx.
  2. Cada uno de los trazos tiene que ser computado usando padded –tanto para t como para letter.
Preparando la hoja de trabajo – Click para ampliar.
Con esto estamos (casi) listos para automatizar el proceso.
Para el cálculo de las letras, se pueden combinar unos campos calculados:
  1. El primero, que he llamado “Name_letters“, se basa en un parámetro (en este ejemplo, puede ser un campo calculado que varíe en función de otras medidas como las ventas —ejemplo).
    Obtención del texto para dibujar basado en un parámetro. Se puede sustituir por un campo calculado variable en función de otras medidas, como por ejemplo aquí.
  2. A continuación, un campo calculado por cada letra. Como los distintos puntos no existen en la fuente de datos, sino que son generados al realizar las agrupaciones, para poder acceder a los distintos valores es necesario recurrir, de nuevo, a cálculos de tabla:
    Obtención de la primera letra–es necesario recurrir a cálculos de tabla.
    Variando la posición inicial del cálculo de tabla se pueden obtener las distintas letras.
  3. Por último, un campo calculado en función de la posición en el eje de las x para decidir qué letra dibujar en cada posición.
    Qué letra dibujar se decide en función de la posición en el eje de las x. Hardcoded.

Segunda Incursión en Alteryx y Últimos Toques en Tableau

  1. Generar las distintas fórmulas en el libro de Tableau usando Alteryx.
    1. Entendiendo los cambios entre las fórmulas obtenidas de Alteryx y la estructura de las fórmulas necesarias en Tableau.
    2. Transformando el texto en HTML y creando las fórmulas en el formato de Tableau.
    3. Actualizar la hoja de trabajo para que use todos los campos calculados creados, computados correctamente (usando padded).
    4. Workflow de Alteryx explicando los distintos pasos esbozados en 4.3.
La fórmula obtenida hasta ahora en Alteryx está en “texto” (plain text). Esto es útil únicamente para copiarla en una instancia abierta de Tableau al crear un campo calculado, pero no va a ser útil para generar programáticamente todas las fórmulas necesarias.
Fórmula en texto plano tal cual aparece en el flujo de Alteryx ahora mismo.
Útil únicamente para “cortar-pegar” en campos calculados de Tableau.
Fórmula como aparece en el XML del libro de trabajo.
En el XML del libro de trabajo, la fórmula está “traducida” a HTML (“>” se convierte en “>”). Además, este texto es únicamente la parte de la “formula”. Tableau necesita complementar esa información con el nombre del campo calculado, el alias (caption), el tipo,… y, al ser un cálculo de tabla, requiere instrucciones acerca de cómo calcularlos por defecto. Afortunadamente, todo esto se puede automatizar en Alteryx, usando una fórmula como plantilla.
Partiendo de la plantilla generada anteriormente (paso 2.3), y usando una tabla de referencia con los códigos HTML, es fácil reemplazar los valores que requieren transformación usando Alteryx y la herramienta “Find and replace”.
Convirtiendo a código HTML los caracteres necesarios.
Una vez obtenida la fórmula en HTML, es necesaria transponerla al libro de trabajo. Lo que se llama “XML hacking” puesto que trabajamos directamente con el XML del .twb en lugar de editarlo con la interfaz “drag&drop” de Tableau. Para facilitarlo, he edito primero el libro en un editor de textos, en el que creo una fórmula como plantilla basandome en los campos calculados en el punto 4.1.
Fórmula modelo.
Esta fórmula la podemos usar ahora como plantilla en Alteryx para ir actualizando y creando los “N” campos calculados (45 en este caso).
Extrayendo la fórmula modelo del libro de trabajo.
Y podemos ahora usar esta fórmula modelo para crear todas las fórmulas necesarias:
Generando el libro de trabajo con todas las fórmulas a partir del modelo. Descarga aquí el archivo de Alteryx.
Vuelta a examinar el XML del libro de trabajo. En este caso, la estructura de la hoja de trabajo:
La hoja en Tableau.
Al examinar la estructura en XML se encuentran tres secciones que tendremos que editar para incorporar todos los campos calculados:
Estructura de la hoja de trabajo en XML.
  1. Parece claro que, para incorporar más campos calculados, habrá que editar el “categorical filter”. En concreto, añadir tantas secciones “Groupfilter” como campos tengamos.
  2. En las filas (rows) tenemos los valores de medidas y en las columnas el campo “t” creado anteriormente.
  3. Para computar el rango entero de padded, hay que seleccionar la opción de “Mostrar filas vacías” del menú de Análisis > Diseño de Tabla.
Pero… ¡eso no es todo! Al desplegar el apartado de “Datasource dependencies” descubriremos que hacen falta dos entradas por cada una de los campos calculados que vamos a poner en la vista.
  1. El primero es idéntico al que ya hemos empleado en el apartado anterior y que contiene el nombre, alias, fórmula, etc.
    Definición del campo calculado, idéntico al ya calculado.
  2. El segundo, “column-instance“, contiene la definición específica, incluyendo cómo computar respecto a los distintos campos, para esta vista específica.
    Estructura específica para la vista actual, con el cómputo detallado.
Veamos cómo realizar todas las transformaciones necesarias en Alteryx: Primero, a partir del .twb (leído como .csv, sin delimitadores y concatenado en un único registro), extraemos la hoja de trabajo de ejemplo (llamada TEST en este caso).
Obtener la hoja de trabajo.
A continuación, actualizamos el filtro de “Nombre de medidas” para que contenga todas las deseadas:
Obtención del “groupfilter” actualizado.
En el apartado anterior se obtuvo la definición de los distintos campos calculados (con el nombre, alias, fórmula, etc) que es necesario traer de nuevo al libro de trabajo, pero esta vez a la hoja seleccionada:
Actualización de las definiciones de los campos calculados.
Estas definiciones no incluyen el cómputo de los cálculos de tabla con cada una de las dimensiones nuevas incorporadas en la vista actual. Esto aparece en el apartado de “column-instance”, que podemos actualizar:
Definición específica con el cómputo de los cálculos de tabla.
Por último, sólo queda restaurar los valores “placeholder” del libro de trabajo:
Restaurando el libro de trabajo.
y…. voilá, pasamos de tener una hoja de muestra con un cálculo a la hoja con todos los segmentos de todas las letras. Ya sólo falta cambiar el tipo de gráfico a línea y añadir “nombres de medidas” al color:
Voilá…ya sólo falta formatear un poco la hoja y…¡listo!
El workflow completo de Alteryx:
El workflow de Alteryx completo — click aquí para descargarlo.


En este post he hecho mis primeros pinitos dibujando letras en Tableau; analizado un poco más la relación X-Y y las posibilidades que ofrece en Tableau; explorado los entresijos de los cálculos de tabla en una fuente de datos con dos únicos registros, al tiempo que comprobaba cómo Tableau entiende que deberían existir toda esa serie de puntos intermedios inexistentes tras establecer las agrupaciones (el “gap awareness” de Tableau).

Además, he introducido un par de apartados de la estructura del XML del archivo .twb y he creado, de manera programática, cerca de 50 cálculos (¡y mostrado cómo ponerlos en una hoja de trabajo!).

Algunos enlaces:

  1. La página de “Alphabet” de Desmos.
  2. Hoja de Excel con la plantilla de las fórmulas .
  3. Hoja de Excel con las múltiples letras.
  4. Archivo de Alteryx para combinar la plantilla con el listado de letras y posiciones.
  5. Archivo de Alteryx para procesar las fórmulas en texto plano a HTML.
  6. Archivo de Alteryx para combinar los distintos campos en una hoja de trabajo.
Espero que la lectura haya sido interesante. Cualquier comentario será bienvenido:


WW201822 - Paso a Paso

Enlace con los requerimientos aquí

Mi resumen aquí

Un reto en apariencia complicado que, sin embargo, se puede resolver en trece pasos y un par de cálculos de tabla:

  1. Cálculo de las ventas por estado

Tras conectar a la fuente de datos (Superstore), el primer paso es obtener una vista con las ventas por estado.

En una nueva hoja, colocamos VENTAS (sum(sales)) en columnas y STATE en filas.

  1. Filtro de región y Estados ordenados por ventas

La vista inicial del reto lanzado por Andy muestra únicamente los estados en la región del Este (aunque luego haya cambiado en su página a todos los estados)

Restringimos la vista añadiendo el campo de “Region” a la balda de filtros y seleccionando “East”.

Ordenamos los estados en función de las ventas de mayor a menor. Para ello, seleccionamos el menú desplegable de la marca de estados. A continuación, seleccionamos el tipo de orden (ascendente o descendente) que queremos obtener así como la medida que queremos usar. En este caso:
  • Orden: Descendente
  • Por: campo Sales
  • Agregación: Suma
  1. Incorporar Ciudad a la vista

En el reto planteado por Andy, cada barra muestra 1) el total de ventas del estado y 2) una etiqueta con las ventas de la ciudad con más ventas dentro de cada estado.

Vamos a comenzar por esta segunda parte. Para que en la etiqueta aparezca la ciudad, ésta debe estar en la balda de detalle.

Incorporamos CITY tanto a la balda de detalle como a las filas.

  1. Añadir RANK sobre la suma de ventas

Hay demasiadas ciudades en la vista ahora mismo. El objetivo es dejar, para cada estado, únicamente la que más contribuya a las ventas.

Podemos conseguir esto usando el cálculo de tabla “RANK”.

Hacer doble clic sobre la balda de las filas para añadir a la vista la función de RANGO: RANK(SUM([Sales]))

Inicialmente el rango aparecerá, probablemnte, calculado sobre estado y ciudad.

Nuestro objetivo es asignar el rango de cada ciudad dentro de cada estado, por lo que tenemos que alterar la selección que viene por defecto para dejar marcado únicamente la ciudad:

  1. Cambiar el RANGO a discreto

Cambiar el rango a discreto permite usarlo para ordenar las ciudades. Este paso no es estrictamente necesario, ya que podríamos usar el filtro basado en rango directamente, pero creo que es útil visualizarlo para seguir el proceso mental 

  1. Asignar el total de ventas del estado a cada una de sus ciudades

Para ello es necesario un cálculo de tabla que compute el total de ventas de cada estado.

Para ello, empezamos usando “WINDOW_SUM”, que computará el total de ventas en la vista.

En este caso, he optado por crear y guardar un cálculo nuevo en lugar de, simplemente, escribir el cálculo en la balda de columnas.
En general, es ésta una mejor práctica que, además, permite encadenar o anidar cálculos (aunque, en este caso, no vaya a ser necesario). 

Ahora, todas las filas (cada ciudad) tienen asignado el total de las ventas en la vista, debido al cálculo realizado.

  1. Configurar el cálculo de tabla para que sume las ventas dentro de cada estado.

Para que cada fila muestre el total de ventas debido únicamente al estado correspondiente, es necesario ajustar cómo se realiza el cálculo, de manera análoga a como hicimos con el rango:

  1. Transferir la suma de ventas al detalle

Para poder mostrar en la etiqueta el total de ventas, como requiere este reto, es necesario que el valor esté accesible en la vista.

Transferir la suma de ventas desde las columnas a la balda de detalle

Va así tomando forma la visualización, con una única medida representada por las barras.

  1. Duplicar el cálculo de tabla en la balda de detalle

Para poder configurar la etiqueta tal y como solicita Andy.

En este caso, basta con duplicar el cálculo de tabla previamente creado (por ejemplo, arrastrándola desde las columnas hasta la balda de detalle mientras se mantiene presionada la tecla “ctrl“)

  1. Configurar la etiqueta con los campos necesarios.

Editar la etiqueta para hacerla coincidir con los requerimientos, insertando los campos necesarios:

Además de añadir los campos, habrá que darles el formato requerido (justificación a la derecha; alineación: mitad derecha; formato de los campos: número, sin prefijo (no hay, en el original, símbolo de $, €,…) y sin decimales).

  1. Reducir el número de barras/ciudades de cada estado para mostrar únicamente la de mayor ventas

Es aquí cuando se pone de manifiesto la utilidad del cálculo de rango que realizamos antes. Basta con arrastrar el cálculo de rango hasta la balda de filtros…

…y editarlo para que únicamente se muestren las ciudades cuyo rango sea igual a “1”).

En este caso, he duplicado el cálculo de rango en lugar de únicamente arrastrarlo, para seguir mejor la construcción de la vista.

  1. Ajustar el formato (I)

Seleccionando “Ajustar Altura” nos aseguramos de que todos los estados aparezcan en la vista:

  1. Ajustar el formato (II)


Ocultar el encabezado tanto para el cálculo de tabla de rango (de hecho, este cálculo –aquí– es completamente prescindible para la vista que estamos construyendo) como del campo de ciudad presente en las filas.

Eliminar todas las líneas de la vista (líneas de cuadrícula, de cero, reglas de los ejes,…) 



Componer el dashboard

Paso A