Adición de una medida de tiempo en estado al informe de Power BI

Azure DevOps Services | Azure DevOps Server 2022 | Azure DevOps Server 2019

El tiempo que un elemento de trabajo pasa en un estado de flujo de trabajo específico o en una serie de estados es un aspecto importante para comprender la eficacia. Los widgets Cycle Time y Lead Time Analytics proporcionan algunas medidas de tiempo en estado. Sin embargo, es posible que estos widgets no tengan el nivel de detalle que desee.

En este artículo se proporcionan recetas que usan expresiones de análisis de datos (DAX) para evaluar el tiempo invertido por los elementos de trabajo en una combinación de estados. En concreto, aprenderá a agregar las siguientes columnas de medida y calculadas a los informes de Power BI y usarlas para generar varios gráficos de tendencias. Todos los campos son columnas calculadas excepto la primera enumerada.

Count Descripción
Recuento de elementos de trabajo (medida) Calcula el recuento de elementos de trabajo distintos en función de la entrada del último día para el elemento de trabajo.
Criterio de ordenación de estado Agrega una columna que se va a usar para ordenar estados de flujo de trabajo en función de la secuencia de categorías de estado .
Fecha anterior Agrega una columna que calcula la fecha anterior en función de la columna Fecha
Diferencias de fecha en días Agrega una columna que calcula el número de días entre las columnas Date y Date Previous .
Es el último día en estado Agrega una columna que determina si el valor date es el último día en que el elemento de trabajo estaba en un estado
Tiempo de estado en días Agrega una columna que calcula el número de días que pasó el elemento de trabajo en cada estado.
Estado anterior Agrega una columna que identifica el estado anterior para cada fila de la tabla de datos.
Estado cambiado Agrega una columna que determina la fecha en que un elemento de trabajo ha pasado de un estado a otro
Flujo de estado Agrega una columna que muestra el flujo de estado como un elemento de trabajo realiza la transición de un estado a otro.
Nº de cambios de estado Agrega una columna que calcula el número de veces que un elemento de trabajo ha pasado de un estado a otro
Recuento de cambios de estado: primer completado Agrega una columna que determina el número de veces que un elemento de trabajo pasa al estado Completado por primera vez. En otras palabras, cuando se mueve de cualquier otro estado al estado Completado.
Recuento de cambios de estado: última propuesta Agrega una columna que determina si un elemento de trabajo estaba en un estado Propuesto anteriormente después de pasar a un estado posterior.
Tiempo de reinicio de estado en días Agrega una columna que calcula los días que un elemento de trabajo ha invertido en un estado de reinicio.
Tiempo de reproceso de estado en días Agrega una columna que calcula los días que pasa un elemento de trabajo en un estado distinto de Completado.

Importante

  • Al agregar una columna o medida calculada según los ejemplos que se muestran en este artículo, reemplace View Name por el nombre de la tabla de la vista Analytics o la tabla de datos. Por ejemplo, reemplace View Name por Active Bugs.
    Captura de pantalla de la pestaña Herramientas de tabla de Power BI, Nombre de la tabla de datos.
  • Analytics no admite revisiones dentro del día. Estos ejemplos tienen la mayor precisión al usar un intervalo diario al hacer referencia a una vista de Analytics.
  • Los cálculos o omiten todas las revisiones dentro del día o dentro del período (semanal o mensual). Esto puede dar lugar a resultados inesperados para escenarios específicos, como un elemento de trabajo que no muestra ninguna hora "En curso" cuando un elemento de trabajo es "En curso" durante menos de un día.
  • Las agregaciones predeterminadas de Power BI se usan siempre que sea posible en lugar de crear medidas.
  • Algunos cálculos incluyen +0 para asegurarse de que se incluye un valor numérico para cada fila en lugar de BLANK. Es posible que tenga que revisar algunas de las definiciones de columna calculadas en función de los estados de flujo de trabajo usados por el proyecto. Por ejemplo, si el proyecto usa New, Active y Closed en lugar de Propuesto, En curso y Completado.

