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

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.

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
Microsoft Fabric Learn Together

Microsoft Fabric Learn Together

Covering the world! 9:00-10:30 AM Sydney, 4:00-5:30 PM CET (Paris/Berlin), 7:00-8:30 PM Mexico City

PBI_APRIL_CAROUSEL1

Power BI Monthly Update - April 2024

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

April Fabric Community Update

Fabric Community Update - April 2024

Find out what's new and trending in the Fabric Community.