Deshacer dinámicamente múltiples columnas en LuckyTemplates

En este tutorial, revisaremos un tema que cubrí anteriormente sobre cómo deshacer la rotación de varias columnas en Power Query usando List.Zip. Un miembro de LuckyTemplates preguntó en el cómo hacer que ese método sea dinámico. Puede ver el video completo de este tutorial en la parte inferior de este blog.

He etiquetado esto como avanzado porque escribiremos una serie de funciones M y algunas de ellas podrían incluso ser nuevas para usted.

Dicho esto, pasemos a Power Query.

Tabla de contenido

Datos en formato tabular

Como puede ver, estos datos ya se han transformado en un formato de tableta adecuado para el análisis. Ese proceso, aunque es muy importante, no se cubrirá aquí, pero repasaremos brevemente cada paso.

Deshacer dinámicamente múltiples columnas en LuckyTemplates

En el paso de origen, vemos una repetición constante de los pares de valores, que son las horas y los contactos para cada uno de los atributos enumerados anteriormente.

Deshacer dinámicamente múltiples columnas en LuckyTemplates

En los Pasos Aplicados , puedes ver el resto de pasos. Eliminamos algunas filas superiores, eliminamos las columnas vacías, limpiamos nuestros valores de texto y los llenamos. Luego, transpusimos nuestros datos, eliminamos el registro vacío, fusionamos las columnas uno y dos, limpiamos nuestros valores de texto nuevamente y transponemos nuestros datos nuevamente.

Creamos un paso personalizado, que examinaremos con más detalle más adelante, extrajimos valores de nuestra lista y finalmente cambiamos el tipo.

Deshacer dinámicamente múltiples columnas en LuckyTemplates

Veamos el código completo. Lo que nos interesa aquí es la función List.Zip . Breve resumen, toma una sola lista como parámetro y luego devuelve una lista. Como resultado, vemos que esta lista única en este caso contiene tres listas separadas.

Si examinamos la primera lista, contiene nombres de atributos codificados, solo valores de texto que se ingresaron. La segunda lista contiene referencias de columnas codificadas para los valores de hora. La lista final contiene referencias de columna codificadas para los valores de contacto.

List.Zip luego toma un elemento de cada una de estas tres listas y los combina según su posición en una nueva lista. Por ejemplo, cada primer elemento de esas listas se combina en una nueva lista. Lo mismo ocurre con todos los valores enumerados en segundo lugar en esa lista, y así sucesivamente.

Los valores codificados de forma rígida pueden estar preocupados si es poco probable que los atributos cambien con el tiempo. Entonces, si la próxima vez, no todos los elementos están presentes o existen nuevos elementos, puede tener problemas.

Alteración del código para deshacer el pivote de múltiples columnas dinámicamente

Entonces, ¿cómo hacemos esta dinámica?

Lo primero que hago es revisar el código para ver si hay un lugar donde podamos recoger esos valores de atributo sin tener que diseñar un paso separado para lograrlo. Así que vamos a dar un paso atrás en el código, y este paso RemoveNull es perfecto.

Deshacer dinámicamente múltiples columnas en LuckyTemplates

Puede ver que enumera todos los valores de atributo aquí en la columna uno. Podemos usar la interfaz de usuario para extraerlos.

Deshacer dinámicamente múltiples columnas en LuckyTemplates

Así que haga clic con el botón derecho en ese encabezado y, debajo, seleccione Agregar como nueva consulta .

Deshacer dinámicamente múltiples columnas en LuckyTemplates

Obtenemos esta lista y eso es una buena noticia porque queremos reemplazar esa lista codificada que vimos anteriormente con la dinámica. Todo lo que tenemos que hacer es ordenar los valores.

Deshacer dinámicamente múltiples columnas en LuckyTemplates

Comencemos eliminando esos valores nulos. Entonces, dentro de la barra de fórmulas, agregaremos List.RemoveNulls . Como puede ver ahora, todos los elementos se repiten y eso se debe a los pares de valores. Se enumera una vez para las horas.

Deshacer dinámicamente múltiples columnas en LuckyTemplates

