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

Earn a 50% discount on the DP-600 certification exam by completing the Fabric 30 Days to Learn It challenge.

Reply
Syndicate_Admin
Administrator
Administrator

Calcular el salario total en función de la fecha de inicio y finalización del empleo

Hola a todos

Tengo estos datos a continuación y una tabla de fechas. Mark fue promovido a diferentes roles, de ahí el cambio en su salario. Me gustaría calcular su salario mensual y su salario prorrateado en función de sus fechas de inicio y finalización

EmpleadoFecha de inicioFecha final Anual Mensual Aumentar
Marcos López5/17/2021 1,200,000.00 100,000.00
Marcos López7/1/2021 1,500,000.00 125,000.00300,000
Marcos López9/1/20219/15/2021 2,000,000.00 166,667.00500,000

Mis cálculos:

Aumentar =
VAR PreviousDate_ =
CALCULAR (
MAX ( Empleado[Fecha de inicio] ),
Empleado[Fecha de inicio] < ANTES ( Empleado[Fecha de inicio] ),
ALLEXCEPT ( Empleado, Empleado[Employee__Id] )
)
VAR PreviousValue_ =
CALCULAR (
DISTINCT ( Empleado[Anual] ),
Empleado[Fecha de inicio] = PreviousDate_,
ALLEXCEPT ( Empleado, Empleado[Employee__Id] )
)
VAR CurrentValue_ = Empleado[Anual]
DEVOLUCIÓN
SI (
NO ISBLANK ( CurrentValue_ ) && NO ISBLANK ( PreviousValue_ ),
CurrentValue_ - PreviousValue_
)
Salario original = CALCULATE(SUM(Empleado[Anual]), Empleado[Aumento] = BLANK())
ACUMULATIVO =
CALCULATE(([Salario original]+ SUMA(Empleado[Aumento]))/12,
FILTER(ALLSELECTED('Fecha'[Fecha]),
'Fecha'[Fecha]<=MAX('Fecha'[Fecha])))
Total corriendo (SALARIO) =
VAR MaxDate =
MAX ( 'Fecha'[Fecha] )
DEVOLUCIÓN
CALCULAR ([ACUMULATIVO],
Empleado[Fecha de inicio] <= MaxDate,
OR(ISBLANK(Empleado[Fecha de finalización]),
Empleado[Fecha de finalización] > MaxDate)
)

Resultado:

cvld_11-1633616615100.png

Calculé el salario prorrateado como

Días trabajados = DATEDIFF(Empleado[Fecha de inicio], ENDOFMONTH('Fecha'[Fecha].[ Fecha]),DÍA) +1

Salario prorrateado =( Días trabajados*Mensual)/30

Pero no me devolvió lo que buscaba.

cvld_12-1633617747135.png

Estoy buscando tener:

EmpleadoFecha de inicio Salario anual Mensual Pagado
Marcos López5/17/2021 $ 1,200,000.00 ₱ 100.000,00 ₱ 50.000,00
Marcos López6/1/2021 $ 1,200,000.00 ₱ 100.000,00 ₱ 100.000,00
Marcos López7/1/2021 $ 1,500,000.00 ₱ 125.000,00 ₱ 125.000,00
Marcos López8/1/2021 $ 1,500,000.00 ₱ 125.000,00 ₱ 125.000,00
Marcos López9/1/2021 $ 2,000,000.00 ₱ 166.667,00 ₱ 83.333,00

cvld_1-1633618453799.png

¡Agradece su ayuda en este!

3 ACCEPTED SOLUTIONS
Syndicate_Admin
Administrator
Administrator

Obtener el número de días empleados en un mes en particular es la parte más difícil, IMO.

Aquí está mi intento:

MonthlyPaid =
VAR MonthEnd = MAX ( 'Date'[Date] )
VAR MonthStart = MIN ( 'Date'[Date] )
VAR StartDate = CALCULATE ( MAX ( Employee[Start Date] ), Employee[Start Date] < MonthEnd )
VAR EndDate =   CALCULATE ( MIN ( Employee[End Date] ),   Employee[End Date] > StartDate  )
VAR MonthlySalary =
    CALCULATE (
        SELECTEDVALUE ( Employee[Monthly] ),
        Employee[Start Date] = StartDate
    )
