Ads Top

3 Formas de Pivotar Datos para Tableau


En el curso de mi trabajo con Tableau, me di cuenta de cuánto le gusta a la plataforma que los datos estén bien organizados en filas. Por ejemplo, supongamos que tiene algunos datos de la encuesta que contienen una sola fila para cada respuesta, luego respuestas numéricas del 1 al 5 para 5 preguntas. Por lo general, los resultados de la encuesta enumerarán cada una de esas respuestas en columnas separadas, como esta:



Pero, datos como este a menudo pueden ser muy difíciles de visualizar en Tableau. Sería mucho mejor si sus datos fueran "pivotados" para verse así:


Esto le dará una medida única, que puede hacer que sus datos sean mucho más fáciles de trabajar en Tableau. Puede reorganizar manualmente estos datos si lo desea, pero eso es mucho trabajo. La buena noticia es que hay varias formas en que puede pivotar sus datos automáticamente para prepararse para la visualización en Tableau. Este blog compartirá 3 de esos métodos contigo.

Pivotando con Tableau
El método más simple es pivotar datos directamente en Tableau. Si trae sus datos no divididos a Tableau, puede seleccionar las columnas que desea pivotar, en nuestro caso, las cinco preguntas, luego haga clic con el botón derecho y seleccione "Pivotar" como se muestra a continuación. Luego puede cambiar el nombre de los campos dinámicos y los valores que desee.


Bastante genial, ¿eh? Es decir, hasta que intente hacer esto con una fuente de datos que no sea Excel, Google Sheets o texto. Desafortunadamente, Tableau no le permite cambiar las conexiones a bases de datos "reales" como SQL Server y Oracle, por lo que no tiene suerte ... ¿o no?

Pivotar con Tableau Prep
Hace un par de años, Tableau lanzó un nuevo producto de software llamado Tableau Prep. El software está diseñado para permitirle “preparar” rápida y fácilmente sus datos antes de visualizarlos en Tableau. Si bien ya puede hacer parte de este trabajo de preparación de datos en Tableau Desktop: unir tablas, pivotar columnas en filas, agrupar texto similar, etc. de los pasos para que puedan ejecutarse fácilmente nuevamente en el futuro, ahorrándole el tiempo de preparar sus datos manualmente. 

Tableau Prep tiene una función de pivote incorporada que le permite pivotar rápida y fácilmente sus datos desde cualquier fuente de datos compatible con Tableau Prep, incluidos SQL Server, Oracle y muchas otras plataformas de bases de datos.

Para pivotar nuestros datos en Tableau Prep, primero debemos conectarnos a nuestros datos de origen. Luego agregamos un paso de tabla dinámica. A continuación, arrastramos sobre los campos que deseamos pivotar. Y, como paso final, podemos cambiar el nombre de los campos dinámicos. La animación a continuación muestra los pasos.


Pivotar con SQL personalizado
Si, por alguna razón, Tableau Prep no está disponible para usted o simplemente no desea introducir otra herramienta en su proceso, hay una solución final que funcionará con muchas plataformas de bases de datos importantes, incluidos SQL Server y Oracle.

Supongamos que tiene una tabla llamada Respuestas en su base de datos SQL u Oracle que se parece a la muestra de la encuesta mostrada anteriormente. Aquí está la declaración de creación en SQL:  

CREATE TABLE dbo. Respuestas
(
     [Encuestado] [nvarchar](50),
     [Pregunta1] [int],
     [Pregunta2] [int],
     [Pregunta3] [int],
     [Pregunta4] [int],
     [Pregunta5] [int],
)

Tanto SQL como Oracle tienen funciones para hacer esto. La función PIVOT de SQL / Oracle en realidad hace exactamente lo contrario de lo que queremos: cambia las filas en columnas. Entonces, lo que queremos es UNPIVOT. UNPIVOT hace casi exactamente lo mismo que la función pivote de Tableau.

Comencemos mirando una simple declaración SELECT. Para extraer los datos de la tabla Respuestas, escribiríamos algo como esto. Nota: Estoy usando SQL Server, pero casi todo esto se traduce en Oracle. Cuando haya diferencias, las señalaré.   