Requisitos previos

  • Para ver los datos de Analytics y consultar el servicio, debe ser miembro de un proyecto con acceso básico o superior. De forma predeterminada, a todos los miembros del proyecto se les conceden permisos para consultar Analytics y definir vistas de Analytics.
  • Para obtener información sobre otros requisitos previos relacionados con la habilitación de servicios y características y las actividades generales de seguimiento de datos, consulte Permisos y requisitos previos para acceder a Analytics.

Nota:

Para ejercer todas las medidas de tiempo en estado descritas en este artículo, asegúrese de incluir los siguientes campos en las vistas de Analytics, Power Query o consulta de OData: Fecha de creación y categoría de estado, además de los campos predeterminados: Ruta de acceso del área, Ruta de acceso asignada, Ruta de acceso de iteración, Estado, Título, Id. de elemento de trabajo y Tipo de elemento de trabajo.

Además, considere la posibilidad de usar una vista de Análisis basada en una granularidad diaria . Los ejemplos de este artículo se basan en la vista Análisis de errores activos definida en Creación de un informe de errores activos en Power BI basado en una vista de Análisis personalizada, con la excepción de que se seleccionan 60 días de historial y granularidad diaria . Determine también si desea revisar los elementos de trabajo completados o cerrados.

Agregar una medida de recuento de elementos de trabajo

Para simplificar la generación rápida de informes, hemos diseñado vistas de Analytics para trabajar con agregaciones predeterminadas en Power BI. Para ilustrar la diferencia entre una agregación predeterminada y una medida, empezamos con una medida de recuento de elementos de trabajo simple.

  1. Cargue la vista de Analytics en Power BI Desktop. Para obtener más información, consulte Conexión con Power BI Data Connector, Conexión a una vista de Analytics.

  2. Seleccione la tabla de datos y, a continuación, en la pestaña Herramientas de tabla, sección Cálculos de la cinta de opciones, elija Nueva medida.

    Captura de pantalla de la pestaña Herramientas de tabla de Power BI, Nueva medida.

  3. Reemplace el texto predeterminado por el código siguiente y, a continuación, seleccione la marca de verificación.

    Work Items Count=CALCULATE(COUNTROWS ('View Name'),LASTDATE ('View Name'[Date]))
    

    La medida Recuento de elementos de trabajo usa las CALCULATEfunciones DAX , COUNTROWSy LASTDATE , que se describen con más detalle más adelante en este artículo.

    Nota:

    No olvide reemplazar View Name por el nombre de la tabla de la vista Analytics. Por ejemplo, aquí reemplazamos View Name por errores activos.

    Captura de pantalla de la pestaña Herramientas de medida de Power BI, Sintaxis de recuento de elementos de trabajo.

¿Cómo difiere una medida de una columna calculada?

Una medida siempre evalúa toda la tabla en la que una columna calculada es específica de una sola fila. Para obtener más información, vea Columnas calculadas y medidas en DAX.

Compare la medida Recuento de elementos de trabajo con la agregación de recuento predeterminada en función del identificador de elemento de trabajo. La siguiente imagen se crea agregando el objeto visual Tarjeta y la medida Recuento de elementos de trabajo a la primera tarjeta y la propiedad Id. de elemento de trabajo a la segunda tarjeta.

Captura de pantalla de la página del informe de Power BI, dos tarjetas que muestran la medida Recuento de elementos de trabajo y la propiedad Id. de elemento de trabajo.

Para obtener el recuento correcto mediante una agregación predeterminada, aplique el filtro Is Current equals 'True'. Este patrón de aplicación de filtros a una agregación predeterminada es la base de muchos de los ejemplos proporcionados en este artículo.

Captura de pantalla de la página del informe de Power BI, recuento de identificadores de elemento de trabajo filtrado.

Agregar criterio de ordenación de estado

