Home
» Power BI
»
DAX y PowerQuery | Creación de columnas de clasificación automática
DAX y PowerQuery | Creación de columnas de clasificación automática
Después de un cuestionario emergente DAX reciente que preparé y publiqué en LinkedIn, una de las personas que respondió al cuestionario planteó una idea fascinante, a través de la cual las columnas de texto ya no necesitaban una columna de clasificación numérica para colocarlas en el orden correcto. Experimenté con este nuevo enfoque y funcionó maravillosamente. En el tutorial de hoy, le mostraré cómo usar este enfoque puede crear columnas de texto autoordenadas que usan DAX y Power Query. Puedes ver el video completo de este tutorial en la parte inferior de este blog.
Echemos un vistazo al conjunto de datos de práctica que tenemos de nuestras herramientas externas (tenemos la tabla de fechas extendida de LuckyTemplates). En esta tabla, tenemos un campo llamado Nombre del mes , que es en el que nos vamos a centrar.
Cojamos el nombre del mes y arrástrelo a una tabla. Verás que está ordenado alfabéticamente. Entonces, debemos abordar eso para que funcione correctamente en nuestras tablas y elementos visuales.
Cómo crear columnas de clasificación automática mediante DAX y Power Query en LuckyTemplates
Primero hagamos Power Query. Vayamos a nuestra tabla Fechas y vamos a crear una columna y usar solo un poco de código M simple. Llamemos a esta columna, Nombre del mes y vamos a usar un asterisco solo para indicar que es una columna de ordenación automática.
Para la fórmula, usaremos la función llamada Text.Repeat . Te pide el texto que quieres insertar o repetir, y luego el número de veces que quieres repetirlo. En lugar de algún texto explícito, haremos caracteres no impresos. Y para eso, podemos usar una función llamada Character.FromNumber y el número que vamos a usar es 0032, que es el número para un espacio que no se puede imprimir. Queremos repetir eso por 12 menos el MonthOfYear . Luego, lo concatenaremos con Month Name.
Eso se suma a nuestra columna. Se ve igual, pero ahora tiene esos espacios que no se pueden imprimir al frente.
Cuando buscamos Mes, encontramos ese campo Nombre de mes* con la autoclasificación. Ponemos eso en una tabla, y podemos ver que en lugar de ordenar alfabéticamente, en realidad está ordenando cronológicamente según los espacios.
Si miramos aquí en Ordenar por columna , simplemente se ordena por sí mismo. No se aplica ningún campo de clasificación adicional.
También podemos hacer esto usando un enfoque muy similar en DAX. Déjame mostrarte cómo hacerlo.
Primero, agreguemos una columna personalizada aquí. La metodología es la misma. Las funciones son un poco diferentes. Llamemos a este, Nombre del mes con un doble asterisco. Luego, en lugar de Text.Repeat, usaremos una función en DAX llamada . Es exactamente la misma estructura. Utiliza el texto y luego la cantidad de veces que desea que se repita.
Entonces, para el texto, en lugar de Character.FromNumber, usaremos en DAX el equivalente, que es . A continuación, tendremos 0032 , que es nuestro número para el espacio que no se puede imprimir, y luego lo repetiremos por 12 menos MonthOfYear .
Vamos a concatenar eso con nuestro campo Nombre del mes y usaremos el Nombre del mes original, no el Nombre del mes*. Voy a truncar esto en un campo corto usando IZQUIERDA y luego 3 (solo vamos a tomar los primeros tres caracteres), solo para poder usarlo en una imagen para mostrarle cómo se verá.
Así que ahora, si ponemos eso en una tabla, eso se ordena exactamente cronológicamente como lo hizo el código M.
Esto funciona no solo en las tablas, sino también en las imágenes.
Creo que esta es una técnica realmente genial para crear columnas de clasificación automática en LuckyTemplates usando DAX y Power Query. Pensé que era una genialidad absoluta. Estoy muy agradecido con el participante en el cuestionario por señalarlo. Espero que hayas encontrado esto útil en términos de cómo creas y administras tus campos de texto.