VAR DaysEmployed =
    DATEDIFF (
        MAX ( StartDate, MonthStart ),
        MIN ( EndDate, MonthEnd ),
        DAY
    ) + 1
VAR DaysInMonth = DAY ( MonthEnd )
RETURN
    IF ( DaysEmployed > 0, MonthlySalary * DaysEmployed / DaysInMonth )

AlexisOlson_0-1633624335529.png

View solution in original post

Es posible que solo necesite controlar null para EndDate. Vea si ayuda a reemplazar

MIN ( EndDate, MonthEnd )

con

IF ( ISBLANK ( EndDate ), MonthEnd, MIN ( EndDate, MonthEnd ) )

View solution in original post

La medida busca un salario único. Para varios empleados, es probable que deba envolver la medida con SUMX para iterar a través de empleados separados.

SumMonthlyPaid =
SUMX ( VALUES ( Employee[Employee_Id] ), [MonthlyPaid] )

View solution in original post

9 REPLIES 9
Syndicate_Admin
Administrator
Administrator

Obtener el número de días empleados en un mes en particular es la parte más difícil, IMO.

Aquí está mi intento:

MonthlyPaid =
VAR MonthEnd = MAX ( 'Date'[Date] )
VAR MonthStart = MIN ( 'Date'[Date] )
VAR StartDate = CALCULATE ( MAX ( Employee[Start Date] ), Employee[Start Date] < MonthEnd )
VAR EndDate =   CALCULATE ( MIN ( Employee[End Date] ),   Employee[End Date] > StartDate  )
VAR MonthlySalary =
    CALCULATE (
        SELECTEDVALUE ( Employee[Monthly] ),
        Employee[Start Date] = StartDate
    )
VAR DaysEmployed =
    DATEDIFF (
        MAX ( StartDate, MonthStart ),
        MIN ( EndDate, MonthEnd ),
        DAY
    ) + 1
VAR DaysInMonth = DAY ( MonthEnd )
RETURN
    IF ( DaysEmployed > 0, MonthlySalary * DaysEmployed / DaysInMonth )

AlexisOlson_0-1633624335529.png

Hola @AlexisOlson gracias por tomarse el tiempo para trabajar en esto. Utilicé su fórmula para recrear el mismo visual en su solución, pero el mes de mayo no se muestra de mi parte. ¿Qué me estoy perdiendo? Utilicé la tabla de fechas como eje x

cvld_0-1633628444420.png

¡Gracias!

No estoy seguro. ¿Tiene alguna relación de tabla que haga un filtrado no intencionado?

¿Tal vez intente depurar la medida devolviendo cada uno de los VAR hasta que encuentre que el que no funciona como se esperaba?

Hola @AlexisOlson he encontrado lo que me faltaba! La fórmula funciona perfectamente para empleados inactivos. Si usted es tan amable, ¿cómo puedo hacer que funcione para los empleados activos (empleados sin fechas de finalización del empleo)?

Es posible que solo necesite controlar null para EndDate. Vea si ayuda a reemplazar

MIN ( EndDate, MonthEnd )

con

IF ( ISBLANK ( EndDate ), MonthEnd, MIN ( EndDate, MonthEnd ) )

@AlexisOlson pregunta de seguimiento - (por favor disculpe mi pequeño conocimiento en dax)

al seleccionar 2 o más empleados para ver los salarios acumulados, ¿por qué se muestra así? Me gustaría que sumasan.

cvld_0-1633706749089.png

La medida busca un salario único. Para varios empleados, es probable que deba envolver la medida con SUMX para iterar a través de empleados separados.

SumMonthlyPaid =
SUMX ( VALUES ( Employee[Employee_Id] ), [MonthlyPaid] )

gracias @AlexisOlson!!

@AlexisOlson perfecto!!! ¡Muchas gracias!

Helpful resources

Announcements
LearnSurvey

Fabric certifications survey

Certification feedback opportunity for the community.

PBI_APRIL_CAROUSEL1

Power BI Monthly Update - April 2024

Check out the April 2024 Power BI update to learn about new features.

April Fabric Community Update

Fabric Community Update - April 2024

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