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

encontrar 2 últimos salarios por empleado y calcular el monto del aumento

Hola, tengo un cálculo realmente complicado para mí que no puedo resolver. Tengo una tabla salarial donde están todos los salarios de los empleados. Necesito calcular cuánto ha aumentado el salario. Puede haber múltiples aumentos salariales / empleado y debe calcularse a partir de los dos últimos acuerdos.

Por ejemplo, Employee.Id 1: Calcular(suma(salario mensual1-salario mensual2) donde employee.id = 1 y salario mensual1=último salario y salario mensual2 =segundo salario más alto.

IdentificaciónEmployee.IdFecha de inicioMensualWage
1101.01.20181000
2210.01.20193000
3101.01.20191500
4205.11.20203200
5101.01.20212000
6328.10.20201500
7301.09.20211600
1 ACCEPTED SOLUTION
Syndicate_Admin
Administrator
Administrator

Hay @vuolleh,

Puede crear dos columnas calculadas

rank =
RANKX (
    FILTER ( 'Table', [Employee.Id] = EARLIER ( 'Table'[Employee.Id] ) ),
    [Startdate],
    ,
    ASC,
    DENSE
)
increase amount =
VAR _amount =
    CALCULATE (
        SUM ( 'Table'[MonthlyWage] ),
        FILTER (
            'Table',
            [Employee.Id] = EARLIER ( 'Table'[Employee.Id] )
                && [rank]
                    = EARLIER ( 'Table'[rank] ) - 1
        )
    )
RETURN
    IF ( ISBLANK ( _amount ), 0, [MonthlyWage] - _amount )

13.png

Saludos

Esteban Tao

Si esta publicación ayuda,entonces considere Aceptarla como la solución para ayudar a los otros miembros a encontrarla más rápidamente.

View solution in original post

4 REPLIES 4
Syndicate_Admin
Administrator
Administrator

Hay @vuolleh,

Puede crear dos columnas calculadas

rank =
RANKX (
    FILTER ( 'Table', [Employee.Id] = EARLIER ( 'Table'[Employee.Id] ) ),
    [Startdate],
    ,
    ASC,
    DENSE
)
increase amount =
VAR _amount =
    CALCULATE (
        SUM ( 'Table'[MonthlyWage] ),
        FILTER (
            'Table',
            [Employee.Id] = EARLIER ( 'Table'[Employee.Id] )
                && [rank]
                    = EARLIER ( 'Table'[rank] ) - 1
        )
    )
RETURN
    IF ( ISBLANK ( _amount ), 0, [MonthlyWage] - _amount )

13.png

Saludos

Esteban Tao

Si esta publicación ayuda,entonces considere Aceptarla como la solución para ayudar a los otros miembros a encontrarla más rápidamente.

Hola

Genial esto funciona como un encanto :)! ¡Muchas gracias!

Syndicate_Admin
Administrator
Administrator

@vuolleh ,


Meausre =
var _max = calculate(Max(Table[Startdate]), allexcept(Table, Table[Employee.ID]))
var _max2 = calculate(MaxX(Filter(Table, Table[Startdate]<_max),Table[Startdate] ), allexcept(Table, Table[Employee.ID]))
devolución
calculate(sumX(values(Table[employee.id]) , calculate(sum(Table[MonthlyWage]), filter(Table, Table[Startdate]=_max)) -calculate(sum(Table[MonthlyWage]), filter(Table, Table[Startdate]=_max1))))

Hola, @amitchandak por alguna razón el cálculo devuelve un resultado incorrecto. por ejemplo, el salario anterior ha sido de 1337 y el nuevo salario es de 3000. El resultado debe ser 1663 (la diferencia entre el salario actual y el anterior) pero el cálculo devuelve -1337

Helpful resources

Announcements
LearnSurvey

Fabric certifications survey

Certification feedback opportunity for the community.