cancel
Showing results for
Did you mean:
Frequent Visitor

## Pivot Top N into Columns

Hi All,

I have a dataset with various fields that I want to pivot entirely. Please see the below example:

I would like to pivot the table so that they are grouped by team and sorted by power level, while keeping all other fields. If there is a matching power level, I would like Age to take second priority, then alphabetical name.

I have experimented with different unpivots and pivots, but can't find a way to do this without making a ton of calculated columns in DAX. Can anyone help me please?

1 ACCEPTED SOLUTION
Community Support

Hi @stevencmlee ,

If you want to see the result in the table, We suggest matrix visual as a workaround.

1. add a index column based on the order you describe

```Index =
VAR t = [Team]
VAR p = [Power Level]
VAR n = [Name]
VAR a = [Age]
VAR t1 =
FILTER ( ALL ( 'Table3' ), 'Table3'[Team] = t )
VAR t2 =
FILTER ( ALL ( 'Table3' ), 'Table3'[Team] = t && 'Table3'[Power Level] = p )
VAR t3 =
FILTER (
ALL ( 'Table3' ),
'Table3'[Team] = t
&& 'Table3'[Power Level] = p
&& 'Table3'[Age] = a
)
RETURN
RANKX (
t1,
RANKX ( t1, [Power Level],, ASC, SKIP ) * 100
+ RANKX ( t2, [Age],, ASC, SKIP ) * 10
+ RANKX ( t3, [Name],, ASC, SKIP ),
,
DESC,
SKIP
)```

Create a matrix, put the field in, and close the total.

Then you can use the Index Slicer to control how many you want to show in matrix.

BTW, pbix as attached.

Best regards,

Community Support Team _ Dong Li
If this post helps, then please consider Accept it as the solution to help the other members find it more quickly.

Community Support Team _ Dong Li
If this post helps, then please consider Accept it as the solution to help the other members find it more quickly.
3 REPLIES 3
Community Support

Hi @stevencmlee ,

If you want to see the result in the table, We suggest matrix visual as a workaround.

1. add a index column based on the order you describe

```Index =
VAR t = [Team]
VAR p = [Power Level]
VAR n = [Name]
VAR a = [Age]
VAR t1 =
FILTER ( ALL ( 'Table3' ), 'Table3'[Team] = t )
VAR t2 =
FILTER ( ALL ( 'Table3' ), 'Table3'[Team] = t && 'Table3'[Power Level] = p )
VAR t3 =
FILTER (
ALL ( 'Table3' ),
'Table3'[Team] = t
&& 'Table3'[Power Level] = p
&& 'Table3'[Age] = a
)
RETURN
RANKX (
t1,
RANKX ( t1, [Power Level],, ASC, SKIP ) * 100
+ RANKX ( t2, [Age],, ASC, SKIP ) * 10
+ RANKX ( t3, [Name],, ASC, SKIP ),
,
DESC,
SKIP
)```

Create a matrix, put the field in, and close the total.

Then you can use the Index Slicer to control how many you want to show in matrix.

BTW, pbix as attached.

Best regards,

Community Support Team _ Dong Li
If this post helps, then please consider Accept it as the solution to help the other members find it more quickly.

Community Support Team _ Dong Li
If this post helps, then please consider Accept it as the solution to help the other members find it more quickly.
Frequent Visitor

Maybe this helps you in a direction.

- Make a duplicate of your query in Power query

- Remove all columns except Team and Power level

- Group by Team and sum the Power Level (order it by power level)

- Left join the original table on Team with Fuzzy matching on and fill in the field Maximum number of matches with 1.

And so on.

Super User I
```dfasdfsa	f
af	f```
 dfasdfsa f adfs d af f

l

Hi @stevencmlee ,

Would you copy and paste the data from you picture either directly into your message, or into the code </> so that we can paste it directly and then play around with it. It might show an error message, but just hit post again.

Thanks,

Nathaniel

Proud to be a Super User!

Announcements