De forma predeterminada, Power BI muestra los estados ordenados alfabéticamente en una visualización. Puede ser engañoso cuando desea visualizar el tiempo en estado y Propuesto aparece después de En curso. Los pasos siguientes ayudan a resolver este problema.

  1. Compruebe que el campo Categoría de estado está incluido en la vista Analytics. Este campo se incluye en todas las vistas compartidas predeterminadas.

  2. Seleccione la tabla de datos y, a continuación, en la pestaña Herramientas de tabla, sección Cálculos de la cinta de opciones, elija Nueva columna.

    Captura de pantalla de la pestaña Herramientas de tabla de Power BI, Nueva columna.

  3. Reemplace el texto predeterminado por el código siguiente y, a continuación, seleccione la marca de verificación.

    State Sort Order =  
    SWITCH (  
        'View Name'[State Category],  
        "Proposed", 1,  
        "InProgress", 2,  
        "Resolved", 3,  
        4  
    )  
    

    Observe el ejemplo siguiente:

    Captura de pantalla de la pestaña Herramientas de tabla de Power BI, entrada de categoría de estado.

    Nota:

    Es posible que tenga que revisar la definición si necesita una mayor granularidad que la que proporciona la categoría de estado . State Category proporciona una ordenación correcta en todos los tipos de elementos de trabajo, independientemente de las personalizaciones de estado .

  4. Abra la vista Datos y seleccione la columna Estado .

  5. En la pestaña Herramientas de columna , elija Ordenar por columna y, a continuación, seleccione el campo Criterio de ordenación de estado .

    Captura de pantalla de la pestaña Herramientas de columna de Power BI, Selección de ordenar por columna.

Agregar fecha anterior

El siguiente paso para calcular el tiempo en estado requiere asignar el intervalo anterior (día, semana, mes) para cada fila de datos del conjunto de datos. Es un cálculo sencillo mediante una columna calculada. Normalmente, definiría esta columna como se muestra.

Date Previous  = 
PREVIOUSDAY ( 'View Name'[Date] )

Sin embargo, este enfoque tiene dos problemas principales:

  • Solo funciona durante períodos diarios.
  • No controla las brechas en los datos. Por ejemplo, si un elemento de trabajo se mueve entre proyectos.

Para resolver estos problemas, la columna calculada debe encontrar el día anterior examinando el campo Fecha .

Para agregar la columna Fecha anterior calculada, en la pestaña Herramientas de tabla , elija Nueva columna y, a continuación, reemplace el texto predeterminado por el código siguiente y seleccione la marca de verificación.

Date Previous =
CALCULATE (
    MAX ( 'View Name'[Date] ),
        ALLEXCEPT ( 'View Name', 'View Name'[Work Item Id] ),
        'View Name'[Date] < EARLIER ( 'View Name'[Date] )
)

La columna calculada Date Previous usa tres funciones DAX, MAX, ALLEXCEPTy EARLIER, que se describen con más detalle más adelante en este artículo. Dado que la columna se calcula, se ejecuta para cada fila de la tabla y cada vez que se ejecuta, tiene el contexto de esa fila específica.

Captura de pantalla del gráfico de tablas de Power BI y la pestaña Visualización de fecha y fecha anterior.

Sugerencia

En el menú contextual de los campos Fecha y Fecha anterior , elija Fecha (en lugar de Jerarquía de fechas) para ver una sola fecha para estos campos.

Agregar diferencias de fecha en días

Date Previous calcula la diferencia entre la fecha anterior y la actual para cada fila. Con La diferencia de fecha en días, calculamos un recuento de días entre cada uno de esos períodos. Para la mayoría de las filas de una instantánea diaria, el valor es igual a 1. Sin embargo, para muchos elementos de trabajo que tienen lagunas en el conjunto de datos, el valor es mayor que 1.

Importante

Requiere que haya agregado la columna Fecha anterior calculada a la tabla.

Es importante tener en cuenta el primer día del conjunto de datos donde Date Previous está en blanco. En este ejemplo, asignamos a esa fila un valor estándar de 1 para mantener el cálculo coherente.

En la pestaña Modelado , elija Nueva columna y, a continuación, reemplace el texto predeterminado por el código siguiente y seleccione la marca de verificación.

Date Diff in Days =
IF (
    ISBLANK ( 'View Name'[Date Previous] ),
    1,
    DATEDIFF (
        'View Name'[Date Previous],
        'View Name'[Date],
        DAY
    )
)

Esta columna calculada usa las ISBLANK funciones y DATEDIFF DAX que se describen más adelante en este artículo.

Agregar es el último día en estado

