olimilo
Days Elapsed = -- Days elapsed since the End Date up to the current date VAR Type1 = COUNTROWS( FILTER( ALL(Dates), Dates[Date] >= 'Active Projects'[CompleteByEndDate] && Dates[Date] <= TODAY() && Dates[IsWeekend] = FALSE() ) ) VAR Type2 = COUNTROWS( FILTER( ALL(Dates), Dates[Date] >= 'Active Projects'[CompleteByEndDate] && Dates[Date] <= TODAY() && Dates[IsWeekendType2] = FALSE() ) ) VAR Type3 = COUNTROWS( FILTER( ALL(Dates), Dates[Date] >= 'Active Projects'[CompleteByEndDate] && Dates[Date] <= TODAY() && Dates[IsWeekendType3] = FALSE() ) ) VAR Type4 = COUNTROWS( FILTER( ALL(Dates), Dates[Date] >= 'Active Projects'[CompleteByEndDate] && Dates[Date] <= TODAY() && Dates[IsWeekendType4] = FALSE() ) ) VAR Type5 = COUNTROWS( FILTER( ALL(Dates), Dates[Date] >= 'Active Projects'[CompleteByEndDate] && Dates[Date] <= TODAY() && Dates[IsWeekendType5] = FALSE() ) ) VAR Type6 = COUNTROWS( FILTER( ALL(Dates), Dates[Date] >= 'Active Projects'[CompleteByEndDate] && Dates[Date] <= TODAY() && Dates[IsWeekendType6] = FALSE() ) ) VAR Type7 = COUNTROWS( FILTER( ALL(Dates), Dates[Date] >= 'Active Projects'[CompleteByEndDate] && Dates[Date] <= TODAY() && Dates[IsWeekendType7] = FALSE() ) ) VAR TAT = IF(LOOKUPVALUE(Weekdays[WeekendType], Weekdays[Country], 'Active Projects'[Country]) = 1, Type1, IF(LOOKUPVALUE(Weekdays[WeekendType], Weekdays[Country], 'Active Projects'[Country]) = 2, Type2, IF(LOOKUPVALUE(Weekdays[WeekendType], Weekdays[Country], 'Active Projects'[Country]) = 2, Type3, IF(LOOKUPVALUE(Weekdays[WeekendType], Weekdays[Country], 'Active Projects'[Country]) = 2, Type4, IF(LOOKUPVALUE(Weekdays[WeekendType], Weekdays[Country], 'Active Projects'[Country]) = 2, Type5, IF(LOOKUPVALUE(Weekdays[WeekendType], Weekdays[Country], 'Active Projects'[Country]) = 2, Type6, Type7) ) ) ) ) ) RETURN SWITCH( TRUE(), 'Active Projects'[CompleteByEndDate] < TODAY(), TAT - 'Active Projects'[Holidays (Elapsed)], 'Active Projects'[CompleteByEndDate] > TODAY(), -1 * TAT - 'Active Projects'[Holidays (Elapsed)] )
Es bastante largo pero hace lo mismo en general, la única diferencia es que usa una columna diferente para el argumento FILTER final basado en la categoría WeekendType del país (por ejemplo: fin de semana sábado/domingo, fin de semana viernes/sábado).
Phil_Seamark
Hola @olimilo
Parece factible. Cualquier posibilidad de que pueda publicar algunos datos ficticios para sus dos tablas para ayudarnos a comprender un poco mejor sus datos.
Phil_Seamark
En respuesta a Phil_Seamark
Ah, y una idea un poco más radical es simplemente simplificar su modelo de datos. Así que gira tus 7 columnas en filas.
Entonces, en lugar de 1 fila con 7 columnas, pivote (o anule el pivote en el Editor de consultas) para que tenga 7 filas y menos columnas. Esto hará que su DAX sea mucho más simple.
olimilo
En respuesta a Phil_Seamark
¡Hola @GilbertQ y @Phil_Seamark!
Esta es la tabla de fechas:
Fecha | Día de la semana | es fin de semana | IsWeekendType2 | IsWeekendType3 | IsWeekendType4 | IsWeekendType5 | IsWeekendType6 | IsWeekendType7 |
1/1/2013 | martes | FALSO | FALSO | FALSO | FALSO | FALSO | FALSO | FALSO |
2/1/2013 | miércoles | FALSO | FALSO | FALSO | FALSO | FALSO | FALSO | FALSO |
3/1/2013 | jueves | FALSO | FALSO | CIERTO | FALSO | FALSO | FALSO | FALSO |
4/1/2013 | viernes | FALSO | CIERTO | CIERTO | CIERTO | FALSO | CIERTO | FALSO |
05/01/2013 | sábado | CIERTO | CIERTO | FALSO | FALSO | FALSO | FALSO | CIERTO |
06/01/2013 | domingo | CIERTO | FALSO | FALSO | CIERTO | CIERTO | FALSO | FALSO |
7/1/2013 | lunes | FALSO | FALSO | FALSO | FALSO | FALSO | FALSO | FALSO |
8/1/2013 | martes | FALSO | FALSO | FALSO | FALSO | FALSO | FALSO | FALSO |
9/1/2013 | miércoles | FALSO | FALSO | FALSO | FALSO | FALSO | FALSO | FALSO |
10/01/2013 | jueves | FALSO | FALSO | CIERTO | FALSO | FALSO | FALSO | FALSO |
De hecho, traté de usar una estructura de datos más simple, pero he tenido dificultades para manejar las fechas y los tipos de fin de semana (aquí y aquí). He intentado torcer y girar la estructura de datos, pero esto es lo mejor que pude hacer (y ha sido el que se demuestra con mayor frecuencia como ejemplo al contar rangos de fechas).
Eric_Zhang
En respuesta a olimilo
@olimilo escribió:
¡Hola @GilbertQ y @Phil_Seamark!
Esta es la tabla de fechas:
Fecha Día de la semana es fin de semana IsWeekendType2 IsWeekendType3 IsWeekendType4 IsWeekendType5 IsWeekendType6 IsWeekendType7 1/1/2013 martes FALSO FALSO FALSO FALSO FALSO FALSO FALSO 2/1/2013 miércoles FALSO FALSO FALSO FALSO FALSO FALSO FALSO 3/1/2013 jueves FALSO FALSO CIERTO FALSO FALSO FALSO FALSO 4/1/2013 viernes FALSO CIERTO CIERTO CIERTO FALSO CIERTO FALSO 05/01/2013 sábado CIERTO CIERTO FALSO FALSO FALSO FALSO CIERTO 06/01/2013 domingo CIERTO FALSO FALSO CIERTO CIERTO FALSO FALSO 7/1/2013 lunes FALSO FALSO FALSO FALSO FALSO FALSO FALSO 8/1/2013 martes FALSO FALSO FALSO FALSO FALSO FALSO FALSO 9/1/2013 miércoles FALSO FALSO FALSO FALSO FALSO FALSO FALSO 10/01/2013 jueves FALSO FALSO CIERTO FALSO FALSO FALSO FALSO De hecho, traté de usar una estructura de datos más simple, pero he tenido dificultades para manejar las fechas y los tipos de fin de semana (aquí y aquí). He intentado torcer y girar la estructura de datos, pero esto es lo mejor que pude hacer (y ha sido el que se demuestra con mayor frecuencia como ejemplo al contar rangos de fechas).
@olimilo
Creo que es posible que no necesites esos tipos de fin de semana. ¿Qué tal una medida como la siguiente? Es posible que necesite una tabla de búsqueda adicional para países y números de días de fin de semana (1-7).
Days Elapsed = -- Days elapsed since the End Date up to the current date VAR weekendday1 = WEEKDAY(TODAY()-1) //lookup weekend number from the lookup table VAR weekendday2= Weekday(Today()) VAR TAT = COUNTROWS( FILTER( ALL(Dates), Dates[Date] >= 'Active Projects'[CompleteByEndDate] && Dates[Date] <= TODAY() && WeekDay(Dates[Date])<>weekendday1 && WeekDay(Dates[Date])<>weekendday2 ) RETURN SWITCH( TRUE(), 'Active Projects'[CompleteByEndDate] < TODAY(), TAT - 'Active Projects'[Holidays (Elapsed)], 'Active Projects'[CompleteByEndDate] > TODAY(), -1 * TAT - 'Active Projects'[Holidays (Elapsed)] )
gilbertq
Hola @olimilo
¿Puedo preguntar qué cambia entre cada fecha?[IsWeekendTypeX]?