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

Earn the coveted Fabric Analytics Engineer certification. 100% off your exam for a limited time only!

Reply
Neil_Cooper
Helper I
Helper I

Tasa de desgaste anualizado con múltiples condiciones Medida

Hola a todos,

Realmente espero que pueda ayudar, estoy tratando de elaborar una medida o proceso para una relación de desgaste anualizado con condiciones dependiendo del mes.

Tengo todos los datos necesarios listos como el número de empleados de los empleados de fin de mes, los que abandonan para el mes en particular, etc. y lo he conseguido para trabajar en Excel, pero simplemente no puedo obtener mi cabeza alrededor de cómo poner esto en una medida.

Tengo un ejemplo de datos ficticios a continuación y he adjuntado fotos de los cálculos de Excel. Esencialmente el cálculo comenzará con Ene y a medida que avancen los meses del año tomarán el promedio de los meses anteriores (esperanza que tenga sentido)

¡Muchas gracias de antemano!

Jan Calculation.PNG

Feb Calculation.PNG

1 ACCEPTED SOLUTION

Espero que hayas tenido un fin de semana agradable.

Prueba esto,

Cree dos relaciones entre la tabla que contiene las fechas de inicio y finalización de los empleados y el calendario:
image.png
Tabla[Inicio] <- Calendario[Fecha]
Tabla[Fin] <- Calendario[Fecha]
Las relaciones no tienen que estar activas.

Además, cree estas 3 medidas:

Acc Joiners = 
VAR mDate = MAX('Calendar'[Date])
Return
CALCULATE(COUNTROWS('Table'), USERELATIONSHIP('Table'[Start] , 'Calendar'[Date]) , ALL('Calendar') , 'Calendar'[Date]<=mDate)
Acc Leavers = 
VAR mDate = MAX('Calendar'[Date])
Return
CALCULATE(COUNTROWS('Table') , USERELATIONSHIP('Table'[End] , 'Calendar'[Date]) , ALL('Calendar') , 'Calendar'[Date]<=mDate , 'Table'[End] <> BLANK())
Headcount = [Acc Joiners]-[Acc Leavers]


Si, a continuación, crea una matriz para mostrar la medida de recuento de personal junto con una dimensión mes/año en el calendario, debe obtener el "número de empleados de fin de mes" correcto.

Por último, también puede añadir esta medida que calcula el recuento de personas que abandonan el período:

Leavers = 
VAR mDate = MAX('Calendar'[Date])
Return
CALCULATE(COUNTROWS('Table') , USERELATIONSHIP('Table'[End] , 'Calendar'[Date]))


Como estas son todas las medidas, debería poder utilizarlas junto con las columnas Ubicación/Departamento.

Avísame cómo va.


/ J


Connect on LinkedIn

View solution in original post

9 REPLIES 9
tex628
Community Champion
Community Champion

¿Necesita esto como medida o también funcionaría una columna calculada?

/ J


Connect on LinkedIn

Te pedí la respuesta, supongo que o realmente dependiendo de lo que funcione bien. Debería haber dicho en el post origional que los datos sin procesar son esencialmente una lista de empleados (pasados y presentes) que muestran la fecha de inicio y la fecha de finalización si ya no están empleados, así que sospecho que una medida sería la forma más lógica, pero me corrigen si me equivoco 🙂

Prueba esto, es un poco difícil ya que no me gusta lo que im qorking con, pero hágamelo saber cómo va!

Measure = 
VAR maxDate = MAX(Calendar[Date])
VAR minDate = CALCULATE(MIN(Calendar[Date]) ; ALLSELECTED(Calendar))
VAR SumLeavers = CALCULATE(SUM([Leavers]) ; ALL(Calendar) ; Calendar[Date]=<maxDate ; Calendar[Date]=>minDate)
VAR AvgHeadcount = CALCULATE(AVERAGE([Headcount]) ; ALL(Calendar) ; Calendar[Date]=<maxDate ; Calendar[Date]=>minDate)
Return
SumLeavers * (12/Calendar[MonthNo]) / AvgHeadcount


/ J


Connect on LinkedIn

Muchas gracias por tomarse el tiempo para escribir esto, su muy cerca, pero donde estoy luchando es que los que dejan y el número promedio de empleados son medidas y con la medida que ha escrito no me permite hacer el cálculo basado en la medida, pero me dirige a los datos sin procesar en su lugar.

Esencialmente necesito averiguar quién fue empleado en un momento determinado, cuántos quedan en un momento determinado (lo que he hecho a partir de medidas) y luego hacer los cálculos adaptados a un mes en particular un poco como lo hice en el ejemplo origional en Excel.

