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
Anonymous
Not applicable

Quiero el número de horas entre la fecha de inicio y la fecha de finalización

Hola

Tengo debajo de los datos, quiero calcular la avilibalidad de horas por mes.

Capture11.JPG

Eg:

para el usuario A , queremos que el resultado como se muestra a continuación, se traza en el chat de la barra.

Capture22.JPG

Probado con funciones de fecha, pero todavía no es capaz de encontrar la solutio.

1 ACCEPTED SOLUTION
v-rzhou-msft
Community Support
Community Support

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.

1.png

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.

View solution in original post

3 REPLIES 3
v-rzhou-msft
Community Support
Community Support

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

v-rzhou-msft
Community Support
Community Support

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.

1.png

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/



* Matt is an 8 times Microsoft MVP (Power BI) and author of the Power BI Book Supercharge Power BI.

Helpful resources

Announcements
PBI_APRIL_CAROUSEL1

Power BI Monthly Update - April 2024

Check out the April 2024 Power BI update to learn about new features.