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

¿Cómo encontrar 2 fechas sucesivas y calcular no de horas en ellas?

Necesito escribir la función DAX con la que puedo encontrar el número de fechas que vienen primero 2 veces para cada uno de los empleados y cuáles son las horas trabajadas, a continuación se muestran los datos como:

Horario de empName Date

A 23/10/2021 4

A 30/10/2021 6

B 01/11/2021 3

C 05/11/2021 10

C 14/11/2021 11

C 20/11/2021 20

DAX debería darme número de horas como A=10 y C=22 (ya que estamos hablando de las primeras 2 fechas por empleado), y B no se contará en lo anterior ya que no hay 2 fechas consecutivas.

¿Alguna idea de cómo calcular lo anterior?

1 ACCEPTED SOLUTION

@Anmolgan, puedes probar una bandera como

Column = Var _count = countx(filter(Period, [EmpNam] =EARLIER([EmpNam]) && [Date] <= EARLIER([Date])), [EmpNam]) 
var _hour = sumx(filter(Period, [EmpNam] =EARLIER([EmpNam]) && [Date] <= EARLIER([Date])), [hours]) 
return if(_count =2 && _hour >20, 1,0)

Vea si el archivo adjunto después de la firma puede ayudar

View solution in original post

5 REPLIES 5
Syndicate_Admin
Administrator
Administrator

@Anmolgan , Crear estas dos columnas

Cnt = countx(filter(Table, [EmpName] = earlier([EmpName]) && [Date] <= earlier([Date]) ), [EmpName])

total = countx(filter(Table, [EmpName] = earlier([EmpName]) && [Date] <= earlier([Date]) ), [hours])

crear meausre

calculate(sum(Table[Total]), filter(Table, Table[cnt] =2))

@amitchandak gracias por la respuesta, ¿podemos tweek esto ya que tengo períodos de pago definidos por el siguiente DAX, así que básicamente estoy buscando encontrar el número de empleados trabajados menos de 20 horas en los primeros dos períodos de pago, ahora los períodos de pago pueden ser 3,5,10, etc. A continuación se muestran los DAX que han escrito para determinar el período de pago:

número de período de pago = PISO(DATEDIFF(FECHA(2021,8,15),'Fechas'[Fecha],DÍA)/14,1)+1
fecha de finalización del período de pago = CALCULAR(MÁXIMO('Fechas'[Fecha]),TODOSEXCEPTO(Fechas,Fechas[número de período de pago]))

@Anmolgan , ¿necesita en función del rango seleccionado o solo los dos primeros períodos?

Puedes primero 2 puntos sin filtro de segmentación de datos, las columnas harán

filtro adicional hará

calculate(sum(Table[Total]), filter(Table, Table[cnt] =2 && [Total] >20 ))

@amitchandak Requiero solo los dos primeros períodos para verificar cuáles fueron las horas trabajadas, ¿el DAX que publicó anteriormente hará esto?

@Anmolgan, puedes probar una bandera como

Column = Var _count = countx(filter(Period, [EmpNam] =EARLIER([EmpNam]) && [Date] <= EARLIER([Date])), [EmpNam]) 
var _hour = sumx(filter(Period, [EmpNam] =EARLIER([EmpNam]) && [Date] <= EARLIER([Date])), [hours]) 
return if(_count =2 && _hour >20, 1,0)

Vea si el archivo adjunto después de la firma puede ayudar

Helpful resources

Announcements
LearnSurvey

Fabric certifications survey

Certification feedback opportunity for the community.