Register now to learn Fabric in free live sessions led by the best Microsoft experts. From Apr 16 to May 9, in English and Spanish.
La tabla de conjuntos de datos tiene los ID de empleados y sus valores equivalentes a tiempo completo por meses que abarcan dos años en una columna. ¿Cómo calculo quiénes son nuevos uniones y quiénes son los que abandonan, es decir, para rellenar las columnas "FTE del mes anterior" y "Marcador"?
Traté de calcular el primer FTE del mes anterior usando "calcular (suma (FTE), mes anterior (Mes del año)", pero fallé. esencialmente si puedo obtener el FTE del mes anterior, entonces el marcador sería una función if de: Si no se encuentra FTE mes anterior, marque como "Joiner", y si el mes anterior FTE es >0 y FTE no se encuentra, entonces marque como "Leaver".
Id. de empleado | Fte | Mes del año | Mes anterior FTE | Marcador |
100001 | 1 | 2019 Ene | En | En |
100002 | 0.7 | 2019 Ene | En | En |
100003 | 0.8 | 2019 Ene | En | En |
100004 | 1 | 2019 Ene | En | En |
100005 | 1 | 2019 Ene | En | En |
100001 | 1 | 2019 Feb | 1 | |
100002 | 0.7 | 2019 Feb | 0.7 | Licenciado |
100003 | 0.8 | 2019 Feb | 0.8 | |
100004 | 1 | 2019 Feb | 1 | |
100005 | 1 | 2019 Feb | 1 | |
100001 | 1 | Mar 2019 | 1 | |
100003 | 0.8 | Mar 2019 | 0.8 | |
100004 | 1 | Mar 2019 | 1 | |
100005 | 1 | Mar 2019 | 1 | |
100006 | 1 | Mar 2019 | 0 | Joiner |
Solved! Go to Solution.
puede intentar crear dos columnas
Column =
VAR mindate=minx(all('Table'),'Table'[Year Month])
VAR previous=MAXX(FILTER('Table','Table'[Employee ID]=EARLIER('Table'[Employee ID])&&'Table'[Year Month]<EARLIER('Table'[Year Month])),'Table'[FTE])
return if('Table'[Year Month]=mindate,blank(),if(ISBLANK(previous),0,previous))
Column 2 =
VAR mindate=minx(all('Table'),'Table'[Year Month])
VAR maxdate=MAXX(all('Table'),'Table'[Year Month])
VAR previous=MAXX(FILTER('Table','Table'[Employee ID]=EARLIER('Table'[Employee ID])&&'Table'[Year Month]<EARLIER('Table'[Year Month])),'Table'[FTE])
VAR next=MINX(FILTER('Table','Table'[Employee ID]=EARLIER('Table'[Employee ID])&&'Table'[Year Month]>EARLIER('Table'[Year Month])),'Table'[FTE])
return if(ISBLANK('Table'[Column]),BLANK(),if(ISBLANK(previous),"joiner",if('Table'[Column]>0&&ISBLANK(next)&&'Table'[Year Month]<>maxdate,"leaver",blank())))
Proud to be a Super User!
puede intentar crear dos columnas
Column =
VAR mindate=minx(all('Table'),'Table'[Year Month])
VAR previous=MAXX(FILTER('Table','Table'[Employee ID]=EARLIER('Table'[Employee ID])&&'Table'[Year Month]<EARLIER('Table'[Year Month])),'Table'[FTE])
return if('Table'[Year Month]=mindate,blank(),if(ISBLANK(previous),0,previous))
Column 2 =
VAR mindate=minx(all('Table'),'Table'[Year Month])
VAR maxdate=MAXX(all('Table'),'Table'[Year Month])
VAR previous=MAXX(FILTER('Table','Table'[Employee ID]=EARLIER('Table'[Employee ID])&&'Table'[Year Month]<EARLIER('Table'[Year Month])),'Table'[FTE])
VAR next=MINX(FILTER('Table','Table'[Employee ID]=EARLIER('Table'[Employee ID])&&'Table'[Year Month]>EARLIER('Table'[Year Month])),'Table'[FTE])
return if(ISBLANK('Table'[Column]),BLANK(),if(ISBLANK(previous),"joiner",if('Table'[Column]>0&&ISBLANK(next)&&'Table'[Year Month]<>maxdate,"leaver",blank())))
Proud to be a Super User!
@ryan_mayu : "Me encontré con esta respuesta suya de 2020 y quería agradecerle ya que me enfrento a un problema similar y su solución es simplemente fantástica!
¿Podría preguntar si quería FTE del mes anterior para un nuevo miembro como BLANK ya que eso es más preciso, qué cambio debo hacer?
return if('Table'[Year Month]=mindate,blank(),if(ISBLANK(previous),0,previous))
Intenté reemplazar cero arriba con BLANK () pero eso está desordenado en la columna de ensambladores / salientes.
En segundo lugar, y lo que es más importante, ¿tiene sugerencias para modificar esto para que pueda tener en cuenta los escenarios en los que una persona se une en un mes y abandona antes del siguiente para que sea efectivamente un miembro y un abandonador en la columna del mes actual?
En cualquier caso, aprecia tu trabajo!!
¿Podría proporcionar el resultado esperado basado en los datos de muestra en la primera publicación?
Si los datos de muestra no son buenos, los pls proporcionan uno nuevo y también proporcionan su salida esperada.
Gracias por responder😀
He creado un nuevo conjunto de datos de ejemplo ya que el original no cubre este escenario.
ID de empleado | FTE | Fecha |
123 | 1 | 2023-01 |
232 | 0 | 2023-01 |
333 | 0.9 | 2023-01 |
123 | 1 | 2023-02 |
555 | 1 | 2023-02 |
232 | 1 | 2023-02 |
444 | 0 | 2023-02 |
123 | 1 | 2023-03 |
232 | 1 | 2023-03 |
444 | 1 | 2023-03 |
Lo que es diferente en el conjunto de datos anterior del original de OP en la pregunta es la presencia de 555 que aparece solo durante un mes y, por lo tanto, es tanto un carpintero como un partidario.
Resultado resultante:
ID de empleado | FTE | Fecha | Anterior EJC | Ebanista/Abandonador |
123 | 1 | 2023-01 | ||
232 | 0 | 2023-01 | ||
333 | 0.9 | 2023-01 | Licenciado | |
123 | 1 | 2023-02 | 1 | |
555 | 1 | 2023-02 | Joiner+Leaver | |
232 | 1 | 2023-02 | 0 | |
444 | 0 | 2023-02 | Carpintero | |
123 | 1 | 2023-03 | 1 | |
232 | 1 | 2023-03 | 1 | |
444 | 1 | 2023-03 | 0 |
Espero que esto tenga sentido. Mi punto es que con un conjunto de datos real podría haber un FTE que aparece solo por un mes y se va y es a la vez un joiner y leaver.
Puedes probar esto
Column =
var _min=min('Table'[Date])
var _max=max('Table'[Date])
var _last=maxx(FILTER('Table','Table'[Employee ID]=EARLIER('Table'[Employee ID])&&'Table'[Date]EARLIER('Table'[Date])),'Table'[Date])
var _count=countx(FILTER('Table','Table'[Employee ID]=EARLIER('Table'[Employee ID])),'Table'[Employee ID])
return if('Table'[Date]<>_max&&'Table'[Date]<>_min&&_count=1,"joiner+leaver",if('Table'[Date]<>_max && ISBLANK(_next),"leave",if('Table'[Date]<>_min&&ISBLANK(_last),"joiner")))
Gracias esto es perfecto!
De nada
Covering the world! 9:00-10:30 AM Sydney, 4:00-5:30 PM CET (Paris/Berlin), 7:00-8:30 PM Mexico City
Check out the April 2024 Power BI update to learn about new features.