Earn a 50% discount on the DP-600 certification exam by completing the Fabric 30 Days to Learn It challenge.
Hola
Tengo debajo de los datos, quiero calcular la avilibalidad de horas por mes.
Eg:
para el usuario A , queremos que el resultado como se muestra a continuación, se traza en el chat de la barra.
Probado con funciones de fecha, pero todavía no es capaz de encontrar la solutio.
Solved! Go to Solution.
Hola @anilKorlimarla
Puede lograr su objetivo por medida o tabla calculada.
Tabla calculada:
C_DATE =
VAR _T =
GENERATE (
ADDCOLUMNS (
CALENDARAUTO (),
"Year", YEAR ( [Date] ),
"Month", MONTH ( [Date] ),
"Day", DAY ( [Date] ),
"MonthName",
FORMAT ( [Date], "MMM" ) & "-"
& RIGHT ( YEAR ( [Date] ), 2 ),
"DayName", FORMAT ( [Date], "DDDD" )
),
VALUES ( 'Table'[User] )
)
RETURN
VAR _T2 =
ADDCOLUMNS (
_T,
"Start Date",
CALCULATE (
MAX ( 'Table'[Start date] ),
FILTER ( 'Table', 'Table'[User] = EARLIER ( [User] ) )
),
"End Date",
CALCULATE (
MAX ( 'Table'[End date] ),
FILTER ( 'Table', 'Table'[User] = EARLIER ( [User] ) )
),
"Rank",
RANKX ( _T, [Year] * 100 + [Month],, ASC ),
"Avilabilty Hours perday",
CALCULATE (
SUM ( 'Table'[Avilabilty hours per day] ),
FILTER ( 'Table', 'Table'[User] = EARLIER ( [User] ) )
)
)
RETURN
ADDCOLUMNS (
_T2,
"Count",
IF (
[Date] >= [Start Date]
&& [Date] <= [End Date]
&& NOT ( [DayName] IN { "Saturday", "Sunday" } ),
1,
BLANK ()
) * [Avilabilty Hours perday]
)
Medida:
También necesita una tabla de calendario:
M_DATE =
GENERATE (
ADDCOLUMNS (
CALENDARAUTO (),
"Year", YEAR ( [Date] ),
"Month", MONTH ( [Date] ),
"Day", DAY ( [Date] ),
"MonthName",
FORMAT ( [Date], "MMM" ) & "-"
& RIGHT ( YEAR ( [Date] ), 2 ),
"DayName", FORMAT ( [Date], "DDDD" )
),
VALUES ( 'Table'[User] )
)
Count =
VAR _Stratdate = CALCULATE(MAX('Table'[Start date]),FILTER(ALL('Table'),'Table'[User]=MAX('M_DATE'[User])))
VAR _Enddate = CALCULATE(MAX('Table'[End date]),FILTER(ALL('Table'),'Table'[User]=MAX('M_DATE'[User])))
VAR _Count = IF(MAX('M_DATE'[Date])<=_Enddate&&MAX('M_DATE'[Date])>=_Stratdate&&NOT(MAX('M_DATE'[DayName]) IN {"Saturday","Sunday"}),1,BLANK())
Return
_Count
Working hours =
Var _Hour = CALCULATE(SUM('Table'[Avilabilty hours per day]),FILTER('Table','Table'[User]=MAX('M_DATE'[User])))
Return
SUMX(FILTER(ALL('M_DATE'),'M_DATE'[User]=MAX('M_DATE'[User])&&'M_DATE'[MonthName]=MAX('M_DATE'[MonthName])), [Count]*_Hour)
El resultado está abajo, izquierda es Medir y derecha es una tabla calculada.
Puede descargar el archivo pbix desde este enlace: Quiero el número de horas entre la fecha de inicio y la fecha de finalización
Saludos
Rico Zhou
Si este post ayuda,entonces considere Aceptarlo como la solución para ayudar a los otros miembros a encontrarlo más rápidamente.
Hola @anilKorlimarla
¿Podría decirme si su problema ha sido resuelto? Si es así, acédi es la solución. Más gente se beneficiará de ello. O todavía está confundido al respecto, por favor proporcione más detalles sobre su tabla y su problema o compártame con su archivo pbix de su Onedrive for Business.
Saludos
Rico Zhou
Hola @anilKorlimarla
Puede lograr su objetivo por medida o tabla calculada.
Tabla calculada:
C_DATE =
VAR _T =
GENERATE (
ADDCOLUMNS (
CALENDARAUTO (),
"Year", YEAR ( [Date] ),
"Month", MONTH ( [Date] ),
"Day", DAY ( [Date] ),
"MonthName",
FORMAT ( [Date], "MMM" ) & "-"
& RIGHT ( YEAR ( [Date] ), 2 ),
"DayName", FORMAT ( [Date], "DDDD" )
),
VALUES ( 'Table'[User] )
)
RETURN
VAR _T2 =
ADDCOLUMNS (
_T,
"Start Date",
CALCULATE (
MAX ( 'Table'[Start date] ),
FILTER ( 'Table', 'Table'[User] = EARLIER ( [User] ) )
),
"End Date",
CALCULATE (
MAX ( 'Table'[End date] ),
FILTER ( 'Table', 'Table'[User] = EARLIER ( [User] ) )
),
"Rank",
RANKX ( _T, [Year] * 100 + [Month],, ASC ),
"Avilabilty Hours perday",
CALCULATE (
SUM ( 'Table'[Avilabilty hours per day] ),
FILTER ( 'Table', 'Table'[User] = EARLIER ( [User] ) )
)
)
RETURN
ADDCOLUMNS (
_T2,
"Count",
IF (
[Date] >= [Start Date]
&& [Date] <= [End Date]
&& NOT ( [DayName] IN { "Saturday", "Sunday" } ),
1,
BLANK ()
) * [Avilabilty Hours perday]
)
Medida:
También necesita una tabla de calendario:
M_DATE =
GENERATE (
ADDCOLUMNS (
CALENDARAUTO (),
"Year", YEAR ( [Date] ),
"Month", MONTH ( [Date] ),
"Day", DAY ( [Date] ),
"MonthName",
FORMAT ( [Date], "MMM" ) & "-"
& RIGHT ( YEAR ( [Date] ), 2 ),
"DayName", FORMAT ( [Date], "DDDD" )
),
VALUES ( 'Table'[User] )
)
Count =
VAR _Stratdate = CALCULATE(MAX('Table'[Start date]),FILTER(ALL('Table'),'Table'[User]=MAX('M_DATE'[User])))
VAR _Enddate = CALCULATE(MAX('Table'[End date]),FILTER(ALL('Table'),'Table'[User]=MAX('M_DATE'[User])))
VAR _Count = IF(MAX('M_DATE'[Date])<=_Enddate&&MAX('M_DATE'[Date])>=_Stratdate&&NOT(MAX('M_DATE'[DayName]) IN {"Saturday","Sunday"}),1,BLANK())
Return
_Count
Working hours =
Var _Hour = CALCULATE(SUM('Table'[Avilabilty hours per day]),FILTER('Table','Table'[User]=MAX('M_DATE'[User])))
Return
SUMX(FILTER(ALL('M_DATE'),'M_DATE'[User]=MAX('M_DATE'[User])&&'M_DATE'[MonthName]=MAX('M_DATE'[MonthName])), [Count]*_Hour)
El resultado está abajo, izquierda es Medir y derecha es una tabla calculada.
Puede descargar el archivo pbix desde este enlace: Quiero el número de horas entre la fecha de inicio y la fecha de finalización
Saludos
Rico Zhou
Si este post ayuda,entonces considere Aceptarlo como la solución para ayudar a los otros miembros a encontrarlo más rápidamente.
Lee mi artículo aquí. https://exceleratorbi.com.au/calculating-elapses-business-hours-using-dax-part-2/