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

Get Fabric Certified for FREE during Fabric Data Days. Don't miss your chance! Request now

Reply
Syndicate_Admin
Administrator
Administrator

Cuántos días abiertos en un período de tiempo determinado

Estoy tratando de crear una medida que calcule cuántos días ha estado abierto un ticket en un período de tiempo determinado. Entonces, si el período que me interesa está entre el 1 de enero y el 4 de enero y el boleto estuvo abierto entre el 2 de enero y el 5 de enero, la medida devolvería 3 ya que el boleto estuvo abierto durante 4 días, pero el último día estaba en el siguiente período.

¡Ese es mi primer problema! La segunda es que los tickets no siempre se pueden trabajar todos los días. Por lo tanto, tengo que descontar los días que no se puede trabajar del número total de días que devuelve la medida. Entonces, en el ejemplo que usé anteriormente, si el boleto no se pudo trabajar el 3 de enero, el total ahora se reduciría a 2.

Los datos provendrían de dos tablas como se muestra en la imagen 1. El resultado para si la medida estuviera considerando el período 2 sería la tabla de la imagen 2. Un colega mío sugirió que esto podría ser más fácil en PQ, pero no tengo idea de cómo lograrlo.

Cualquier ayuda es muy apreciada.

LeeGrimshaw1_2-1724235109653.png

LeeGrimshaw1_3-1724235163243.png

5 REPLIES 5
Syndicate_Admin
Administrator
Administrator

Hola @LeeGrimshaw1

¿Las respuestas de DataNinja777 y bhanu_gautam lo ayudaron a resolver su problema? Si se resuelve, acepte sus respuestas como la solución. Además, permítame agregar mi solución aquí.

1. Cree una medida con el siguiente DAX:

Number of Days Open that could have been worked = 
VAR SlicerStartDate = MIN('WorkDay'[Date])
VAR SlicerEndDate = MAX('WorkDay'[Date])
VAR TicketStartDate = SELECTEDVALUE('Ticket'[Ticket Start Date])
VAR TicketEndDate = SELECTEDVALUE('Ticket'[Ticket End Date])
VAR TicketActualStartDate = IF(TicketStartDate < SlicerStartDate, SlicerStartDate, TicketStartDate)
VAR TicketActualEndDate = IF(TicketEndDate > SlicerEndDate, SlicerEndDate, TicketEndDate)
VAR WorkDays =
CALCULATE(
    COUNTROWS('WorkDay'),
    'WorkDay'[Date] >= TicketActualStartDate,
    'WorkDay'[Date] <= TicketActualEndDate,
    'WorkDay'[Available to be worked?] = "Available"
)
RETURN
IF(TicketStartDate > SlicerEndDate || TicketEndDate < SlicerStartDate, 0, WorkDays)

2. Cree una segmentación con el límite "Fecha" de la tabla "Día laborable" y seleccione el estilo "Entre" en la configuración de la segmentación.

3. Aquí está el resultado de mi prueba, consulte el archivo pbix cargado para obtener más detalles.

vxianjtanmsft_0-1724819479657.png

Saludos
Jarvis Tang
Si esta publicación ayuda, considere Acéptalo como la solución para ayudar a los demás miembros a encontrarlo más rápidamente.

¡Gracias por su intento de resolver mi problema!

Al final encontré una solución utilizando Power Query para lograr el resultado requerido. Creé una lista de fechas en una columna personalizada que contenía las fechas entre las fechas de inicio y de inicio. Una vez expandido, este nuevo colono contiene todas las fechas en las que se abrió el ticket. Una vez en este punto, pude fusionar otra tabla para agregar el detalle de si el boleto se podía trabajar o no en un día determinado.

Resolver esto en Power Query permitió que se llevaran a cabo filtrados y medidas muy simples a nivel de informe.

LeeGrimshaw1_0-1724845229661.png

LeeGrimshaw1_1-1724845369552.png

Hola @LeeGrimshaw1

Me alegra saber que resolviste este problema y gracias por compartir tu solución. Esto beneficiará a otras personas que están experimentando problemas similares.

Saludos
Jarvis Tang
Si esta publicación ayuda, considere Acéptalo como la solución para ayudar a los demás miembros a encontrarlo más rápidamente.

Syndicate_Admin
Administrator
Administrator

Hola @LeeGrimshaw1 ,

La medida de DAX que se muestra a continuación producirá el resultado que solicitó; Sin embargo, el resultado difiere de lo que se muestra en la segunda imagen

Number of days open that could have been worked = 
    sumx('Calendar',
        if(max('Table'[Ticket Start Date]) <= 'Calendar'[Date]&& 
        max('Table'[Ticket End Date]) >= 'Calendar'[Date]&& 'Calendar'[Available to be worked?] = "Available",1,0)
    )

DataNinja777_3-1724243201349.png

Por favor, verifique si el resultado coincide con sus intenciones

He adjuntado un archivo pbix de ejemplo.

Syndicate_Admin
Administrator
Administrator

@LeeGrimshaw1 , Cree una medida para

Jornadas de Puertas T =
Fecha de inicio del VAR = MIN('Tabla de fechas'[Fecha])
Fecha de finalización del VAR = MÁXIMO('Tabla de fechas'[Fecha])
DEVOLUCIÓN
SUMX (
FILTRO (
Entradas
Entradas[OpenDate] <= Fecha de finalización &&
(Tickets[CloseDate] >= Fecha de inicio || ISBLANK(Tickets[CloseDate]))
),
DATEDIFF (
MÁXIMO ( StartDate, Tickets[OpenDate] ),
MIN ( Fecha de finalización, COALESCE ( Tickets[CloseDate], EndDate ) ),
DÍA
) + 1
)
Cree una medida para
NonWorkingDaysCount =
CALCULAR (
COUNTROWS (Filas de recuentos) ( Días no laborables ),
NonWorkingDays[Date] >= MIN ( 'Tabla de fechas'[Fecha]) &&
NonWorkingDays[Date] <= MÁXIMO ( 'Tabla de fechas'[Fecha])
)
Jornadas Abiertas Ajustadas =
[Jornadas de Puertas Abiertas] - [NonWorkingDaysCount]

Helpful resources

Announcements
November Power BI Update Carousel

Power BI Monthly Update - November 2025

Check out the November 2025 Power BI update to learn about new features.

Fabric Data Days Carousel

Fabric Data Days

Advance your Data & AI career with 50 days of live learning, contests, hands-on challenges, study groups & certifications and more!

FabCon Atlanta 2026 carousel

FabCon Atlanta 2026

Join us at FabCon Atlanta, March 16-20, for the ultimate Fabric, Power BI, AI and SQL community-led event. Save $200 with code FABCOMM.

Top Kudoed Authors