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

Next up in the FabCon + SQLCon recap series: The roadmap for Microsoft SQL and Maximizing Developer experiences in Fabric. All sessions are available on-demand after the live show. Register now

Reply
Syndicate_Admin
Administrator
Administrator

Buscar mudanzas y promociones de empleados en una tabla de empleados

Tengo una tabla similar a la siguiente:

EmpIDPeriodoPosiciónUnidad de Negocio
1232023-01DirectorA1
2212023-01VPB2
3332023-01AnalistaC5
4442023-01AnalistaC5
1232023-02DirectorA1
2212023-02MDB2
3332023-02Analista SeniorN4
4442023-02AnalistaN4

Me gustaría agregar columnas a la tabla para tener en cuenta 3 escenarios

  1. Alguien fue promovido y, por lo tanto, cambió el título (supongamos que no hay degradaciones y, por lo tanto, cualquier cambio de título en un mes posterior en comparación con un mes anterior es una promoción)
  2. Alguien cambia su equipo y así la Unidad de Negocio ahora está cambiada
  3. Alguien se promotizó y cambió su unidad de negocio

¡Obviamente, el 4º escenario es que nada cambió!

Así que la tabla de salida debería ser así:

EmpIDPeriodoPosiciónUnidad de NegocioPromociónCambio de BUPosición anteriorAnterior BU
1232023-01DirectorA1
2212023-01VPB2
3332023-01AnalistaC5
4442023-01AnalistaC5
1232023-02DirectorA1
2212023-02MDB21 VP
3332023-02Analista SeniorN411AnalistaC5
4442023-02AnalistaN4 1 C5

¡Espero que esto tenga algún sentido!

Gracias de antemano por cualquier sugerencia

7 REPLIES 7
Syndicate_Admin
Administrator
Administrator

Hola

Estas fórmulas de columna calculadas funcionan

Promotion = 1*(and(Data[Position]<>LOOKUPVALUE(Data[Position],Data[Period],CALCULATE(MAX(Data[Period]),FILTER(Data,Data[EmpID]=EARLIER(Data[EmpID])&&Data[Period]<><><>BLANK()))<><>
BU change = 1*(and(Data[Business Unit]<>LOOKUPVALUE(Data[Business Unit],Data[Period],CALCULATE(MAX(Data[Period]),FILTER(Data,Data[EmpID]=EARLIER(Data[EmpID])&&Data[Period]BLANK()))
Previous position = if(Data[Promotion]=0,BLANK(),LOOKUPVALUE(Data[Position],Data[Period],CALCULATE(MAX(Data[Period]),FILTER(Data,Data[EmpID]=EARLIER(Data[EmpID])&&Data[Period]<>< ode=""><>
Previous BU = if(Data[BU change]=0,BLANK(),LOOKUPVALUE(Data[Business Unit],Data[Period],CALCULATE(MAX(Data[Period]),FILTER(Data,Data[EmpID]=EARLIER(Data[EmpID])&&Data[Period]<>< ode=""><>

Espero que esto ayude.

Untitled.png

Gracias Ashish! Esto es excelente y funciona perfectamente con el conjunto de datos de ejemplo.

Sin embargo, con mis datos reales hay una complicación, es más como esto:

EmpIDFTEPeriodoPosiciónUnidad de Negocio
12312023-01DirectorA1
22112023-01VPB2
33312023-01AnalistaC5
33302023-01AnalistaC2
44412023-01AnalistaC5
12312023-02DirectorA1
22112023-02MDB2
33312023-02Analista SeniorN4
44412023-02AnalistaN4

Como puede ver, EmplID no es distinto dentro de un período, y esto rompe la función LOOKUPVALUE.

¿Hay alguna manera de extraer preferentemente de las filas donde FTE no es 0 solo en caso de duplicados dentro del mismo período? Al mismo tiempo, si no hay duplicados, entonces tener cero FTE está bien.

En cualquier caso, gracias por su ayuda porque me puso en la dirección correcta!!!!

Hola

De nada. Muestre el resultado esperado en la nueva tabla que ha compartido.

La tabla de resultados será la misma que en mi pregunta original:

EmpIDPeriodoPosiciónUnidad de NegocioPromociónCambio de BUPosición anteriorAnterior BU
1232023-01DirectorA1
2212023-01VPB2
3332023-01AnalistaC5
4442023-01AnalistaC5
1232023-02DirectorA1
2212023-02MDB21 VP
3332023-02Analista SeniorN411AnalistaC5
4442023-02AnalistaN4 1 C5

La diferencia está en la tabla de origen ya que 333 se repiten. ¿Es la forma de ignorar la fila con cero solo en caso de duplicados? De cualquier manera, no es un gran problema y probablemente pueda lidiar con aquellos en la consulta de poder. ¡Todavía tengo curiosidad por ver qué se te ocurre! !

¿Por qué no hay ninguna columna en la tabla de resultados con 1 y 0?

El 1 y 0 es la columna del número FTE. Entonces, en el resultado, para 333 en 2023-02, la UB anterior será C5 correspondiente al ETC = 1 en lugar de C2 correspondiente a ETC = 0.

Tal vez alguien más que entienda su pregunta lo ayude.

Helpful resources

Announcements
New to Fabric survey Carousel

New to Fabric Survey

If you have recently started exploring Fabric, we'd love to hear how it's going. Your feedback can help with product improvements.

Power BI DataViz World Championships carousel

Power BI DataViz World Championships - June 2026

A new Power BI DataViz World Championship is coming this June! Don't miss out on submitting your entry.

Join our Fabric User Panel

Join our Fabric User Panel

Share feedback directly with Fabric product managers, participate in targeted research studies and influence the Fabric roadmap.

March Power BI Update Carousel

Power BI Community Update - March 2026

Check out the March 2026 Power BI update to learn about new features.

Top Kudoed Authors