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

Necesita ayuda en DAX para calcular la "Hora de finalización" en función de los escenarios

Hola a todos

Necesito ayuda para calcular el tiempo trabajado por el equipo de soporte de Nivel 1.

Conjunto de datos de ejemplo:

Tabla 1 que muestra el tiempo de seguimiento de los equipos involucrados para el ID de incidente - 001

Identificación de incidentePropietarioEquipoIncidente registradoHora de inicioHora de finalización
001zzzzzQ18/7/2020 15:008/9/2020 16:458/9/2020 17:00
001AbcL18/7/2020 15:008/9/2020 17:008/9/2020 17:50
001AaaaaE18/7/2020 15:008/9/2020 17:508/9/2020 18:00
001XyzL28/7/2020 15:008/9/2020 18:008/9/2020 19:00
001AbcL18/7/2020 15:008/9/2020 19:008/9/2020 19:10
001AaaaaE18/7/2020 15:008/9/2020 19:108/9/2020 20:00

Donde -

L1Soporte de Nivel 1
Q1Cola intermedia
E1Cola de escalada
L2Soporte de Nivel 2

Así que el objetivo es

1) Calcule el "END TIME" cuando el incidente se haya transferido de L1 a E1 o L2.

2) Cree una columna calculada para días entre "INCIDENT LOGGED" y "END TIME".

Salida esperada:

Identificación de incidentePropietarioEquipoIncidente registradoHora de inicioHora de finalizaciónSalida esperada
001zzzzzQ18/7/2020 15:008/9/2020 16:458/9/2020 17:00Blanco
001AbcL18/7/2020 15:008/9/2020 17:008/9/2020 17:502 días
001AaaaaE18/7/2020 15:008/9/2020 17:508/9/2020 18:00Blanco
001XyzL28/7/2020 15:008/9/2020 18:008/9/2020 19:00Blanco
001AbcL18/7/2020 15:008/9/2020 19:008/9/2020 19:10Blanco
001AaaaaE18/7/2020 15:008/9/2020 19:108/9/2020 20:00Blanco

Ahora el desafío aquí es que el ciclo de vida del incidente puede ser de diferentes tipos como se indica a continuación -

12345678
L1L1Q1Q1Q1Q1Q1Q1
Q1L1L1L1L1L1L1
E1L2Q1E1E1
L1L2L2
L1
E1

Por favor, ayude a desarrollar una solución robusta para manejar todo tipo de escenarios.

@amitchandak ,@Greg_Deckler - Por favor, ayuda.

2 ACCEPTED SOLUTIONS
v-rzhou-msft
Community Support
Community Support

Hola @raimon

Construyo una tabla como la suya y agredo una columna de índice en Power Query Editor para realizar una prueba.

1.png

A partir de su declaración creo que desea calcular las diferencias entre el incidente registrado y la hora de finalización por día, si el equipo está cambiando de L1 a E1 o L2. Pero su ejemplo me confunde, la salida esperada en el cuadro rojo debe ser 2 en lugar de en blanco. Si hay algo malo en mi entendimiento, por favor dígamelo.

2.png

Mi medida:

Measure = 
VAR _Team =
    MAX ( 'Table'[Team] )
VAR _Datediff =
    DATEDIFF ( MAX ( 'Table'[Incident Logged ] ), MAX ( 'Table'[End Time] ), DAY )
VAR _NextTeam =
    CALCULATE (
        MAX ( 'Table'[Team] ),
        FILTER ( ALL ( 'Table' ), 'Table'[Index] = MAX ( 'Table'[Index] ) + 1 )
    )
RETURN
    IF (
        AND ( _Team = "L1", OR ( _NextTeam = "E1", _NextTeam = "L2" ) ),
        _Datediff,
        BLANK ()
    )

Resultado:

3.png

Si esta respuesta todavía no pudo ayudarle a resolver su problema, por favor dígame más detalles como su lógica de cálculo y por qué el L1 en el cuadro rojo no está calificado. O puede compartir su archivo pbix conmigo por su OneDrive para la Empresa.

Puede descargar el archivo pbix desde este enlace: Necesita ayuda en DAX para calcular la "Hora de finalización" en función de los escenarios

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

mahoneypat
Employee
Employee

