Trabajar con tablas cruzadas en el editor de carga de datos
Una tabla cruzada es un tipo habitual de tabla, que ofrece una matriz de valores entre dos listas ortogonales de datos de encabezado. Por lo general no es el formato de datos más óptimo si queremos asociar los datos con otras tablas de datos.
Esta sección describe cómo podemos despivotar una tabla cruzada, es decir, transponer (o trasladar) partes de la misma a filas utilizando el prefijo crosstable en una sentencia LOAD en el script de carga de datos.
Despivotar una tabla cruzada con una columna cualificadora
Una tabla cruzada a menudo va precedida de una serie de columnas cualificadoras, que deben leerse de manera directa/continua. En este caso hay una columna de cualificación, Year, y una matriz de datos de ventas por mes.
Year | Jan | Feb | Mar | Apr | May | Jun |
---|---|---|---|---|---|---|
2008 | 45 | 65 | 78 | 12 | 78 | 22 |
2009 | 11 | 23 | 22 | 22 | 45 | 85 |
2010 | 65 | 56 | 22 | 79 | 12 | 56 |
2011 | 45 | 24 | 32 | 78 | 55 | 15 |
2012 | 45 | 56 | 35 | 78 | 68 | 82 |
Si esta tabla simplemente se carga en Qlik Sense el resultado será una tabla con un campo por Year y otro campo por cada uno de los meses. Por regla general, éste no es el resultado que interesa. Probablemente preferiríamos tener tres campos generados:
- La columna cualificadora, en este caso Year, marcada en verde en la tabla superior.
- El campo de atributo, en este caso representado por los nombres de mes Jan - Jun marcados con amarillo. Este campo se puede denominar de forma adecuada Month.
- Los valores de la matriz de datos, marcados con azul. En este caso representan datos de ventas, por lo que pueden denominarse Sales de forma adecuada.
Esto se logra añadiendo el prefijo crosstable a la sentencia LOAD o SELECT, por ejemplo:
crosstable (Month, Sales) LOAD * from ex1.xlsx;
Esto crea la tabla siguiente en Qlik Sense:
Year | Month | Sales |
---|---|---|
2008 | Ene | 45 |
2008 | Feb | 65 |
2008 | Mar | 78 |
2008 | Abr | 12 |
2008 | May | 78 |
2008 | Jun | 22 |
2009 | Ene | 11 |
2009 | Feb | 23 |
... | ... | ... |
Despivotar una tabla cruzada con dos columnas cualificadoras
En este caso hay dos columnas cualificadoras a la izquierda, seguidas por las columnas matriz.
Salesman | Year | Jan | Feb | Mar | Apr | May | Jun |
---|---|---|---|---|---|---|---|
A | 2008 | 45 | 65 | 78 | 12 | 78 | 22 |
A | 2009 | 11 | 23 | 22 | 22 | 45 | 85 |
A | 2010 | 65 | 56 | 22 | 79 | 12 | 56 |
A | 2011 | 45 | 24 | 32 | 78 | 55 | 15 |
A | 2012 | 45 | 56 | 35 | 78 | 68 | 82 |
B | 2008 | 57 | 77 | 90 | 24 | 90 | 34 |
B | 2009 | 23 | 35 | 34 | 34 | 57 | 97 |
B | 2010 | 77 | 68 | 34 | 91 | 24 | 68 |
B | 2011 | 57 | 36 | 44 | 90 | 67 | 27 |
B | 2012 | 57 | 68 | 47 | 90 | 80 | 94 |
El número de columnas cualificadoras se puede indicar como un tercer parámetro en el prefijo crosstable de la siguiente manera:
crosstable (Month, Sales, 2) LOAD * from ex2.xlsx;
El resultado en Qlik Sense es el siguiente:
Comercial de venta | Year | Month | Sales |
---|---|---|---|
A | 2008 | Ene | 45 |
A | 2008 | Feb | 65 |
A | 2008 | Mar | 78 |
A | 2008 | Abr | 12 |
A | 2008 | May | 78 |
A | 2008 | Jun | 22 |
A | 2009 | Ene | 11 |
A | 2009 | Feb | 23 |
... | ... | ... | ... |