En este paso siguiente, calculamos si una fila determinada representa el último día que un elemento de trabajo específico estaba en un estado. Admite agregaciones predeterminadas en Power BI que agregamos en la sección siguiente, donde agregamos la columna Tiempo de estado en días .

En la pestaña Modelado , elija Nueva columna y, a continuación, reemplace el texto predeterminado por el código siguiente y seleccione la marca de verificación.

Is Last Day in State = 
ISBLANK (CALCULATE (
    COUNTROWS ( 'View Name' ),
        ALLEXCEPT ( 'View Name', 'View Name'[Work Item Id] ),
        'View Name'[Date] > EARLIER ( 'View Name'[Date] ),
        'View Name'[State] = EARLIER ( 'View Name'[State] )
))

Agregar tiempo de estado en días

El tiempo que un elemento de trabajo ha invertido en un estado específico ahora se puede calcular sumando la diferencia de fecha en días para cada elemento de trabajo. Este cálculo incluye todo el tiempo invertido en un estado específico incluso si cambió entre estados varias veces. Es posible evaluar cada fila como una tendencia mediante Date o la información más reciente mediante Is Last Day In State.

Importante

Requiere que haya agregado las columnas calculadas Date Diff in Days y Is Last Day in State en la tabla.

En la pestaña Modelado , elija Nueva columna y, a continuación, reemplace el texto predeterminado por el código siguiente y seleccione la marca de verificación.

State Time in Days = 
CALCULATE (
    SUM ( 'View Name'[Date Diff in Days] ),
    ALLEXCEPT ( 'View Name', 'View Name'[Work Item Id] ),
    'View Name'[Date] <= EARLIER ( 'View Name'[Date] ),
    'View Name'[State] = EARLIER ( 'View Name'[State] )
) + 0

Creación de gráficos de tendencias de columnas apiladas en función de la hora de estado en días

Para mostrar la columna Tiempo de estado en días , se crean los siguientes gráficos de columnas apiladas. En el primer gráfico se muestra el recuento de elementos de trabajo en cada estado a lo largo del tiempo.

Captura de pantalla del gráfico de columnas apiladas de Power BI y la pestaña Visualización que muestra el recuento del título del elemento de trabajo por fecha y estado.

En el segundo gráfico se muestra la tendencia de los días medios en los que los elementos de trabajo activos están en un estado determinado.

Captura de pantalla del gráfico de columnas apiladas de Power BI y la pestaña Visualización que muestra el promedio de días en estado de los elementos de trabajo por fecha.

Agregar hora de estado en días: más reciente (es el último día en estado)

Al evaluar el tiempo en estado de cada elemento de trabajo de una tabla o cuando se filtra por un campo como Ruta de acceso del área, no use la columna Tiempo de estado en días en una agregación. La agregación usa el valor de cada día que el elemento de trabajo estaba en el estado . Por ejemplo, si un elemento de trabajo estaba en curso el lunes y se movió a Completado el jueves, el tiempo en estado es de tres días, pero la suma del tiempo de estado en días columna es seis días, , 1+2+3que es incorrecto.

Agregar tiempo de estado en días: más reciente.

Para resolver este problema, use la hora de estado en días y aplique el filtro Is Last Day In State es igual a "True". Elimina todos los datos históricos necesarios para una tendencia y se centra en el valor más reciente de cada estado.

Use la hora de estado en días y aplique el filtro Is Last Day In State es igual a

Agregar tiempo de estado en días: en curso

En los ejemplos anteriores, tiempo de estado en días para un elemento de trabajo determinado solo se cuenta cuando el elemento de trabajo estaba en ese estado específico. Si su objetivo es tener el tiempo en estado de un determinado recuento de elementos de trabajo hacia un promedio continuo, debe cambiar el cálculo. Por ejemplo, si queremos realizar un seguimiento del estado "En curso", agregamos la columna calculada State Time in Days - In Progress (Tiempo de estado en días: en curso ).

En la pestaña Modelado , elija Nueva columna y, a continuación, reemplace el texto predeterminado por el código siguiente y seleccione la marca de verificación.

