Forum Discussion

anandav's avatar
anandav
Skilled Sharer
7 years ago
Solved

Sorting by multiple columns

Hi Experts,

 

I have the following data.

 

Employee Training Date

GregTraining 119/09/2017
BillTraining 119/09/2017
JoeTraining 119/09/2017
DavidTraining 119/09/2017
JimboTraining 119/09/2017
GregTraining 219/08/2017
BillTraining 219/08/2017
DavidTraining 219/08/2017
GregTraining 319/07/2017
BillTraining 319/07/2017
JoeTraining 319/07/2017
DavidTraining 319/07/2017

 

When I use a Table visual the data is displayed sorted by Name.

 

I can sort the data in PowerQuery using multiple columns:

= Table.Sort(#"Changed Type",{{"Employee", Order.Ascending}, {"Training", Order.Descending}, {"Date", Order.Ascending}})

 

In Data view it is displayed correctly as per PowerQuery sort.

 

But when I display the data in Table or Matrix visual it is only sorted by Name.

 

How can I enable Table visual to follow the PowerQuery sort order?

 

Thanks for any advise in advance.

 

  • anandav,

     

    You may try using ISONORAFTER Function to add a measure.

    Measure =
    VAR t =
        SUMMARIZE (
            ALLSELECTED ( Table1 ),
            Table1[Employee],
            Table1[Training],
            Table1[Date]
        )
    RETURN
        COUNTROWS (
            FILTER (
                t,
                ISONORAFTER (
                        Table1[Employee], SELECTEDVALUE ( Table1[Employee] ), DESC,
                        Table1[Training], SELECTEDVALUE ( Table1[Training] ), ASC,
                        Table1[Date], SELECTEDVALUE ( Table1[Date] ), DESC
                )
            )
        )
    

11 Replies

  • v-chuncz-msft's avatar
    v-chuncz-msft
    Community Support

    anandav,

     

    You may try using ISONORAFTER Function to add a measure.

    Measure =
    VAR t =
        SUMMARIZE (
            ALLSELECTED ( Table1 ),
            Table1[Employee],
            Table1[Training],
            Table1[Date]
        )
    RETURN
        COUNTROWS (
            FILTER (
                t,
                ISONORAFTER (
                        Table1[Employee], SELECTEDVALUE ( Table1[Employee] ), DESC,
                        Table1[Training], SELECTEDVALUE ( Table1[Training] ), ASC,
                        Table1[Date], SELECTEDVALUE ( Table1[Date] ), DESC
                )
            )
        )
    
    • anandav's avatar
      anandav
      Skilled Sharer

      Hi v-chuncz-msft,

      Thank you for the prompt reply. That works perfectly! :manhappy:

      I was also able to achieve this by adding an Index column in the Power Query as well. But good to learn how to do it in DAX.

       

      Just wondering:

      So any data re-ordering / sorting done in PowerQuery is really of no use in any of the visuals.

      Do you think this is a bug or by design?

      If by design, I am not sure what use it is to sort something in PowerQuery and the sort is not maintained in visuals?

       

      I will mark your answer as solution shortly but just waiting to get some thoughts on the above questions from you ro anyone who might shed some light.

      • usman2338's avatar
        usman2338
        Frequent Visitor

        I guess Using Index as you mentioned is the easiest. Just sort in power query and then create Index column

    • usman2338's avatar
      usman2338
      Frequent Visitor

      Would appreciate if you could explain what is going on in the code. I've used this and it gives me the correct sorting behaviour but i don't understand the workings of the code. Thanks

  • Anonymous's avatar
    Anonymous
    Not applicable

    v-chuncz-msft I created the measure you created previously in the thread and when I tried to place it as a value in the table field, it created a single count. Is there somewhere else I should be placing this measure? Thanks so much!

  • Anonymous's avatar
    Anonymous
    Not applicable

    Hi All,

     

    Wonder if you can help?

     

    I have data that I want to sort specifically, I was told there was a measure for it.

     

    Basically on excel you can move the columns on the pivot table. So i can have 0-7,8-13,14-20 in order ( 8-13 always defaulting a date) so when i create a pivot, the order is 8-13, 0-7, 14-20.

     

    How am I am to change the order in Power BI?

     

  • Step 1: In your Matrix, add a field to the row hierarchy (which you will later remove).

    Step 2: Change the Matrix to a Table visual.

    Step 3: Sort all the columns you wish to sort, and in the order you wish them to be sorted.

    Step 4: Delete the field you previously added in Step 1 from the table.

    Step 5: Change the Table back to a Matrix visual.

    Step 6: Ensure the right fields are back in the Row hierarchy.

     

    This will maintain your multiple sorted fields within your matrix, even when you expand your row hierarchies.