SELECT Encuestado, Pregunta1, Pregunta2, Pregunta3, Pregunta4, Pregunta5 FROM dbo.Respuestas

Esto devolverá los siguientes datos, que se parecen bastante a nuestra hoja de cálculo original.


Sin embargo, desvincular los datos es un poco más complejo. Aquí está el SQL

SELECT Encuestado, Pregunta, Responder
FROM
(
SELECT Encuestado, Pregunta1, Pregunta2, Pregunta3, Pregunta4, Pregunta5 FROM dbo.Respuestas
AS source_query
UNPIVOT
(
Responder FOR Pregunta IN (Pregunta1, Pregunta2, Pregunta3, Pregunta4, Pregunta5)
AS pivot_result

Analicemos esto con un poco más de detalle. En primer lugar, vemos nuestra declaración de selección original cerca de la parte superior, comenzando en la cuarta línea:

SELECT Encuestado, Pregunta1, Pregunta2, Pregunta3, Pregunta4, Pregunta5 FROM dbo.Respuestas

Esto extraerá nuestro conjunto de datos inicial directamente de la tabla. Observe que esta subconsulta se alias como "source_query". Puede alias la subconsulta con el nombre que elija, pero debe estar allí.

A continuación vemos lo siguiente:

UNPIVOT
(
Responder FOR Pregunta
IN (Pregunta1, Pregunta2, Pregunta3, Pregunta4, Pregunta5)
AS pivot_result

Esto iniciará las instrucciones para desconectar la selección anterior. Tomará el valor en cada uno de los cinco campos de preguntas y los colocará en una sola columna llamada Respuesta . El nombre de cada pregunta (Pregunta1, Pregunta2, etc.) se colocará en una columna llamada Pregunta . Nuevamente, al igual que la selección original, debemos darle un alias a esta subconsulta; en este caso, he usado "pivot_result". 

Finalmente, tenemos la primera parte de la consulta, "SELECT Encuestado, Pregunta, Responder FROM". Esto define qué campos se devuelven de la combinación de las dos primeras subconsultas.

Cuando lo ejecutamos, obtenemos el siguiente resultado, que es exactamente lo que necesitamos:


La sintaxis para Oracle es casi exactamente la misma con una diferencia clave. En Oracle, los alias de subconsulta no son necesarios. Entonces su declaración se vería así:

SELECT Encuestado, Pregunta, Responder
FROM
(
SELECT Encuestado, Pregunta1, Pregunta2, Pregunta3, Pregunta4, Pregunta5 FROM dbo.Respuestas
)
UNPIVOT
(
Responder FOR Pregunta IN (Pregunta1, Pregunta2, Pregunta3, Pregunta4, Pregunta5)
)

Ahora que hemos escrito nuestro SQL, podemos aprovecharlo en Tableau mediante los siguientes pasos:

1) Conéctese a su base de datos en Tableau. 
2) Crear una "Nueva personalización de SQL" 
3) Copie y pegue el SQL documentado anteriormente. 

Con Tableau Prep, el SQL personalizado para datos dinámicos es probablemente una solución muy específica, pero podría ser útil en algunos casos de uso, por lo que si lo necesita, ya sabe cómo hacerlo.

¡¡Gracias por leer!!

Ken Flerlage, 3 de junio de 2018
Twitter | LinkedIn | GitHub | Tableau Public      

3 comentarios:

  1. muchas gracias,En latinoamerica hay muchas personas dentro de las organizaciones que no dominan el idioma ingles, pero necesitas capacitar. Su trabajo colabora en ese sentido.

    ResponderEliminar
    Respuestas
    1. Espero que esto te sea de ayuda. No podemos traducir todo nuestro contenido, pero intentaremos agregar algunos blogs adicionales con el tiempo.

      Eliminar
  2. Martin Lombardo10 mayo, 2022 08:44

    Muchas gracias por el post y el blog. Siempre es bueno tener estos lugares para consultar dudas!!

    ResponderEliminar

Con la tecnología de Blogger.