Earn the coveted Fabric Analytics Engineer certification. 100% off your exam for a limited time only!
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!
Solved! Go to 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:
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
¿Necesita esto como medida o también funcionaría una columna calculada?
/ J
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
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 🙂
Bien
Comencemos con esto:
Mi mesa ficticia:
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:
¿Es esto en la dirección correcta en términos de lo que estás buscando?
/j
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
¡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:
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