Register now to learn Fabric in free live sessions led by the best Microsoft experts. From Apr 16 to May 9, in English and Spanish.
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/
Covering the world! 9:00-10:30 AM Sydney, 4:00-5:30 PM CET (Paris/Berlin), 7:00-8:30 PM Mexico City
Check out the April 2024 Power BI update to learn about new features.
User | Count |
---|---|
2 | |
1 | |
1 | |
1 | |
1 |
User | Count |
---|---|
2 | |
2 | |
2 | |
2 | |
1 |