Pruebe estas dos expresiones de columna, reemplazando Incidentes por el nombre real de la tabla.

Overall End Time =
VAR firstE1L2 =
    CALCULATE (
        MIN ( Incidents[Start Time] ),
        ALLEXCEPT ( Incidents, Incidents[Incident Id] ),
        Incidents[Team] IN { "E1", "L2" }
    )
VAR lastL1 =
    CALCULATE (
        MAX ( Incidents[End Time] ),
        ALLEXCEPT ( Incidents, Incidents[Incident Id] ),
        Incidents[Team] = "L1",
        Incidents[End Time] <= firstE1L2
    )
VAR minL1 =
    CALCULATE (
        MIN ( Incidents[Start Time] ),
        ALLEXCEPT ( Incidents, Incidents[Incident Id] ),
        Incidents[Team] = "L1"
    )
RETURN
    IF ( AND ( Incidents[Start Time] = minL1, Incidents[Team] = "L1" ), lastL1 )


Days = if(not(ISBLANK(Incidents[Overall End Time])), Incidents[Overall End Time] - Incidents[Incident Logged ])

Si esto funciona para usted, márquelo como la solución. Los elogios también son apreciados. Por favor, avísame si no.

saludos

palmadita





Did I answer your question? Mark my post as a solution! Kudos are also appreciated!

To learn more about Power BI, follow me on Twitter or subscribe on YouTube.


@mahoneypa HoosierBI on YouTube


View solution in original post

9 REPLIES 9
Syndicate_Admin
Administrator
Administrator

Gracias a todos por la ayuda, todavía estoy probando la solución para todos los casos de uso que tenemos. Voy a actualizar pronto.

Hola @raimon

¿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

Si este post ayuda,entonces considere Aceptarlo como la solución para ayudar a los otros miembros a encontrarlo más rápidamente.

mahoneypat
Employee
Employee

Pruebe estas dos expresiones de columna, reemplazando Incidentes por el nombre real de la tabla.

Overall End Time =
VAR firstE1L2 =
    CALCULATE (
        MIN ( Incidents[Start Time] ),
        ALLEXCEPT ( Incidents, Incidents[Incident Id] ),
        Incidents[Team] IN { "E1", "L2" }
    )
VAR lastL1 =
    CALCULATE (
        MAX ( Incidents[End Time] ),
        ALLEXCEPT ( Incidents, Incidents[Incident Id] ),
        Incidents[Team] = "L1",
        Incidents[End Time] <= firstE1L2
    )
VAR minL1 =
    CALCULATE (
        MIN ( Incidents[Start Time] ),
        ALLEXCEPT ( Incidents, Incidents[Incident Id] ),
        Incidents[Team] = "L1"
    )
RETURN
    IF ( AND ( Incidents[Start Time] = minL1, Incidents[Team] = "L1" ), lastL1 )


Days = if(not(ISBLANK(Incidents[Overall End Time])), Incidents[Overall End Time] - Incidents[Incident Logged ])

Si esto funciona para usted, márquelo como la solución. Los elogios también son apreciados. Por favor, avísame si no.

saludos

palmadita





Did I answer your question? Mark my post as a solution! Kudos are also appreciated!

To learn more about Power BI, follow me on Twitter or subscribe on YouTube.


@mahoneypa HoosierBI on YouTube


Anonymous
Not applicable

Hola Pat,

Gracias por la solución, me ayudó en mayor medida. Para que encaje en todos los escenarios inferiores -

12345678
L1L1Q1Q1Q1Q1Q1Q1
Q1L1L1L1L1L1L1
E1L2Q1E1E1
L1L2L2
L1
E1

He modificado el cálculo como -

Tiempo de finalización general ( End Time)
VAR firstE1L2 ?
CALCULAR (
MIN ( Incidentes[Hora de inicio] ),
ALLEXCEPT ( Incidentes, Incidentes[Id de Incidente] ),
Incidentes[Equipo] EN "E1", "L2"
)
VAR lastL1 ?
CALCULAR (
MAX ( Incidentes[Hora de finalización] ),
ALLEXCEPT ( Incidentes, Incidentes[Id de Incidente] ),
Incidentes[Equipo] á "L1",
Incidentes[Hora de finalización] <- firstE1L2
)