State Time in Days - In Progress = 
CALCULATE (
    SUM ( 'View Name'[Date Diff in Days] ),
    ALLEXCEPT ( 'View Name', 'View Name'[Work Item Id] ),
   'View Name'[Date] <= EARLIER('View Name'[Date]),
   'View Name'[State] = "In Progress"
) + 0

Nota:

Es posible que tenga que revisar la definición en función de los estados de flujo de trabajo utilizados por el proyecto. Por ejemplo, el proyecto usado en los ejemplos de este artículo usa el estado de flujo de trabajo "En curso", pero los procesos Agile, Scrum y CMMI suelen usar los estados "Activo" o "Confirmado" para representar el trabajo en curso. Para obtener información general, consulte Estados de flujo de trabajo y categorías de estado.

En la imagen siguiente se muestra el efecto de considerar todo el tiempo en estado para cada elemento de trabajo existente (se muestra a la izquierda) en lugar de solo aquellos elementos de trabajo en un estado específico en un día determinado (se muestra a la derecha).

Comparación de tendencias del tiempo medio en estado

Tendencia de tiempo de estado en días de varios estados

El análisis del rendimiento en varios estados también es posible mediante el patrón "Continuo". Sin embargo, este enfoque solo funciona con un gráfico de tendencias.

En la pestaña Modelado , elija Nueva columna y, a continuación, reemplace el texto predeterminado por el código siguiente y seleccione la marca de verificación.

State Time in Days - Working States = 
CALCULATE (
    SUM ( 'View Name'[Date Diff in Days] ),
    ALLEXCEPT ( 'View Name', 'View Name'[Work Item Id] ),
   'View Name'[Date] <= EARLIER('View Name'[Date]),
   'View Name'[State] IN { "Committed", "In Progress" }
) + 0

Nota:

Es posible que tenga que revisar la definición en función de los estados de flujo de trabajo utilizados por el proyecto. Por ejemplo, si el proyecto usa "Activo" en lugar de "Confirmado" o "Propuesto".

El gráfico de la izquierda muestra el promedio combinado, mientras que el lado derecho muestra cada estado individual.

Comparación de tendencias de varios estados

Obtener la hora de estado en días: más reciente para varios estados

Al crear una tendencia, se usa la columna State Time in Days- Latest calculada. Con un filtro en los estados, la columna Tiempo de estado en días y Is Last Day in State proporciona una manera sencilla de obtener el tiempo total de cualquier elemento de trabajo o grupo de elementos de trabajo invertidos en un conjunto de estados.

Hora más reciente en estados

Agregar estado anterior

La columna calculada Date Previous también se puede usar para buscar valores anteriores, como el estado anterior de cada elemento de trabajo.

Importante

Requiere que haya agregado la columna Fecha anterior calculada a la tabla.

En la pestaña Modelado , elija Nueva columna y, a continuación, reemplace el texto predeterminado por el código siguiente y seleccione la marca de verificación.

State Previous =
LOOKUPVALUE (
    'View Name'[State],
    'View Name'[Work Item Id], 'View Name'[Work Item Id],
    'View Name'[Date], 'View Name'[Date Previous]
)

Esta columna calculada usa , LOOKUPVALUEque se describe más adelante en este artículo.

El primer LOOKUPVALUE parámetro, 'View Name'[State], especifica que se devuelve el valor de [State].

El parámetro siguiente, 'View Name'[Work Item Id], 'View Name'[Work Item Id], especifica que solo se deben tener en cuenta las filas con un identificador de elemento de trabajo coincidente como la fila actual.

Y, el último parámetro, 'View Name'[Date], 'View Name'[Date Previous], especifica que la fecha de la fila que se devuelve debe tener un [Date] que coincida con la [Fecha anterior] de la fila actual. En una instantánea, solo una fila puede cumplir estos criterios.

Agregar estado cambiado

Con la columna Estado anterior , podemos marcar las filas de cada elemento de trabajo donde se produjo una transición de estado. La columna calculada Stage Changed tiene dos consideraciones especiales:

  • Valores en blanco de *State Previous, que establecemos en la fecha de creación del elemento de trabajo
  • La creación de un elemento de trabajo se considera una transición de estado

Importante

Requiere que haya agregado la columna Calculada Estado anterior a la tabla.

