Estructurando la información en una hoja de cálculo

Un error habitual cuando se utiliza una HdC como almacén de información es emplear un formato incorrectamente estructurado en términos de registros y dimensiones / métricas. Esto dificulta la representación y análisis posterior de sus datos, tanto en la propia HdC como en herramientas de representación como Google Data Studio. A menos, claro, que nos las queramos ver con fórmulas de esas que dan miedito con solo mirarlas y cuyo oscuros entresijos vamos olvidando con elevada probabilidad con el paso del tiempo.

Elementos en una tabla monda y lironda.

Por ejemplo, en la tabla anterior la representación de los datos es adecuada desde el punto de vista de la visualización (la miramos y obtenemos información rápidamente), pero no está correctamente estructurada si nos quitamos el chip de tabla va, tabla viene, y nos ponemos el que debe utilizarse para construir bases de datos relacionales, en las que prima un principio de economía de campos (columnas), que pueden a su vez ser métricas o dimensiones.

En el caso de la tabla anterior, no tiene sentido que cada posible asignatura disponga de su propia columna (campo) dado que se trata de categorías de una misma dimensión (asignatura), de las que registramos su tipo (Nueva matrícula, Repite, Convalida). Su representación correcta sería esta:

Representación orientada a la visualización vs. representación orientada a la estructura.

El pasado viernes le estuve dando algunas vueltas a esto y programé, utilizando Google Apps Script, una función personalizada que "despliega" (unpivot) una tabla como la anterior. Recorrer y recomponer la matriz de datos mediante unos sencillos bucles y devolver el resultado es coser y cantar. Así nos ahorramos tener que hacerlo a mano (o utilizar fórmulas matriciales pesadas y monstruosas).

Pero todo está inventado, al parecer, y tras darme una vuelta por el imprescindible Stack Overflow me he encontrado con un hilo donde se hablaba justo de este problema y alguien más listo que yo había implementado la misma función de un modo mucho más elegante 😳 (con funciones de lista y tal, que son una pasada):

=UNPIVOT(datos; ncolfijas; {encabezado})

En cualquier caso, he incorporado esta función a mi hoja de cálculo HdC+, cuya plantilla en su versión de desarrollo 4 puedes encontrar aquí.

Y aquí tienes la función personalizada en acción:

UNPIVOT() en acción.
¿Y qué pasa si partiendo de la tabla correctamente estructurada quisiéramos representar la información del modo inicial, con una columna para cada asignatura posible? Pues para eso tenemos, amigos y amigas, las tablas dinámicas (ahora sí), que como su nombre indican sirven para visualizar dinámicamente la información 😬...


 ... osea, que para eso están. Pero la representación, cuanto más estructurada, mejor.

Comentarios