Skip to main content
cancel
Showing results for 
Search instead for 
Did you mean: 

July 7 - July 17 | Round 2 of the Power BI Dataviz World Championships. Don't miss your chance! Learn more

Reply
Honne2021
Helper II
Helper II

Hierarchy Levels

Hi, I have a data that looks like this with thousand of rows and I need to know how many levels does each employee has to get to Person Z. In this example, the answer for Joon should be 4 as there are 4 persons to reach Person Z. Kook should be 1. 

 

EmployeeLevel 1Level 2Level 3Level 4Level 5Level 6Level 7Level 8
JoonPerson APerson BPerson HPerson YPerson Z   
KookPerson FPerson Z      



Thank you in advance

2 ACCEPTED SOLUTIONS
Vijay_A_Verma
Most Valuable Professional
Most Valuable Professional

Put following formula in a custom column

= List.PositionOf(Record.ToList(_),"Person Z")-1

See the working here - Open a blank query - Home - Advanced Editor - Remove everything from there and paste the below code to test

let
    Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("i45W8srPz1PSUQpILSrOz1NwRDCdEEwPBDMSwYwCMqEoVidayTs/Pxsh6YZVHUJDLAA=", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type nullable text) meta [Serialized.Text = true]) in type table [Employee = _t, #"Level 1" = _t, #"Level 2" = _t, #"Level 3" = _t, #"Level 4" = _t, #"Level 5" = _t, #"Level 6" = _t, #"Level 7" = _t, #"Level 8" = _t]),
    #"Added Custom" = Table.AddColumn(Source, "Level", each List.PositionOf(Record.ToList(_),"Person Z")-1, Int64.Type)
in
    #"Added Custom"

 

View solution in original post

Hmm it seems to count the second Person Z. I just changed the formula to -2 instead of -1. I appreciate your quick assistance. 

= List.PositionOf(Record.ToList(_),"Person Z")-1

 

View solution in original post

4 REPLIES 4
Vijay_A_Verma
Most Valuable Professional
Most Valuable Professional

Put following formula in a custom column

= List.PositionOf(Record.ToList(_),"Person Z")-1

See the working here - Open a blank query - Home - Advanced Editor - Remove everything from there and paste the below code to test

let
    Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("i45W8srPz1PSUQpILSrOz1NwRDCdEEwPBDMSwYwCMqEoVidayTs/Pxsh6YZVHUJDLAA=", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type nullable text) meta [Serialized.Text = true]) in type table [Employee = _t, #"Level 1" = _t, #"Level 2" = _t, #"Level 3" = _t, #"Level 4" = _t, #"Level 5" = _t, #"Level 6" = _t, #"Level 7" = _t, #"Level 8" = _t]),
    #"Added Custom" = Table.AddColumn(Source, "Level", each List.PositionOf(Record.ToList(_),"Person Z")-1, Int64.Type)
in
    #"Added Custom"

 

Vijay_A_Verma
Most Valuable Professional
Most Valuable Professional

It will take the first Person Z only not any other. 

Hmm it seems to count the second Person Z. I just changed the formula to -2 instead of -1. I appreciate your quick assistance. 

= List.PositionOf(Record.ToList(_),"Person Z")-1

 

Hi. Sorry I forgot to mention that there are instances where in Person Z is in two columns like this. What formula should I add so that only the first Person Z is counted. Hence Kook should be 1 instead of 2.

EmployeeLevel 1Level 2Level 3Level 4...until Level 20
KookPerson FPerson ZPerson Z  


Thank you for your help!

Helpful resources

Announcements
FabCon and SQLCon Barcelona 2026

FabCon & SQLCon – Barcelona 2026

Join us in Barcelona for FabCon and SQLCon, the Fabric, Power BI, SQL, and AI community event. Save €200 with code FABCMTY200.

60 days of Data Days Carousel

Data Days 2026

Join Data Days 2026: 60 days of free live/on-demand sessions, challenges, study groups, and certification opportunities.

Power BI DataViz World Championships carousel

Power BI DataViz World Championships - June 2026

A new Power BI DataViz World Championship is coming this June! Don't miss out on submitting your entry.

Top Solution Authors