Forum Discussion
Span of Control
Hi all,
I have a table structured like this:
| Employee | Manager |
| 1 | |
| 2 | 1 |
| 3 | 1 |
| 4 | 1 |
| 5 | 2 |
| 6 | 2 |
| 7 | 2 |
| 8 | 2 |
| 9 | 2 |
| 10 | 3 |
| 11 | 3 |
| 12 | 3 |
| 13 | 3 |
| 14 | 4 |
| 15 | 4 |
I'm trying to implement a calculated column for Span of Control, basically count the number of occurances on Employee in the Manager column, like this:
| Employee | Manager | Span of Control |
| 1 | 3 | |
| 2 | 1 | 3 |
| 3 | 1 | 4 |
| 4 | 1 | 0 |
| 5 | 2 | 0 |
| 6 | 2 | 0 |
| 7 | 2 | 2 |
| 8 | 7 | 0 |
| 9 | 7 | 0 |
| 10 | 3 | 0 |
| 11 | 3 | 0 |
| 12 | 3 | 2 |
| 13 | 12 | 0 |
| 14 | 12 | 0 |
| 15 | 3 | 0 |
In Excel, formula goes like COUNTIF(Manager Range, Employee), quite easy, however, no DAX formula variations I've tried (COUNTX, CALCULATE) has yielded the result I need. Any idea?
You could simply add a new column with DAX:
Span of Control = VAR x = [Employee] RETURN CALCULATE ( COUNTROWS ( 'Table' ), FILTER ( 'Table', x = [Manager] ) )You should change the 'Table' with your table name.
Edit: You may add a " + 0" after the "COUNTROWS(TABLE)" in order to not display null results
11 Replies
- Smauro
Solution Sage
You could simply add a new column with DAX:
Span of Control = VAR x = [Employee] RETURN CALCULATE ( COUNTROWS ( 'Table' ), FILTER ( 'Table', x = [Manager] ) )You should change the 'Table' with your table name.
Edit: You may add a " + 0" after the "COUNTROWS(TABLE)" in order to not display null results- wwhittenton
Helper II
Assuming your employees don't repeat, Smauro gave a better solution than I did. Kudos to him.
- Smauro
Solution Sage
wwhittenton you are right, thank you!
I took it for certain that the employees would be unique.. If not, then your solution works better.
- tdemossNew Member
I was battling with this same issue and this worked for me as well! Thank you!!!
- wwhittenton
Helper II
Hi PauloH,
This may not be exactly the way you wanted to do it, but it should work.
Create a New Table by clicking on the "New Table" button in the Calculations section of the Home tab. then use the formula
Employee = DISTINCT(Data[employee])
After that, create a New Column and use the following:
Span_of_Control = CALCULATE( COUNT(Data[manager]) , FILTER(Data , Employee[employee] = Data[Manager] ))
Remember to change the table / column names as needed. If you need to use filters or slicers in your data display, you'll be able to create a One-to-Many or Many-to-Many relationship to make them work correctly.
Hope this helps!
Will