A continuación se muestra un ejemplo de cómo se ven los datos sin procesar (datos ficticios)

Muchas gracias por su ayuda y cualquier otro mes de su voluntad será muy apreciado 🙂Employee Data Example.PNG

Bien

Comencemos con esto:

Mi mesa ficticia:
image.png

Cree una consulta en blanco y agréguela en el editor avanzado en la consulta de potencia (si desea volver a crearla):

let
    Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("i45WMlTSUTIyMDLQNTAEImSOmVKsTrSSEbIQCsccLG9MQN4EWQhFsQlY3hRVCMN+M1QhHSWwqDmyqCUSxxCoKxYA", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type nullable text) meta [Serialized.Text = true]) in type table [Employee = _t, Start = _t, End = _t]),
    #"Changed Type1" = Table.TransformColumnTypes(Source,{{"Start", type date}, {"End", type date}})
in
    #"Changed Type1"


Calendario pequeño:

Calendar = CALENDAR(DATE(2020,1,1),DATE(2020,1,20))


Columnas calculadas:

Headcount = 
VAR date_ = 'Calendar'[Date]
return
CALCULATE(COUNTROWS('Table') , 'Table'[Start]<=date_ , OR('Table'[End]>date_,'Table'[End]=BLANK()))
Headcount previous day = 
VAR date_ = 'Calendar'[Date]-1
return
 CALCULATE(SELECTEDVALUE('Calendar'[Headcount]),ALL('Calendar'),'Calendar'[Date] = date_)
Change = 'Calendar'[Headcount] - 'Calendar'[Headcount previous day]
Joiners = 
VAR date_ = 'Calendar'[Date]
return
CALCULATE(COUNTROWS('Table') , 'Table'[Start]=date_)
Leavers = 
VAR date_ = 'Calendar'[Date]
return
CALCULATE(COUNTROWS('Table') , 'Table'[End]=date_)


Esto le da la siguiente tabla:
image.png

¿Es esto en la dirección correcta en términos de lo que estás buscando?

/j





Connect on LinkedIn

Esto es genial, muchas gracias. Estructurar los datos de esta manera absolutamente me acerca más a donde necesito estar. La única parte que no dije origionalmente es que en la pantalla también necesitaré "departamento y ubicación" que en los datos sin procesar normalmente serían dos campos por empleado. Realmente apreciamos toda tu ayuda, eres mucho mejor en esto que yo.

Esto está empalmado, tengo una solución en mente pero no tengo el tiempo de hoy para presentarla. ¡Ping me el lunes si aún no lo has resuelto como podría olvidar! 🙂

/ J


Connect on LinkedIn

¡Muchas gracias y sí hará 🙂 tener un gran fin de semana!

Espero que hayas tenido un fin de semana agradable.

Prueba esto,

Cree dos relaciones entre la tabla que contiene las fechas de inicio y finalización de los empleados y el calendario:
image.png
Tabla[Inicio] <- Calendario[Fecha]
Tabla[Fin] <- Calendario[Fecha]
Las relaciones no tienen que estar activas.

Además, cree estas 3 medidas:

Acc Joiners = 
VAR mDate = MAX('Calendar'[Date])
Return
CALCULATE(COUNTROWS('Table'), USERELATIONSHIP('Table'[Start] , 'Calendar'[Date]) , ALL('Calendar') , 'Calendar'[Date]<=mDate)
Acc Leavers = 
VAR mDate = MAX('Calendar'[Date])
Return
CALCULATE(COUNTROWS('Table') , USERELATIONSHIP('Table'[End] , 'Calendar'[Date]) , ALL('Calendar') , 'Calendar'[Date]<=mDate , 'Table'[End] <> BLANK())
Headcount = [Acc Joiners]-[Acc Leavers]


Si, a continuación, crea una matriz para mostrar la medida de recuento de personal junto con una dimensión mes/año en el calendario, debe obtener el "número de empleados de fin de mes" correcto.

Por último, también puede añadir esta medida que calcula el recuento de personas que abandonan el período:

Leavers = 
VAR mDate = MAX('Calendar'[Date])
Return
CALCULATE(COUNTROWS('Table') , USERELATIONSHIP('Table'[End] , 'Calendar'[Date]))


Como estas son todas las medidas, debería poder utilizarlas junto con las columnas Ubicación/Departamento.

Avísame cómo va.


/ J


Connect on LinkedIn

Helpful resources

Announcements
April AMA free

Microsoft Fabric AMA Livestream

Join us Tuesday, April 09, 9:00 – 10:00 AM PST for a live, expert-led Q&A session on all things Microsoft Fabric!

March Fabric Community Update

Fabric Community Update - March 2024

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

Top Solution Authors