En la pestaña Modelado , elija Nueva columna y, a continuación, reemplace el texto predeterminado por el código siguiente y seleccione la marca de verificación.

State Changed =
IF (
    ISBLANK ( 'View Name'[State Previous] ),
    'View Name'[Created Date].[Date] = 'View Name'[Date],
    'View Name'[State Previous] <> 'View Name'[State]
)

La columna calculada es un valor booleano que identifica si la fila es una transición de estado. Mediante el Not Equal To operador , se detectan correctamente filas en las que el estado anterior no coincide con el estado actual, lo que significa que la comparación devuelve True según lo previsto.

Agregar flujo de estado

Con las columnas calculadas State Previous y State Changed , puede crear una columna que muestre el flujo de estado de un elemento de trabajo determinado. La creación de esta columna es opcional para los fines de este artículo.

Importante

Requiere que haya agregado las columnas calculadas State Previous y State Changed a la tabla.

En la pestaña Modelado , elija Nueva columna y, a continuación, reemplace el texto predeterminado por el código siguiente y seleccione la marca de verificación.

State Flow = 
IF([State Changed], [State Previous], [State]) & " => " & [State]

Agregar recuento de cambios de estado

A medida que avanzamos a las medidas más complicadas, es necesario tener una representación del número total de cambios de estado para comparar las filas de los datos de un elemento de trabajo determinado. Para obtener la representación, se agrega una columna calculada Recuento de cambios de estado .

Importante

Requiere que haya agregado la columna calculada State Changed a la tabla.

En la pestaña Modelado , elija Nueva columna y, a continuación, reemplace el texto predeterminado por el código siguiente y seleccione la marca de verificación.

State Change Count = 
CALCULATE (
    COUNTROWS ( 'View Name' ),
    ALLEXCEPT ( 'View Name', 'View Name'[Work Item Id] ),
    'View Name'[Date] <= EARLIER ( 'View Name'[Date] ),
    'View Name'[State Changed]
) + 0

Agregar recuento de cambios de estado: último tiempo de reinicio propuesto y de estado en días

El tiempo de reinicio de estado en días es un cálculo bastante complejo. El primer paso es buscar la última vez que un elemento de trabajo estaba en un estado propuesto. Agregue la columna Recuento de cambios de estado - Última columna calculada propuesta .

Nota:

Es posible que tenga que revisar las siguientes definiciones en función de los estados de flujo de trabajo usados por el proyecto. Por ejemplo, si el proyecto usa "New" en lugar de "Proposed".

En la pestaña Modelado , elija Nueva columna y, a continuación, reemplace el texto predeterminado por el código siguiente y seleccione la marca de verificación.

State Change Count - Last Proposed = 
CALCULATE (
    MAX ( 'View Name'[State Change Count] ),
    ALLEXCEPT ( 'View Name', 'View Name'[Work Item Id] ),
    'View Name'[Date] <= EARLIER ( 'View Name'[Date] ),
    'View Name'[State] = "Proposed"
)

Después, vuelva al pasado y compruebe si había algunos estados activos antes de este estado propuesto. Por último, suma todos los días en los que el elemento de trabajo estaba en estado activo antes de la última propuesta.

En la pestaña Modelado , elija Nueva columna y, a continuación, reemplace el texto predeterminado por el código siguiente y seleccione la marca de verificación.

State Restart Time in Days = 
CALCULATE (
    SUM ( 'View Name'[Date Diff in Days] ),
    ALLEXCEPT ( 'View Name', 'View Name'[Work Item Id] ),
    'View Name'[Date] <= EARLIER ( 'View Name'[Date] ),
    'View Name'[State Change Count] < EARLIER('View Name'[State Change Count - Last Proposed] ),
    'View Name'[State] <"Proposed"
) + 0

Dado que el tiempo de reinicio de estado en días se actualiza para cada fila de datos, puede crear una tendencia para evaluar el reproceso en sprints específicos o examinar el reprocesamiento de elementos de trabajo individuales mediante Is Current.

Agregar tiempo de reprocesamiento de estado en días

