Ordenando datos «arbitrariamente»

Un requerimiento muy frecuente al momento de tratar con datos -particularmente nombres o «etiquetas»-, es querer ordenarlos de una forma «arbitraria», es decir, que no sea alfabética. El ejemplo típico es el de los meses del año. Cuando uno quiere ordenarlos, sale: abril, agosto, diciembre, enero… en orden alfabético. Lo lógico, para un ser humano, es que salga primero enero, luego febrero, etc. Pero, en este caso, Power BI no puede hacer otra cosa… a menos que lo ayudemos.

Descarguen el archivo de trabajo desde aquí: Meses- Ordenar por

Carguemos el archivo de trabajo a Power BI. Cuando lleguemos a la pantalla mostrada abajo, seleccionemos la tabla «Meses».

Screen Shot 08-10-17 at 09.17 PM

Luego de dar clic en «Cargar», aparece el lienzo de Power BI. Seleccionemos la columna «Meses» para obtener algo como lo siguiente:

Screen Shot 08-10-17 at 09.21 PM.PNG

Automáticamente, el nombre del mes sale ordenado alfabéticamente. Afortunadamente, en el archivo de trabajo hay un campo adicional llamado «Orden» que corresponde al orden deseado de los meses. Por si no abrieron el archivo de trabajo, se ve así:

Screen Shot 08-10-17 at 09.24 PM

Como hemos cargado ambas columnas, podemos usar la columna «Orden» para que los meses salgan ordenados como deseamos. Primero hagamos clic en el botón «Data»

Screen Shot 08-10-17 at 09.26 PM

Luego seleccionemos la columna con los nombres de los meses (1), luego el menú «Modelado» (2), luego «Ordenar Por» (3) y en el menú desplegable seleccionamos el campo numérico que nos ayudará a ordenar como deseamos. En este caso el campo se llama «Orden» (4). Los  números entre paréntesis se corresponden con los números en rojo de la pantalla siguiente:

Screen Shot 08-10-17 at 09.29 PM

Nota: el orden en el que las filas aparecen en la pantalla anterior no tiene ningún impacto en cómo se muestra el reporte.

Listo. Si regresamos al reporte inicial, vemos que ya no está ordenado alfabéticamente sino que ya aparece como deseamos.

Screen Shot 08-10-17 at 09.33 PM

Eso es todo. Ya no hay necesidad de usar los viejos «trucos» de llamar a los meses «01 Enero», «02 Febrero», etc para que se ordenen. Esto es mucho mejor. Se puede usar esta técnica para ordenar etiquetas como se desee en la medida en que exista, asociado a las etiquetas, un campo numérico adecuado para tal fin.

Es muy importante que exista un solo valor asociado a cada etiqueta que se quiera ordenar. Por ejemplo, si la tabla en cuestión fuera la siguiente, no funcionaría el «Ordenar Por». ¿Pueden ver por qué?

Screen Shot 08-10-17 at 09.46 PM

Pues sencillamente, Enero tiene dos valores asociados: 1 y 13. El mismo caso es para el resto de meses. Cuando se quiere hacer lo mostrado al inicio de esta publicación aparece un mensaje de error como el siguiente:

Screen Shot 08-10-17 at 09.47 PM

Dice: «No podemos ordenar la columna ‘Nombre’ por ‘Orden’. No puede haber más de un valor en ‘Orden’ par el mismo valor de ‘Nombre’. Por favor, escoja una columna distinta para ordenar o modifique los datos de ‘Orden’.

Buena suerte.

14 comentarios sobre “Ordenando datos «arbitrariamente»

  1. Hola amigo que tal, una consulta, tengo una columna numérica y quiero ordenarla por esa columna, pero cuando la columna es de tipo texto lo ordena así «1, 101, 102, 11, 12, 2, 20 …» y cuando lo pongo numérico me lo suma. Pero yo quiero que se ordene así «1, 2, 3, 4, 5, 6, 7 …»

    Me gusta

    1. Hola. Si entiendo bien, lo que necesitas es lo siguiente : marca tu columna en la vista de datos y luego en el menú “Modelado” le dices que la “agregación por defecto” de esa columna sea “no agregar”

      Me gusta

  2. Hola, tengo el problema que indicaste con el ejemplo cuando se tiene dos valores o mas asociados, me da el error » ORDENAR POR OTRA COLUMNA» NO SE PUEDE ORDENAR ESTA COLUMNA POR UNA COLUMNA QUE YA ESTA ORDENADA DIRECTA O INDIRECTAMENTE POR ESTA COLUMNA.
    gracias

    Me gusta

  3. Hola, mi problema es que tengo una tabla que tiene fechas de marzo 2019 a febrero 2020. Y cuando uso CaptureDate en cualquier gráfico, me pone enero primero, y yo quiero que se muestre después de diciembre. cómo puedo hacer?

    Me gusta

Deja un comentario