Tablas Abultadas en Power Query y Transformación.
Es un formato que abulta bloques de datos de un objeto úncio en pequeños grupos congregados uno al lado del otro (horizontalmente) «A modo de costales/sacos en bodega».
— TABLA DE CONTENIDO DE ESTE ARTÍCULO
1. Definición y Esquema Visual
a. Definición
b. Esquema Visual
2. Casos de Bulky Table (Tabla Abultada)
a. Nombres Idénticos en Bultos (Caso 1)
b. Patrón Claro en Bultos (Caso 2)
c. No Hay Patrón en Bultos (Caso 3)
3. Transformación de Tabla Abultada con Nombres Indénticos
a. Paso a Paso
4. Otras Soluciones
Bienvenido a esta nueva entrega sobre Power Query, hemos estado pasando buen tiempo en DAX no sólo en los artículos sino también los seminarios web, por lo que es buen dar un aire a retos de limpieza de datos.
Hoy hablaremos de un formato muy especial, el formato de tabla abultada y su tratamiento en Power Query.
Definición y Esquema Visual
Con el flujo inevitable del tiempo me ha dado cuenta de que es un formato que aparece a menudo, al principio no lo consideraba muy frecuente, sin embargo, las asesorías me han hecho percatar de lo contrario
Definición de Tabla Abultada
Empecemos con una definición, que, si bien ya le he documentado al principio, la voy a dejar aquí en su propio espacio.
El formato de tabla abultada (en inglés: bulky table) como denominamos a la recolección de datos en formato horizontal …
… Es un formato que abulta bloques de datos de un objeto úncio en pequeños grupos congregados uno al lado del otro (horizontalmente) «A modo de costales/sacos en bodega.
Esquema Visual
Los esquemas visuales son representaciones gráficas resumidas que utilizamos en EFB y para entender, recordar y estandarizar los formatos de tablas
A estos esquemas, su estudio, transformación, creación de fórmulas personalizadas, ect. Los cobijamos bajo el nombre de: Topología de Tablas
Les presento el esquema visual aquí el de el formato abultado o Bulky Table:
Hey, dije Bulky no Forky … 😉
— ¿Ya te viste Toy Story 4? – Bueno, en mi vida aparecen cada vez más niños así que es inevitable
Como diría Floky en la serie Vikingos, soy un bromista
=) Basta de chanzas y juego de palabras, sigamos en lo que nos concierne →
Observa la siguiente tabla para esclarecer un poco de que se tratá:
Por eso nos evoca a costales/sacos uno al lado del otro, abultados en bodega.
Casos de Bulky Table (Tabla Abultada)
De este formato surgen muchas variaciones derivado de los nombres de los campos en cada bulto, aunque también pueden surgir variaciones de otras variables
No obstante, existen tres casos principales basados en los bultos:
Nombres Idénticos en Bultos (Caso 1)
Este es un caso especial porque contamos con la fortuna de que los nombres de las columnas en cada bulto son idénticos en todos los bultos
Un caso especial porque si bien la tendencia humana es de poner los nombres iguales a lo largo de los bultos, también es cierto que este tipo formatos encuentra su habitad natural en Excel
Por lo anterior, es propenso a convertirse en una tabla estructurada, aquellas que se crean con Ctrl + T.
Patrón Claro en Bultos (Caso 2)
En este caso, los nombres en las columnas en lo bultos no son idénticos, a pesar de ello podemos visualizar un común denominador en los nombres o patrones, por ejemplo:
Como se puede apreciar la diferencia en los nombres de las columnas varia en su parte final en los números
De hecho, esto surgió porque se convirtió la tabla mostrada en la imagen de Tablas abultadas con nombres idénticos a tabla estructurada en Excel, puesto que los nombres de los campos deben ser diferentes
No hay Patrón en los Bultos (Caso 3)
El tercer caso y último de la presente lista radica en que los nombres de las columnas en los bultos no son indénticos y tampoco siguen un patrón
Por ejemplo:
Este caso tiene muchísimas variaciones por sí sólo, por ejemplo, aquí la longitud del bulto, b, entra a jugar un papel crucial para la resolución
b = Longitud del bulto
Longitud del bulto = Número de columnas en cada bulto.
Transformación de Tabla Abultada: Caso 1 (Nombres Idénticos)
Formas de resolver este caso son muchas, aquí te mostraré una alternativa:
PASO #1: ELIMINAR PASOS
Un situación que detectamos es que al importar la tabla a Power Query automáticamente estos nombres indénticos pasan tener nombres diferentes puesto que se les coloca un sufijo: _número
Esto, lo que nos muestra que es pasa a serel caso 2, sin embargo, si nos fijamos en el panel de pasos aplicados Power Query, el solito añadis dos pasos: Ecabezados Promovidos y Tipo Cambiado.
Eliminemos esos dos pasos y observemos la tabla en el panel de resultados:
PASO #2: TRANSPONER TABLA
Como indica el nombre transponemos la tabla
Transformar → Tabla → Transponer
PASO #3: AGREGAR COLUMNA DE ÍNDICE
Como necesitamos pasar los elementos de una columna a nombres de campos, pero que además no se realice ningún tipo de agregado, entonces…
En estas condiciones agregamos una columna de índice, no imprta si Desde 0 o Desde
Para ello →
Agregar Columna → General → Columna de Índice → Desde 0
PASO #4: PIVOT
Ahora si vamos a pasar los elementos del campo Column1 para que se conviertan en nombres de columnas individuales
Puedes imaginar lo anterior como crear una tabla dinámica
Para conseguirlo seleccionamos la Column1 y de allí vamos al comando Columna Dinámica a la cual podemos acceder así:
Transformar → Cualquier Columna → Columna Dinámica o AlT, T, PI 😉
En el cuadro de diálogo que se despliega, nos aseguramos de seleccionar Column2 y opciones avanzadas dejar No agregar
Y Aceptar.
PASO #5: RELLENAR ABAJO
Seleccionamos las columnas ID del Pedido y Cantidad y Rellenar Abajo
Transformar → Cualquier Columna → Rellenar → Rellenar Abajo
PASO #6: DESHABILITAR NULOS
En la columna Fecha, desplegamos los filtros para deshabilitar (nulo)
La tabla queda casi lista:
#PASO 7: QUITAR COLUMNA DE ÍNDICE
Lo único que nos resta es quitar la columna de Índice y asignar el formato adecuado a cada campo, con lo cual finalmente llegamos al resultado →
Otras Soluciones
Como te comentaba al principio existen muchas formas de resolver este tipo de tablas, de hecho, con total seguridad habrá alternativas que involucren menos pasos y sean más intuitivas
Por ejemplo, Manuel vía correo electrónico brindo los siguientes pasos:
- Combinar columnas por parejas en función de los campos finales que deseemos, en este caso dos, FECHA y CANTIDAD, atendiendo como separador un carácter fácilmente identificable y que no suponga errores
- Seleccionar todas las columnas combinadas obtenidas y “Anular dinamización de las columnas”
- Los registros vacíos tan solo contendrán el separador, por lo que las filtraremos deseleccionando el mismo, para así visualizar tan solo los conjuntos de valores de la tabla inicial.
- Eliminar la columna atributo, dado que ya no nos hace falta y sabemos que el par de valores que buscamos se encuentra en la columna valor, separados por el carácter seleccionado
- Dividir la columna en dos atendiendo al carácter seleccionado
- Por último renombrar las columnas obtenidas con los nombres en este ejemplo: FECHA y CANTIDAD
Como ves un enfoque diferente y válido para este caso particular, de hecho, si tienes una serie de pasos diferentes compártela en la sección de comentarios, sería genal contar con más enfoque de solución
Yo personalmente he seleccionado los pasos del presente artículo porque me divide los pasos en dos etapas, donde el segundo arroja como salida el tipo de formato apilado o stacked table
Especialmente útil para la creación de las funciones personalizadas, así:
- Bulky Table y Luego
- Stacked Table
Como te has percatado, en el presente artículo sólo estudiamos el Caso 1, los Caso 2 y Caso 3 se sale del ámbito de lo que hemos tratado, sin embargo, en el capítulo 8 de nuestro libro El ADN de Power Query ASA
Eso es todo de mi parte por el día de hoy ..
Estamos charlando en la sección de comentarios, gracias por leer este artículo
Un cálido saludo
— Miguel Caballero