Microsoft Fabric Community Conference 2025, March 31 - April 2, Las Vegas, Nevada. Use code MSCUST for a $150 discount.
Register nowThe Power BI DataViz World Championships are on! With four chances to enter, you could win a spot in the LIVE Grand Finale in Las Vegas. Show off your skills.
Quería crear una columna calculada que devuelva el totalde horas de trabajo en función de la fecha de inicio. El resultado de mi cálculo
columna debe ser [9,4:30,13].
es decir, B trabajó durante 9 horas el 6-4-2020
4:30 horas el 7-4-2020
13 horas el 8-4-2020.
Otra columna calculada para el salario Si trabaja de 8 am a 5pm cada hora pagamos un salario diferente (digamos 100 por hora).
Del mismo modo, mientras se trabaja de 5.01 pm a 7:59 am se debe pagar una cantidad diferente por cada hora (digamos 200 por hora).
Por lo tanto, el resultado de esta columna calculada debe ser
en 6-4-2020 es 1050 (de 9:30 am a 5:00 pm es 750 y de 5:00pm a 6:30 pm es 300)
en 7-4-2020 es 900 (de 7:30 pm a 12:00 am es 900)
en 8-4-2020 es 1850 (de 12:00 am a 4:00 am es 800 y de nuevo de 9:30 am a 6:30 pm es 1050)
Empleado | StartDate y Hora | Fecha y hora de finalización |
b | 06-04-2020 09:30:00 | 06-04-2020 18:30:00 |
b | 07-04-2020 19:30:00 | 08-04-2020 04:00:00 |
b | 08-04-2020 09:30:00 | 08-04-2020 18:30:00 |
amablemente me ayudan con el cálculo de dax para las dos columnas calculadas requeridas.
Solved! Go to Solution.
Hola @Dharani_98 ,
Yo creo una medida, no una columna calculada. Por favor, compruebe:
1. Cree la columna [StartDate].
StartDate = DATEVALUE('Table'[StartDate and Time])
2. Cree una tabla Calendario.
Calendar =
CALENDAR (
MINX ( 'Table', DATEVALUE ( 'Table'[StartDate and Time] ) ),
MAXX ( 'Table', DATEVALUE ( 'Table'[End Date And Time] ) )
)
3. Crear relación.
4. Cree la medida [Rank_].
Rank_ =
RANKX (
ALLSELECTED ( 'Table' ),
CALCULATE ( MAX ( 'Table'[StartDate] ) ),
,
ASC,
DENSE
)
5. Crear [Medida de salario].
Salary Measure =
VAR LastRank = [Rank_] - 1
VAR LastStartDateTime =
CALCULATE (
MAX ( 'Table'[StartDate and Time] ),
FILTER ( ALLSELECTED ( 'Table' ), [Rank_] = LastRank )
)
VAR LastEndDateTime =
CALCULATE (
MAX ( 'Table'[End Date And Time] ),
FILTER ( ALLSELECTED ( 'Table' ), [Rank_] = LastRank )
)
VAR LastDateDiff =
DATEDIFF ( LastStartDateTime, LastEndDateTime, DAY )
VAR ThisDateDiff =
DATEDIFF (
MAX ( 'Table'[StartDate and Time] ),
MAX ( 'Table'[End Date And Time] ),
DAY
)
VAR StartDateTime =
IF (
LastDateDiff = 1,
CONVERT (
DATEVALUE ( MAX ( 'Table'[StartDate and Time] ) ) & " "
& TIME ( 0, 0, 0 ),
DATETIME
),
MAX ( 'Table'[StartDate and Time] )
)
VAR EndDateTime =
IF (
ThisDateDiff = 1,
CONVERT (
DATEVALUE ( MAX ( 'Table'[End Date And Time] ) ) & " "
& TIME ( 0, 0, 0 ),
DATETIME
),
MAX ( 'Table'[End Date And Time] )
)
VAR SpecifiedStartTime =
CONVERT (
DATEVALUE ( MAX ( 'Table'[StartDate and Time] ) ) & " "
& TIME ( 8, 0, 0 ),
DATETIME
)
VAR SpecifiedEndTime =
CONVERT (
DATEVALUE ( MAX ( 'Table'[StartDate and Time] ) ) & " "
& TIME ( 17, 0, 0 ),
DATETIME
)
VAR Result =
IF (
LastDateDiff = 1,
IF (
EndDateTime > SpecifiedStartTime
&& EndDateTime <= SpecifiedEndTime,
DATEDIFF ( StartDateTime, LastEndDateTime, MINUTE ) / 60 * 200
+ DATEDIFF ( MAX ( 'Table'[StartDate and Time] ), EndDateTime, MINUTE ) / 60 * 100,
IF (
EndDateTime > SpecifiedEndTime,
DATEDIFF ( StartDateTime, LastEndDateTime, MINUTE ) / 60 * 200
+ DATEDIFF ( MAX ( 'Table'[StartDate and Time] ), SpecifiedEndTime, MINUTE ) / 60 * 100
+ DATEDIFF ( SpecifiedEndTime, EndDateTime, MINUTE ) / 60 * 200
)
),
IF (
LastDateDiff <> 1,
IF (
StartDateTime >= SpecifiedStartTime
&& EndDateTime <= SpecifiedEndTime,
DATEDIFF ( StartDateTime, EndDateTime, MINUTE ) / 60 * 100,
IF (
StartDateTime >= SpecifiedStartTime
&& StartDateTime < SpecifiedEndTime
&& EndDateTime > SpecifiedEndTime,
DATEDIFF ( StartDateTime, SpecifiedEndTime, MINUTE ) / 60 * 100
+ DATEDIFF ( SpecifiedEndTime, EndDateTime, MINUTE ) / 60 * 200,
IF (
StartDateTime >= SpecifiedEndTime,
DATEDIFF ( StartDateTime, EndDateTime, MINUTE ) / 60 * 200
)
)
)
)
)
RETURN
Result
6. Cree un objeto visual de tabla.
Para obtener más información, compruebe el archivo PBIX adjunto.
Saludos
Icey
Si este post ayuda,entonces por favor considere Aceptarlo como la solución para ayudar a los otros miembros a encontrarlo más rápidamente.
Hola @Dharani_98 ,
Yo creo una medida, no una columna calculada. Por favor, compruebe:
1. Cree la columna [StartDate].
StartDate = DATEVALUE('Table'[StartDate and Time])
2. Cree una tabla Calendario.
Calendar =
CALENDAR (
MINX ( 'Table', DATEVALUE ( 'Table'[StartDate and Time] ) ),
MAXX ( 'Table', DATEVALUE ( 'Table'[End Date And Time] ) )
)
3. Crear relación.
4. Cree la medida [Rank_].
Rank_ =
RANKX (
ALLSELECTED ( 'Table' ),
CALCULATE ( MAX ( 'Table'[StartDate] ) ),
,
ASC,
DENSE
)
5. Crear [Medida de salario].
Salary Measure =
VAR LastRank = [Rank_] - 1
VAR LastStartDateTime =
CALCULATE (
MAX ( 'Table'[StartDate and Time] ),
FILTER ( ALLSELECTED ( 'Table' ), [Rank_] = LastRank )
)
VAR LastEndDateTime =
CALCULATE (
MAX ( 'Table'[End Date And Time] ),
FILTER ( ALLSELECTED ( 'Table' ), [Rank_] = LastRank )
)
VAR LastDateDiff =
DATEDIFF ( LastStartDateTime, LastEndDateTime, DAY )
VAR ThisDateDiff =
DATEDIFF (
MAX ( 'Table'[StartDate and Time] ),
MAX ( 'Table'[End Date And Time] ),
DAY
)
VAR StartDateTime =
IF (
LastDateDiff = 1,
CONVERT (
DATEVALUE ( MAX ( 'Table'[StartDate and Time] ) ) & " "
& TIME ( 0, 0, 0 ),
DATETIME
),
MAX ( 'Table'[StartDate and Time] )
)
VAR EndDateTime =
IF (
ThisDateDiff = 1,
CONVERT (
DATEVALUE ( MAX ( 'Table'[End Date And Time] ) ) & " "
& TIME ( 0, 0, 0 ),
DATETIME
),
MAX ( 'Table'[End Date And Time] )
)
VAR SpecifiedStartTime =
CONVERT (
DATEVALUE ( MAX ( 'Table'[StartDate and Time] ) ) & " "
& TIME ( 8, 0, 0 ),
DATETIME
)
VAR SpecifiedEndTime =
CONVERT (
DATEVALUE ( MAX ( 'Table'[StartDate and Time] ) ) & " "
& TIME ( 17, 0, 0 ),
DATETIME
)
VAR Result =
IF (
LastDateDiff = 1,
IF (
EndDateTime > SpecifiedStartTime
&& EndDateTime <= SpecifiedEndTime,
DATEDIFF ( StartDateTime, LastEndDateTime, MINUTE ) / 60 * 200
+ DATEDIFF ( MAX ( 'Table'[StartDate and Time] ), EndDateTime, MINUTE ) / 60 * 100,
IF (
EndDateTime > SpecifiedEndTime,
DATEDIFF ( StartDateTime, LastEndDateTime, MINUTE ) / 60 * 200
+ DATEDIFF ( MAX ( 'Table'[StartDate and Time] ), SpecifiedEndTime, MINUTE ) / 60 * 100
+ DATEDIFF ( SpecifiedEndTime, EndDateTime, MINUTE ) / 60 * 200
)
),
IF (
LastDateDiff <> 1,
IF (
StartDateTime >= SpecifiedStartTime
&& EndDateTime <= SpecifiedEndTime,
DATEDIFF ( StartDateTime, EndDateTime, MINUTE ) / 60 * 100,
IF (
StartDateTime >= SpecifiedStartTime
&& StartDateTime < SpecifiedEndTime
&& EndDateTime > SpecifiedEndTime,
DATEDIFF ( StartDateTime, SpecifiedEndTime, MINUTE ) / 60 * 100
+ DATEDIFF ( SpecifiedEndTime, EndDateTime, MINUTE ) / 60 * 200,
IF (
StartDateTime >= SpecifiedEndTime,
DATEDIFF ( StartDateTime, EndDateTime, MINUTE ) / 60 * 200
)
)
)
)
)
RETURN
Result
6. Cree un objeto visual de tabla.
Para obtener más información, compruebe el archivo PBIX adjunto.
Saludos
Icey
Si este post ayuda,entonces por favor considere Aceptarlo como la solución para ayudar a los otros miembros a encontrarlo más rápidamente.
Muchas gracias. Fue una gran ayuda.
Gracias por su respuesta. Cuando estoy usando la hora no puedo obtener mis cálculos para el día 2 que debe ser 4:30 horas. Como trabajar con la hora elimina los minutos en el cálculo.
Por favor, consulte este post sobre cómo obtener su pregunta respondida rápidamente: https://community.powerbi.com/t5/Community-Blog/How-to-Get-Your-Question-Answered-Quickly/ba-p/38490