Informe directo al líder e informe indirecto al recuento de líderes

Un usuario Pregunto ✅

vsk7775

Hola a todos

Estoy tratando de encontrar el líder de informes directos y el informe indirecto al líder para el siguiente conjunto de datos. Probé diferentes expresiones DAX pero no obtuve el resultado correcto.

ID de empleado ID de líder Título del empleado
1 CEO
2 1 Vicepresidente
3 2 Vicepresidente
4 2 Gerente1
5 3 Gerente2
6 3 Gerente3
7 4 ingeniero de seguridad
8 5 Desarrollador
9 4 Analista
10 6 Desarrollador II
11 5 Desarrollador II
12 8 Gerente4

Cuando busqué el recuento directo de empleados para leaderID 2 usando la expresión DAX a continuación, me dio el resultado como 5, pero en realidad en el conjunto de datos, si vemos que solo hay dos personas que reportan directamente a employeeID 2, son ( employeeid 3 y 4)

También para el conteo de empleados indirectos para leaderID 2 obtengo el conteo como 12 pero en realidad solo tenemos 7 empleados indirectos

Aquí están mis consultas que utilicé para crear medidas.

Direct Count:=
VAR level1 =
INTERSECT ( ALL ( [Employee ID] ), VALUES ( [Leader ID] ))
RETURN
CALCULATE ( COUNT ( 'Employee ID] ), ( level1))



Indirect Count:=
VAR level1 =
INTERSECT ( ALL ( [Leader ID] ), VALUES ( [Employee ID] ))
VAR level2 =
INTERSECT (
ALL ([Leader ID]),
CALCULATETABLE ( VALUES ( [Employee ID]), level1)
)
VAR level3 =
INTERSECT (
ALL ([Leader ID]),
CALCULATETABLE ( VALUES ( [Employee ID]), level2)
)
VAR level4 =
INTERSECT (
ALL ([Leader ID]),
CALCULATETABLE ( VALUES ( [Employee ID]), level3)
)
VAR level5 =
INTERSECT (
ALL ([Leader ID]),
CALCULATETABLE ( VALUES ( [Employee ID]), level4)
)
VAR level6 =
INTERSECT (
ALL ([Leader ID]),
CALCULATETABLE ( VALUES ( [Employee ID]), level5)
)
VAR level7 =
INTERSECT (
ALL ([Leader ID]),
CALCULATETABLE ( VALUES ( [Employee ID]), level6)
)
VAR level8 =
INTERSECT (
ALL ([Leader ID]),
CALCULATETABLE ( VALUES ( [Employee ID]), level7)
)
VAR level9 =
INTERSECT (
ALL ([Leader ID]),
CALCULATETABLE ( VALUES ( [Employee ID]), level8)
)
VAR level10 =
INTERSECT (
ALL ([Leader ID]),
CALCULATETABLE ( VALUES ( [Employee ID]), level9)
)
VAR level11 =
INTERSECT (
ALL ([Leader ID]),
CALCULATETABLE ( VALUES ( [Employee ID]), level10)
)
VAR level12 =
INTERSECT (
ALL ([Leader ID]),
CALCULATETABLE ( VALUES ( [Employee ID]), level11)
)
RETURN
CALCULATE ( DISTINCTCOUNT ( [Employee ID] ), UNION ( level1, level2, level3, level4, level5, level6, level7, level8, level9, level10, level11, level12 ) )

camargos88

Hola @vsk7775,

Verifique este archivo: Descargar PBIX

Sin embargo, obtuve el employee_id 12 como indirecto para el líder 2, ¿es correcto?

ricardo

vsk7775

En respuesta a camargos88

Hola @camargos88

Gracias por investigarlo. No puedo abrir el archivo. ¿Le importaría compartir la medida tanto directa como indirecta para que lo verifique por mi parte?

camargos88

En respuesta a vsk7775

Hola @vsk7775,

Cree estas 2 columnas calculadas:

Ruta = RUTA(‘Tabla'[EmployeeID ]; ‘Tabla'[LeaderID])
Longitud = LONGITUD DE RUTA (‘Tabla'[Path])
y estas 3 medidas:
_Informe directo = CALCULAR(CONTAR(‘Tabla'[EmployeeID ]); FILTRO(TODO(‘Tabla’); ‘Tabla'[LeaderID] = VALOR SELECCIONADO(‘Tabla'[EmployeeID ]))) + 0
_Informe indirecto =
VAR _IDEmpleado = VALOR SELECCIONADO(‘Tabla'[EmployeeID ])
VAR _longitud = CALCULAR(DISTINCT(‘Tabla'[Length]); FILTRO(TODO(‘Tabla’); ‘Tabla'[EmployeeID ] = _ID de empleado))
REGRESO
CALCULAR(DISTINCTCOUNT(‘Tabla'[EmployeeID ]);
FILTRO(TODO(‘Tabla’); PATHCONTAINS(RUTA(‘Tabla'[EmployeeID ]; ‘Tabla'[LeaderID]); _IDEmpleado) && RUTA(RUTA(‘Tabla'[EmployeeID ]; ‘Tabla'[LeaderID])) > _longitud + 1)) + 0
_Informe total = [_Direct Report] + [_Indirect Report]
ricardo

vsk7775

En respuesta a camargos88

Hola @camargos88

Agradezco su rápida respuesta. No estoy seguro de por qué no funciona para mi conjunto de datos actual. Muchas gracias por investigarlo.

camargos88

En respuesta a vsk7775

@vsk7775 ,

Intente descargar el archivo nuevamente: Descargar PBIX

ricardo

Anónimo

NO lo estás haciendo bien. Por favor, comience con estos:

https://www.sqlbi.com/tv/jerarquías-en-dax/
https://www.daxpatterns.com/parent-child-hierarchies/
https://simplebiinsights.com/parent-child-hierarchies-in-dax/

No hagas lo que haces arriba. No te dispares en el pie.

Mejor
D

vsk7775

En respuesta a Anónimo

hola @anonimo

Gracias por el enlace. Ya creé la jerarquía de mi organigrama de una manera similar y tengo un recuento de medidas simple (ID de empleado), pero ahora lo que estaba buscando era cómo obtener los recuentos de miembros directos e indirectos del equipo.

Anónimo

En respuesta a vsk7775

Bueno, recuerde siempre que puede girar una tabla y almacenar dos versiones en su modelo, una con la estructura en columnas, otra con la estructura en filas, y calcular sus medidas en la que sea más adecuada para la tarea en cuestión.

Mejor
D

Alba

Hola @vsk7775

Para el número de informes directos, puede crear el número en una columna calculada en su tabla:

Direct Reports = 
0 + CALCULATE(COUNT(Table1[EmployeeTitle]); Table1[LeaderID] = EARLIER(Table1[EmployeeID ]);ALL(Table1))

Para la cantidad de informes indirectos, no entiendo muy bien por qué el resultado esperado es 7 para el ID de empleado 2. ¿Puede explicar quién se consideraría exactamente un informe indirecto?

Por favor marque la pregunta resuelta cuando termine y considere dar felicitaciones si las publicaciones son útiles.

Salud

SU18_powerbi_badge

vsk7775

En respuesta a Alba

Hola @AlB

Los informes directos de EmployeeID 2 son EmployeeID 3 y 4.
EmployeeID 2 Informes indirectos son EmployeeID 5,6,7,8,9,10,11

Porque
EmployeeID 5,6 Reportar directamente a 3
EmployeeID 7,9 reporta directamente a 4
EmployeeID 8,11 Reporta directamente a 5
EmplyeeID 10 reporta directamente a 6

Estoy tratando de crear medidas, no campos/columnas calculados porque al usar estas medidas, si profundizo en Excel o Power Bi, debería ver sus detalles.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *