Columna calculada en función de si el valor está disponible contra ID

Un usuario Pregunto ✅

Hayleysea

Hola,

Tengo una tabla con ID de proyecto, etapas y fechas. Las etapas van del 1 al 5, pero no todos los ID de proyectos tienen una entrada de etapa 5. En el caso de que no tengan una entrada a la Etapa 5, necesito usar la fecha de la Etapa 4 más 1 mes para obtener la fecha de la Etapa 5.

Por ejemplo: el proyecto ID 123 tiene una fecha de etapa 5 disponible, así que usaré el 05/12/2020 pero 321 no tiene una entrada de etapa 5, así que usaré la fecha de la etapa 4 del 04/05/2020 + 1 mes = 05 /05/2020.

Todos los proyectos tienen una fecha de la Etapa 4, por lo que idealmente me gustaría que el cálculo de la fecha de la Etapa 5 esté en la misma línea que la Etapa 4 pero en una nueva columna calculada (donde xxx está debajo)

Projecto ID Escenario Fecha Fecha de etapa 5 (columna calculada)
123 1 01/12/2020
123 2 02/12/2020
123 3 03/12/2020
123 4 04/12/2020 xxx
123 5 05/12/2020
321 1 01/05/2020
321 2 02/05/2020
321 3 03/05/2020
321 4 04/05/2020 xxx

¡¡Cualquier ayuda es muy apreciada!!

Zubair_Muhammad

@hayleysea

Pruebe esta columna calculada

Column =
VAR Stage5_present =
    NOT (
        ISEMPTY (
            CALCULATETABLE (
                VALUES ( TableName[Stage] ),
                ALLEXCEPT ( TableName, TableName[Project ID] ),
                TableName[Stage] = 5
            )
        )
    )
VAR Value_I_Want =
    IF (
        Stage5_present,
        CALCULATE (
            MAX ( TableName[Date] ),
            ALLEXCEPT ( TableName, TableName[Project ID] ),
            TableName[Stage] = 5
        ),
        EDATE (
            CALCULATE (
                MAX ( TableName[Date] ),
                ALLEXCEPT ( TableName, TableName[Project ID] ),
                TableName[Stage] = 4
            ),
            1
        )
    )
RETURN
    IF ( [Stage] = 4, Value_I_Want )

Anónimo

@Hayleysea, cree una columna calculada como se indica a continuación

Column = 
VAR stage4date = CALCULATE(MAX(Test[Date]),ALLEXCEPT(Test,Test[Project ID]))
VAR _maxstage = CALCULATE(MAX(Test[Stage]),ALLEXCEPT(Test,Test[Project ID]))
RETURN SWITCH(TRUE()
                ,AND(Test[Stage]=4,_maxstage = 5),stage4date
                ,AND(Test[Stage]=4,_maxstage=4),DATEADD(Test[Date].[Date],1,MONTH)
                ,BLANK())

prueba1.png

Hayleysea

En respuesta a Anónimo

Gracias por la respuesta. Este es el error que recibo al implementar esta solución. He encontrado la solución en otra respuesta.

«La función ‘CAMBIAR’ no admite la comparación de valores de tipo Verdadero/Falso con valores de tipo Fecha. Considere usar la función VALOR o FORMATO para convertir uno de los valores».

Zubair_Muhammad

@hayleysea

Pruebe esta columna calculada

Column =
VAR Stage5_present =
    NOT (
        ISEMPTY (
            CALCULATETABLE (
                VALUES ( TableName[Stage] ),
                ALLEXCEPT ( TableName, TableName[Project ID] ),
                TableName[Stage] = 5
            )
        )
    )
VAR Value_I_Want =
    IF (
        Stage5_present,
        CALCULATE (
            MAX ( TableName[Date] ),
            ALLEXCEPT ( TableName, TableName[Project ID] ),
            TableName[Stage] = 5
        ),
        EDATE (
            CALCULATE (
                MAX ( TableName[Date] ),
                ALLEXCEPT ( TableName, TableName[Project ID] ),
                TableName[Stage] = 4
            ),
            1
        )
    )
RETURN
    IF ( [Stage] = 4, Value_I_Want )

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *