Marcar empleados directos e indirectos para el gerente conectado en la tabla de empleados

Un usuario Pregunto ✅

RahulYadav

Hola,

He aplicado la seguridad a nivel de Fila utilizando la jerarquía de Empleados con la función PATH y ahora muestra empleados directos e indirectos que informan al administrador que ha iniciado sesión.

Quiero agregar una segmentación que filtrará los empleados directos e indirectos que reportan a los gerentes.

¿Hay alguna manera de agregar una nueva columna a la tabla de empleados donde podamos marcar los empleados directos frente a los indirectos para el administrador que ha iniciado sesión?

Gracias,

Raúl

RahulYadav

En respuesta a RahulYadav

Hola @v-ljerr-msft,
He descubierto una manera de lograr esto. Lo estoy publicando aquí para que sea útil para otros.

A continuación se muestran los pasos que seguí.
1. Cree una nueva tabla para crear una segmentación para el indicador de Empleados directos.

ForSlicer = union (row("DirectReports Flag","True"),row("DirectReports Flag","False"))

2. Agregue una nueva columna de medida en la tabla Empleado. Esto devolverá la bandera que necesitamos.

Direct Reports = if(CALCULATE(max(Employee[Supervisor UserName]),filter(Employee,Employee[Supervisor UserName]=USERNAME()))<>"","True","False")

3. Agregue una medida más para crear un filtro basado en la tabla «ForSlicer».

DirectReportFilter = if(HASONEVALUE(ForSlicer[DirectReports Flag]),
if(values(ForSlicer[DirectReports Flag])="True",if([Direct Reports]="True","True",BLANK() ),"True"),"True")

4. Ahora agregue una visualización basada en la tabla de empleados y agregue el filtro debajo del nivel visual.

DirectReportFilter = Verdadero

5. Agregue una segmentación basada en la tabla «ForSlicer».

He adjuntado el archivo pbix de muestra para la referencia rápida.

A continuación se muestra la captura de pantalla para el funcionamiento de la lógica:

Para Empleados Directos+Indirectos

Empleados Directos+Indirectos.jpg
Solo para empleados directos

Solo empleados directos.jpg

Muestra RLS_Resuelta.zip

Gracias,

Raúl

Hola @RahulYadav,

¿Podría ser más preciso con el problema al publicar las estructuras de su tabla (incluidas las relaciones) con algunos datos de muestra/simulacros y el resultado esperado? Para que podamos ayudar mejor en este tema. Es incluso mejor simplemente compartir un archivo pbix de muestra.

Puede subirlo a OneDrive o Dropbox y publicar el enlace aquí. Oculte los datos confidenciales antes de cargarlos. carita feliz

Saludos

RahulYadav

En respuesta a v-ljerr-msft

Hola @v-ljerr-msft,

A continuación se muestra la jerarquía de muestra que tenemos. Creé una seguridad de nivel de fila usando la función PATH y funciona correctamente para los empleados «directos + indirectos» que informan al supervisor conectado. Pero tengo una solicitud para agregar una segmentación que mostrará dos valores «Directo» e «Indirecto».

Ejemplo de jerarquía:

Jerarquía de muestra.jpg

Lógica para indicador directo/indirecto:

Si el usuario «BCD» inicia sesión en «EFG» y «FGH», se debe marcar como «Directo», mientras que JKL, KLM, LMN como indirecto.

A continuación se muestra el archivo pbix de muestra. Solo tiene una tabla de la fuente de Excel.

Ejemplo de RLS.zip

Gracias,

Raúl

RahulYadav

En respuesta a RahulYadav

Hola @v-ljerr-msft,
He descubierto una manera de lograr esto. Lo estoy publicando aquí para que sea útil para otros.

A continuación se muestran los pasos que seguí.
1. Cree una nueva tabla para crear una segmentación para el indicador de Empleados directos.

ForSlicer = union (row("DirectReports Flag","True"),row("DirectReports Flag","False"))

2. Agregue una nueva columna de medida en la tabla Empleado. Esto devolverá la bandera que necesitamos.

Direct Reports = if(CALCULATE(max(Employee[Supervisor UserName]),filter(Employee,Employee[Supervisor UserName]=USERNAME()))<>"","True","False")

3. Agregue una medida más para crear un filtro basado en la tabla «ForSlicer».

DirectReportFilter = if(HASONEVALUE(ForSlicer[DirectReports Flag]),
if(values(ForSlicer[DirectReports Flag])="True",if([Direct Reports]="True","True",BLANK() ),"True"),"True")

4. Ahora agregue una visualización basada en la tabla de empleados y agregue el filtro debajo del nivel visual.

DirectReportFilter = Verdadero

5. Agregue una segmentación basada en la tabla «ForSlicer».

He adjuntado el archivo pbix de muestra para la referencia rápida.

A continuación se muestra la captura de pantalla para el funcionamiento de la lógica:

Para Empleados Directos+Indirectos

Empleados Directos+Indirectos.jpg
Solo para empleados directos

Solo empleados directos.jpg

Muestra RLS_Resuelta.zip

Gracias,

Raúl

Anónimo

En respuesta a RahulYadav

@RahulYadav y @v-ljerr-msft

¿Qué pasa si tenemos múltiples roles en nuestro informe, como en el siguiente ejemplo,

Tengo roles de supervisor y jefe de unidad,

Capturar.JPG

Ahora si ves para A2,

Como supervisor, A2 tiene acceso a los empleados A5,A6,A10,A11,A12,A13,

Pero como jefe de Unidad, A2 tiene acceso a A8, A9, A14,A10, A11, A12, A13

Ahora, cada vez que A2 inicie sesión en este informe,

¿Cómo podemos mostrar los datos de los empleados de UNION, es decir? A5, A6,A8, A9,A10, A11, A12, A13,A14, al incluir empleados de ambos roles.

Alguna idea,

Mohan V

Deja un comentario

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