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

Get certified in Microsoft Fabric—for free! For a limited time, get a free DP-600 exam voucher to use by the end of 2024. Register now

Reply
maqsud
Helper III
Helper III

Hierarcal Problem with two columns to determine Top level

Given:

I have Two columns as shown below as shown below

 

Employee IDManager ID
E068E067
E071E067
E229E069
E248E144
E226E223
E236E241
E066E001
E067E001
E144E001
E223E001
E069E066


Problem Statement:

This problem is to identify the Head of Manager by using Employee and their Manager data.


About:

We have an Employee ID and their Manager ID. Please note that Manager ID are from Employee ID. Since each manager has one Manager above their level.

 


STEPS:

1. First, we'll take all UNIQUE ID in Manager ID column.
2. Then for each ID from Manager ID column, we will look for their respective Manager ID(Manager)
3. Then we will create a new column say `Level 1` we will put manager for each Manager ID on their respective cell.
4. Similarly, we will repeat the above 3 processes again till there is no Manager ID for that particular ID.
5. This way we can identify the Head of Manager.

 

I am able to solve the problem in EXCEL.
By using =IFERROR(VLOOKUP(C2,$A:$B,2,FALSE),"")

But this approach lead me to create new column in excel for each level hierarchy. And putting the formula on first cell of that particular column and then dragging the result for each manager

But incase of big companies there would be **n** no. of level of hierarchy. So creating the new column in excel for each level of hierarchy would be time consuming task. Hence, I am looking for an optimal solution.

 

Expected Output:

 

Employee IDManager IDLevel 1Level 2Head of Manager
E068E067E001 E001
E071E067E001 E001
E229E069E066E001E001
E248E144E001 E001
E226E223E001 E001
E236E241  E241
E066E001  E001
E067E001  E001
E144E001  E001
E223E001  E001
E069E066  E001

 

The Employee ID column contain **UNIQUE ID** while Manager ID contain **DUPLICATES ID**.


Thank you for your time and consideration.

1 ACCEPTED SOLUTION
Anonymous
Not applicable

Hi @maqsud

 

Create 4 calculated columns as below:

 

Column = 
var _employee=CALCULATE(MAX('Table'[Manager ID]),FILTER('Table','Table'[Employee ID]=EARLIER('Table'[Employee ID])))
Return
CALCULATE(MAX('Table'[Manager ID]),FILTER('Table','Table'[Employee ID]=_employee))
Level 1 = 

IF('Table'[Manager ID] in FILTERS('Table'[Column]),BLANK(),'Table'[Column])
Level 2 = 
var _managerID= CALCULATE(MAX('Table'[Manager ID]),FILTER('Table','Table'[Column]<>BLANK()&&'Table'[Level 1]=BLANK()))
var _column=CALCULATE(MAX('Table'[Column]),FILTER('Table','Table'[Column]<>BLANK()&&'Table'[Level 1]=BLANK()))
Return
IF('Table'[Level 1]=_managerID,_column,BLANK())
Head of Manager = IF('Table'[Level 2]<>BLANK(),'Table'[Level 2],IF('Table'[Level 2]=BLANK()&&'Table'[Level 1]<>BLANK(),'Table'[Level 1],IF('Table'[Level 2]=BLANK()&&'Table'[Level 1]=BLANK(),IF('Table'[Column]<>BLANK(),'Table'[Column],'Table'[Manager ID]))))

 

Finally you will see:

Annotation 2020-06-10 172154.png

For the related .pbix file,pls click here.

 

 
Best Regards,
Kelly
Did I answer your question? Mark my post as a solution!

View solution in original post

2 REPLIES 2
Anonymous
Not applicable

Hi @maqsud

 

Create 4 calculated columns as below:

 

Column = 
var _employee=CALCULATE(MAX('Table'[Manager ID]),FILTER('Table','Table'[Employee ID]=EARLIER('Table'[Employee ID])))
Return
CALCULATE(MAX('Table'[Manager ID]),FILTER('Table','Table'[Employee ID]=_employee))
Level 1 = 

IF('Table'[Manager ID] in FILTERS('Table'[Column]),BLANK(),'Table'[Column])
Level 2 = 
var _managerID= CALCULATE(MAX('Table'[Manager ID]),FILTER('Table','Table'[Column]<>BLANK()&&'Table'[Level 1]=BLANK()))
var _column=CALCULATE(MAX('Table'[Column]),FILTER('Table','Table'[Column]<>BLANK()&&'Table'[Level 1]=BLANK()))
Return
IF('Table'[Level 1]=_managerID,_column,BLANK())
Head of Manager = IF('Table'[Level 2]<>BLANK(),'Table'[Level 2],IF('Table'[Level 2]=BLANK()&&'Table'[Level 1]<>BLANK(),'Table'[Level 1],IF('Table'[Level 2]=BLANK()&&'Table'[Level 1]=BLANK(),IF('Table'[Column]<>BLANK(),'Table'[Column],'Table'[Manager ID]))))

 

Finally you will see:

Annotation 2020-06-10 172154.png

For the related .pbix file,pls click here.

 

 
Best Regards,
Kelly
Did I answer your question? Mark my post as a solution!
vanessafvg
Super User
Super User

try using the path function to solve this

https://docs.microsoft.com/en-us/dax/understanding-functions-for-parent-child-hierarchies-in-dax




If I took the time to answer your question and I came up with a solution, please mark my post as a solution and /or give kudos freely for the effort 🙂 Thank you!

Proud to be a Super User!




Helpful resources

Announcements
November Carousel

Fabric Community Update - November 2024

Find out what's new and trending in the Fabric Community.

Live Sessions with Fabric DB

Be one of the first to start using Fabric Databases

Starting December 3, join live sessions with database experts and the Fabric product team to learn just how easy it is to get started.

Las Vegas 2025

Join us at the Microsoft Fabric Community Conference

March 31 - April 2, 2025, in Las Vegas, Nevada. Use code MSCUST for a $150 discount! Early Bird pricing ends December 9th.

Nov PBI Update Carousel

Power BI Monthly Update - November 2024

Check out the November 2024 Power BI update to learn about new features.