Al igual que el tiempo de reinicio de estado en días, el tiempo de reproceso de estado en días busca la primera vez que un elemento de trabajo estaba en la categoría Estado completado. Después de ese tiempo, cada día un elemento de trabajo pasa en un estado distinto de Completado, cuenta como reprocesamiento.

  1. Cree la columna "Recuento de cambios de estado - Primer completado". Esta columna realiza un seguimiento del número de veces que un elemento de trabajo realiza la transición al estado Completado desde cualquier otro estado.

    State Change Count - First Completed =
    VAR CompletedState = "Completed"
    RETURN
    CALCULATE(
       COUNTROWS('YourTable'),
       FILTER(
           'YourTable',
           'YourTable'[State] = CompletedState
           && 'YourTable'[State Change Date] = MIN('YourTable'[State Change Date])
       )
    )
    
  2. En la pestaña Modelado , elija Nueva columna y, a continuación, reemplace el texto predeterminado por el código siguiente y seleccione la marca de verificación.

    State Rework Time in Days = 
    IF (
        ISBLANK ( 'View Name'[State Change Count - First Completed] ),
        0,
        CALCULATE (
            SUM ( 'View Name'[Date Diff in Days] ),
            ALLEXCEPT ( 'View Name', 'View Name'[Work Item Id] ),
            'View Name'[Date] <= EARLIER ( 'View Name'[Date] ),
            'View Name'[State Change Count] EARLIER ( 'View Name'[State Change Count - First Completed] ),
            'View Name'[State] IN {"Completed", "Closed", "Cut" } = FALSE()
        ) + 0
    )
    

    Nota:

    Es posible que tenga que revisar la definición anterior en función de los estados de flujo de trabajo utilizados por el proyecto. Por ejemplo, si el proyecto usa Listo en lugar de Cerrado, etc.

Funciones de DAX

En esta sección se proporciona información adicional para las funciones DAX que se usan para crear las columnas calculadas y la medida agregadas en este artículo. Consulte también DAX, funciones de inteligencia de tiempo.

Función Descripción
ALLEXCEPT Quita todos los filtros de contexto de la tabla, excepto los filtros aplicados a las columnas especificadas. Básicamente, ALLEXCEPT ('View Name'', 'View Name'[Work Item Id]) reduce las filas de la tabla a solo las que comparten el mismo identificador de elemento de trabajo que la fila actual.
CALCULATE Esta función es la base de casi todos los ejemplos. La estructura básica es una expresión seguida de una serie de filtros que se aplican a la expresión.
COUNTROWS Esta función, COUNTROWS ( 'View Name' ), simplemente cuenta el número de filas que permanecen después de aplicar los filtros.
DATEDIFF Devuelve el recuento del intervalo entre dos fechas. DATEDIFF resta Date Previous de Date para determinar el número de días entre ellos.
EARLIER Devuelve el valor actual de la columna especificada en un paso de evaluación externo de la columna mencionada. Por ejemplo, 'View Name'[Date] < EARLIER ( 'View Name'[Date] ) reduce aún más el conjunto de datos a solo las filas que se produjeron antes de la fecha de la fila actual a la que se hace referencia mediante la EARLIER función . EARLIER no hace referencia a fechas anteriores; define específicamente el contexto de fila de la columna calculada.
ISBLANK Comprueba si un valor está en blanco y devuelve TRUE o FALSE. ISBLANK evalúa la fila actual para determinar si Date Previous tiene un valor. Si no es así, la instrucción If establece Date Diff in Days en 1.
LASTDATE Aplicamos el LASTDATE filtro a una expresión, por ejemplo LASTDATE ( 'View Name'[Date] ), para buscar la fecha más reciente en todas las filas de la tabla y eliminar las filas que no comparten la misma fecha. Con la tabla de instantáneas generada por una vista de Analytics, este filtro selecciona eficazmente el último día del período seleccionado.
LOOKUPVALUE Devuelve el valor de result_columnName de la fila que cumple todos los criterios especificados por search_columnName y search_value.
MAX Devuelve el valor numérico mayor de una columna, o entre dos expresiones escalares. MAX ( 'View Name'[Date] )Aplicamos , para determinar la fecha más reciente después de aplicar todos los filtros.