VAR maxL1 ?
CALCULAR (
MAX ( Incidentes[Hora de finalización] ),
ALLEXCEPT ( Incidentes, Incidentes[Id de Incidente] ),
Incidentes[Equipo] á "L1"
)

var endTime á if(ISBLANK(firstE1L2),maxL1,lastL1)

devolución
IF ( AND ( Incidentes[Hora de finalización] - endTime, Incidents[Team] á "L1" ), endTime )

v-rzhou-msft
Community Support
Community Support

Hola @raimon

Construyo una tabla como la suya y agredo una columna de índice en Power Query Editor para realizar una prueba.

1.png

A partir de su declaración creo que desea calcular las diferencias entre el incidente registrado y la hora de finalización por día, si el equipo está cambiando de L1 a E1 o L2. Pero su ejemplo me confunde, la salida esperada en el cuadro rojo debe ser 2 en lugar de en blanco. Si hay algo malo en mi entendimiento, por favor dígamelo.

2.png

Mi medida:

Measure = 
VAR _Team =
    MAX ( 'Table'[Team] )
VAR _Datediff =
    DATEDIFF ( MAX ( 'Table'[Incident Logged ] ), MAX ( 'Table'[End Time] ), DAY )
VAR _NextTeam =
    CALCULATE (
        MAX ( 'Table'[Team] ),
        FILTER ( ALL ( 'Table' ), 'Table'[Index] = MAX ( 'Table'[Index] ) + 1 )
    )
RETURN
    IF (
        AND ( _Team = "L1", OR ( _NextTeam = "E1", _NextTeam = "L2" ) ),
        _Datediff,
        BLANK ()
    )

Resultado:

3.png

Si esta respuesta todavía no pudo ayudarle a resolver su problema, por favor dígame más detalles como su lógica de cálculo y por qué el L1 en el cuadro rojo no está calificado. O puede compartir su archivo pbix conmigo por su OneDrive para la Empresa.

Puede descargar el archivo pbix desde este enlace: Necesita ayuda en DAX para calcular la "Hora de finalización" en función de los escenarios

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.

Greg_Deckler
Super User
Super User

@raimon - Si entiendo las cosas correctamente, está buscando la diferencia de fecha/hora entre filas basada en criterios específicos. Vea mi artículo sobre el tiempo medio entre fallas (MTBF) que utiliza ANTES: http://community.powerbi.com/t5/Community-Blog/Mean-Time-Between-Failure-MTBF-and-Power-BI/ba-p/3395...


@ me in replies or I'll lose your thread!!!
Instead of a Kudo, please vote for this idea
Become an expert!: Enterprise DNA
External Tools: MSHGQM
YouTube Channel!: Microsoft Hates Greg
Latest book!:
The Definitive Guide to Power Query (M)

DAX is easy, CALCULATE makes DAX hard...
Anonymous
Not applicable

Gracias @Greg_Deckler por su respuesta. Estoy mirando el post que ha redirigido. Te hablaré pronto de esto.

mahoneypat
Employee
Employee

Los datos de ejemplo solo tienen filas para el incidente 1, pero la salida esperada muestra en blanco para el incidente 1. ¿Ese incidente cumple con los criterios para ir de L1 a E1 o L2? ¿Puede resaltar/especificar los valores que se deben utilizar para obtener la columna propuesta?

saludos

palmadita





Did I answer your question? Mark my post as a solution! Kudos are also appreciated!

To learn more about Power BI, follow me on Twitter or subscribe on YouTube.


@mahoneypa HoosierBI on YouTube


Anonymous
Not applicable

@mahoneypat - Gracias por resaltar, cometí un error al publicar la salida esperada. Todas las filas deben ser sólo para "001". He editado la publicación.

En el ejemplo, usted ve que se remite de L1 al E1, así que el "TIEMPO DE FIN" correspondiente al L1 debe ser considerado.

001AbcL1Incidente registrado - 8/7/2020 15:008/9/2020 17:00Hora de finalización - 8/9/2020 17:502 días

La razón por la que debe volver en blanco para otras filas es informe debe reflejar la eficiencia L1. Y mientras se calcula el promedio, no se tiene en cuenta el espacio en blanco.

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.