Esto es parte de una serie de variación sin pivote, que se trata de convertir sus datos en un formato tabular adecuado que sea adecuado para el análisis. La mayoría de las transformaciones se pueden realizar mediante la interfaz de usuario.
El ejemplo que les voy a mostrar proviene de una pregunta planteada por un miembro de LuckyTemplates en el . Si miramos la tabla de origen, vemos una fila. El diseño deseado muestra tres registros donde esa única fila de la tabla de origen se divide por tipo de horas extra.
Entonces, necesitamos crear un atributo que diga algo sobre los valores en ese registro y luego combinar las horas y los costos para ese tipo de horas extra.
Hay varias formas de lograr esto, pero voy a compartir con ustedes una solución que usa una poderosa función M, que no está disponible a través de la cinta llamada List.Zip . Así que vamos a examinar cómo funciona eso.
Columna Unpivot de LuckyTemplates mediante List.Zip
En la parte superior izquierda, hice zoom en los pares de datos y podemos distinguir tres tipos de horas extra. La función List.Zip toma una lista única que contiene una lista anidada y luego devuelve una lista única con una lista anidada como resultado.
Nuestra primera lista contendrá los atributos que envían algo sobre los valores en ese registro. La segunda lista contendrá las horas y la última es el costo.
Si miramos a la derecha, podemos ver que List.Zip luego combina esos valores de la lista anidada en función de su posición. Entonces, todo lo que está en la primera fila a la izquierda se combina en una nueva lista a la derecha. Y lo mismo ocurre con todas las demás filas de la lista de origen que proporcionamos List.Zip.
Ahora, vayamos a Power Query . Ya mencioné que List.Zip no está disponible a través de la cinta, por lo que tenemos que escribir una M real para usarlo. Y podemos hacer eso si agregamos una columna personalizada.
Entonces, a través de la mini tabla en la esquina izquierda, voy a seleccionar Agregar columna personalizada .
Ingresemos a List.Zip, luego pongamos un paréntesis de apertura. Se busca una sola lista con listas, ¿no? Así que voy a usar el inicializador de lista para crear esa lista.
Luego, vemos valores de texto, uno para cada tipo de tiempo extra. Agregaré una coma y crearé una nueva lista. Recuerda que List.Zip combina los valores en función de su posición en la lista. Entonces, debemos pasar los valores exactamente en el mismo orden. Luego, pondré un corchete para esa lista.
Nuestra lista final va a contener el costo, así que pondré una coma y una llave de apertura, y seleccionaré los valores en el mismo orden. Y nuevamente, agregue un corchete de cierre para esa lista, luego un corchete de cierre para nuestras listas que contienen listas y otro paréntesis de cierre para la función. Luego, haga clic en Aceptar.
Ahora, ya no necesitamos las columnas de valor aquí, ¿verdad? Así que voy a seleccionar el primero, presionar shift, seleccionar el último, luego hacer clic y Eliminar columnas .
Voy a hacer clic en decidir en el espacio en blanco aquí para ver el contenido de nuestras listas. Podemos ver que tenemos una lista que contiene varias listas, y esa es exactamente la salida que genera List.Zip.
Expandir a nuevas filas y extraer valores
Entonces, con esas flechas hacia los lados, voy a expandirme a nuevas filas.
Y generó tres récords. Cuando vuelvo a hacer clic en el lado del espacio en blanco, podemos ver que tenemos los valores para ese primer registro.
Podemos extraerlos haciendo clic en esas flechas laterales nuevamente y haciendo clic en Extraer valores , luego seleccione un delimitador. Voy a ir con una pestaña y presionar OK.
Todos los valores no se combinan en una sola columna, por lo que en la pestaña Transformar, podemos seleccionar Dividir columna y luego hacer clic en Por limitador .
Luego aquí, seleccionamos la pestaña y presionamos OK.
No detectó los tipos de datos correctamente, así que al presionar Mayús, seleccionaré la última columna y, en la pestaña Transformar, seleccionaré Detectar tipos de datos .
Y ahora, démosle nombres propios a estas columnas.
En este tutorial, le mostré cómo anular la dinamización de varias combinaciones de columnas sin usar ninguno de los comandos de LuckyTemplates Unpivot Columns a los que se puede acceder en la cinta. Aquí usé List.Zip para descentrar conjuntos de datos en Power Query.