Y nuevamente, para los contactos, para eliminar esos duplicados, podemos agregar un List.Distinct . Ahora hemos creado esta lógica y todo lo que tenemos que hacer es copiarla y pegarla nuevamente en nuestra consulta de muestra.

Deshacer dinámicamente múltiples columnas en LuckyTemplates

En la Consulta de muestra , abra el Editor avanzado y cree un nuevo nombre de variable. Llamémoslo, AttributeList . Luego pegamos el código y ponemos una coma.

Deshacer dinámicamente múltiples columnas en LuckyTemplates

Ahora volvamos a nuestro paso personalizado. Dentro de List.Zip, podemos reemplazar esa primera lista por nuestro nombre de variable (AttributeList).

Deshacer dinámicamente múltiples columnas en LuckyTemplates

Ahora echemos un vistazo más de cerca a la segunda lista. Sabemos que hace referencia a nombres de columnas, y cada uno de esos nombres de columnas comienza con el mismo atributo que ya tenemos en esa lista seguido de un espacio y un texto "horas".

Solo necesitamos agregar un sufijo a cada elemento. Así que retrocedamos un paso y agreguemos una columna personalizada para crear algo de lógica.

Deshacer el pivote de múltiples columnas dinámicamente: Agregar lógica de columna personalizada

Es solo una columna temporal, por lo que no es necesario que le demos un nombre propio. Lo eliminaremos una vez que hayamos terminado.

Deshacer dinámicamente múltiples columnas en LuckyTemplates

Para cambiar los valores de una lista, podemos usar la función List.Transform . Necesitamos transformar los valores en nuestra AttributeList , así que voy a pegar eso.

Aquí en los encabezados, vemos que los valores de texto comienzan con una letra mayúscula y luego el resto es minúscula. Nuestro atributo contiene solo una palabra en mayúscula, por lo que también debemos transformar ese valor de texto. Y podemos usar el guión bajo para acceder a cada elemento de la lista y agregaremos ese sufijo.

Con eso, obtenemos un valor de lista en nuestra columna. No importa cuál seleccione, simplemente haga clic en el lado en el espacio en blanco en cualquiera de ellos aquí.

Deshacer dinámicamente múltiples columnas en LuckyTemplates

Debajo de la página, vemos una vista previa de esa lista que hemos creado. Entonces, verá que tenemos esos encabezados de columna que ahora están correctamente enmarcados para que coincidan con los encabezados de columna que vemos aquí con esta lista.

Ahora tenemos los medios para identificar los campos de nuestro registro a los que queremos acceder. Así que abramos nuestro cuadro de diálogo de columna personalizada nuevamente y agreguemos Record.SelectFields . Quiere un registro como registro, por lo que podemos usar ese guión bajo para acceder al registro actual en el que estamos. Y luego le hemos dado una lista con todos esos nombres de campo, así que agregue un paréntesis de cierre y presione OK .

Deshacer dinámicamente múltiples columnas en LuckyTemplates

Así que ya no tenemos una lista, pero ahora tenemos un registro. Hagamos clic en el lateral del espacio en blanco nuevamente para ver el contenido de ese registro. Aquí vemos que enumera los nombres de los campos de registro y los valores de los campos de registro.

Deshacer dinámicamente múltiples columnas en LuckyTemplates

Pero solo estamos interesados ​​en los valores del campo de registro, por lo que necesitamos extraer eso. Volvamos a nuestro cuadro de diálogo de columna personalizada y agreguemos Record.FieldsValues ​​.

Deshacer dinámicamente múltiples columnas en LuckyTemplates

Ahora obtenemos una lista nuevamente y ya no es un registro. Volvemos a hacer clic en el lado del espacio en blanco y verá que ahora tenemos una lista con solo esos valores. Eso se ve bien.

Deshacer dinámicamente múltiples columnas en LuckyTemplates

Copiemos la lógica completa que hemos creado, excepto por los últimos paréntesis de cierre. Y ahora podemos eliminar nuestra columna temporal porque ya no la necesitamos.

Deshacer dinámicamente múltiples columnas en LuckyTemplates

En nuestra barra de fórmulas, seleccionamos nuestra segunda lista y la reemplazamos con nuestra lógica.

Deshacer dinámicamente múltiples columnas en LuckyTemplates

Para crear una lista con los valores de los campos de registro para los contactos, todo lo que necesitamos cambiar es el sufijo. Así que también podemos seleccionar esa última lista y pegarla en nuestra lógica.

Deshacer dinámicamente múltiples columnas en LuckyTemplates

Luego, en lugar de hours , cambiemos esto a contactos .

Deshacer dinámicamente múltiples columnas en LuckyTemplates

No hay errores y se ve bien. Esta es ahora una solución dinámica para deshacer el pivote de varias columnas.

Deshacer dinámicamente múltiples columnas en LuckyTemplates


Columnas Unpivot de LuckyTemplates – Tutorial de Power Query
Cómo quitar un pivote de columnas en LuckyTemplates
Conceptos básicos de Unpivot y Pivot en LuckyTemplates – Revisión del editor de consultas

Conclusión

Así es como elimina dinámicamente varias columnas en mediante List.Zip.

Si aparece un nuevo atributo, AttributeList lo recogerá automáticamente. Y cuando un elemento ya no existe, no estará presente en esa lista.

Espero que hayas disfrutado este. Mire el video completo a continuación para obtener más detalles sobre este tutorial y consulte los vínculos a continuación para obtener más contenido sobre cómo deshacer el pivote de varias columnas en LuckyTemplates.

Mis mejores deseos

Toronjil

Leave a Comment

Time Intelligence en LuckyTemplates: cómo calcular el número de transacciones realizadas en los últimos N días

Time Intelligence en LuckyTemplates: cómo calcular el número de transacciones realizadas en los últimos N días

Descubra cómo calcular el total de transacciones realizadas en los últimos N días y obtenga información útil utilizando la inteligencia de tiempo en LuckyTemplates.

Cómo evaluar clústeres en sus datos mediante la técnica DAX en LuckyTemplates

Cómo evaluar clústeres en sus datos mediante la técnica DAX en LuckyTemplates

En este tutorial, demuestro cómo mostrar clústeres en sus datos permite extraer información valiosa usando técnicas DAX avanzadas.

¿Cuánto personal tenemos actualmente? Lógica de fechas múltiples en LuckyTemplates usando DAX

¿Cuánto personal tenemos actualmente? Lógica de fechas múltiples en LuckyTemplates usando DAX

En este tutorial, aprenderá a calcular la <strong>población actual del personal</strong> para las relaciones múltiples de la tabla de calendario mediante la función COUNTROWS y FILTER en LuckyTemplates.

Hacer una solicitud HTTP en Power Automate

Hacer una solicitud HTTP en Power Automate

Aprenda a crear una solicitud HTTP con Power Automate y cómo implementar soluciones efectivas para la automatización de tareas.

Programe un flujo de escritorio para que se ejecute en Power Automate

Programe un flujo de escritorio para que se ejecute en Power Automate

En este tutorial, aprenda cómo programar un flujo de escritorio en Power Automate para automatizar tareas en la web y su escritorio.

Power Automate Terminar Control de acción en flujos

Power Automate Terminar Control de acción en flujos

Aprenda a usar correctamente el control Terminar acción de Power Automate que termina las acciones en un flujo si no se cumple alguna de las condiciones.

Power Query: combinar archivos de varias carpetas

Power Query: combinar archivos de varias carpetas

Aprenda a combinar archivos de varias carpetas en su red, escritorio, OneDrive o SharePoint utilizando Power Query.

Tipos de flujo de Power Automate y cuándo usarlos

Tipos de flujo de Power Automate y cuándo usarlos

En este blog, analizamos las similitudes y diferencias entre los tipos de flujo de Power Automate y determinamos cuándo usar cada flujo. Encuentra la mejor opción de automatización.

Conectores de Power Automate: número, texto y fecha y hora

Conectores de Power Automate: número, texto y fecha y hora

Familiarízate con algunos conectores Power Automate integrados que transforman cadenas en otro formato: número, texto y fecha y hora.

Tutorial del analizador VertiPaq: relaciones e integridad referencial

Tutorial del analizador VertiPaq: relaciones e integridad referencial

Este tutorial detallado sobre el analizador VertiPaq en DAX Studio le enseñará cómo usar la pestaña Relaciones para optimizar su DAX y resolver problemas de integridad referencial.