Fecha de finalización del proyecto VS POR calendario – Impactos de los proyectos

Un usuario Pregunto ✅

JoãoBerryBR

Hola a todos,

¿Cómo implementar if con códigos de powerquery?

Me gustaría hacer un cálculo de datos de formato de «fecha», la propuesta es medir el impacto de algunos proyectos, en función de la Fecha de finalización frente al calendario 2019 BY. para hacer eso en Excel, hice esta fórmula:

«= SI ([@[Anticipated Completion Date]]> $ E $ 2; 0; SI ([@[Anticipated Completion Date]]<= $ E $ 1; SI (365 - ($ E $ 1-[@[Anticipated Completion Date]])> = 0; (365 – ($ E $ 1-[@[Anticipated Completion Date]])); 0); $ E $ 2-[@[Anticipated Completion Date]])) «

Donde:

  • Fecha de finalización anticipada = La fecha de vencimiento del proyecto, cuando se supone que debe estar terminado;
  • E1 = 30/09/2018 (Fin del calendario 2018 BY);
  • E2 = 30/09/2019 (Fin del calendario 2019 BY);
  • 365 = número de días en un año regular;

Saludos,

Hola @ JoãoBerryBR

Crea una tabla de calendario sin crear ninguna relación

calendar = ADDCOLUMNS(CALENDARAUTO(),"modified year",IF(MONTH([Date])<10,YEAR([Date]),YEAR([Date])+1))

1.png

Crear medidas en la tabla de datos principal

measure =
VAR end_2018 =
    CALCULATE (
        MAX ( 'calendar'[Date] ),
        FILTER ( ALL ( 'calendar' ), 'calendar'[modified year] = 2018 )
    )
VAR end_2019 =
    CALCULATE (
        MAX ( 'calendar'[Date] ),
        FILTER ( ALL ( 'calendar' ), 'calendar'[modified year] = 2019 )
    )
RETURN
    IF (
        MAX ( 'Table'[Anticipated Completion Date] ) > end_2019,
        0,
        IF (
            MAX ( 'Table'[Anticipated Completion Date] ) <= end_2018,
            IF (
                365 - DATEDIFF ( MAX ( 'Table'[Anticipated Completion Date] ), end_2018, DAY ) >= 0,
                365 - DATEDIFF ( MAX ( 'Table'[Anticipated Completion Date] ), end_2018, DAY ),
                0
            ),
            DATEDIFF ( MAX ( 'Table'[Anticipated Completion Date] ), end_2019, DAY )
        )
    )

3.png

Atentamente
Maggie

Equipo de apoyo de la comunidad _ Maggie Li
Si esta publicación ayuda, entonces por favor considere Acéptalo como la solución para ayudar a los demás miembros a encontrarlo más rápidamente.

JoãoBerryBR

Hola,

  • el primer SI es excluir la Fecha de finalización anticipada antes del año de la UB actual, en este caso, 30/09/2019, si es mayor que 30/09/2019, el resultado será Cero;
  • el segundo IF probará cuántos días a partir del año anterior, en este caso, desde el 01/10/2017 hasta el 30/09/2018, impactará la BU actual, en este caso 2019. El cálculo considera 12 meses de beneficios del proyecto, en este ejemplo, si un proyecto se terminó el 30/03/2018, el cálculo del beneficio del proyecto considerará 6 meses en la BU 2018 y 6 meses en la BU2019;
  • El segundo si además, evita la fecha negativa, por ejemplo: un proyecto se terminó el 30/06/2016, el resultado del cálculo será: -457, lo cual no tiene sentido, por lo que el IF llenará el campo con Cero.

Saludos.

Hola @ JoãoBerryBR

Crea una tabla de calendario sin crear ninguna relación

calendar = ADDCOLUMNS(CALENDARAUTO(),"modified year",IF(MONTH([Date])<10,YEAR([Date]),YEAR([Date])+1))

1.png

Crear medidas en la tabla de datos principal

measure =
VAR end_2018 =
    CALCULATE (
        MAX ( 'calendar'[Date] ),
        FILTER ( ALL ( 'calendar' ), 'calendar'[modified year] = 2018 )
    )
VAR end_2019 =
    CALCULATE (
        MAX ( 'calendar'[Date] ),
        FILTER ( ALL ( 'calendar' ), 'calendar'[modified year] = 2019 )
    )
RETURN
    IF (
        MAX ( 'Table'[Anticipated Completion Date] ) > end_2019,
        0,
        IF (
            MAX ( 'Table'[Anticipated Completion Date] ) <= end_2018,
            IF (
                365 - DATEDIFF ( MAX ( 'Table'[Anticipated Completion Date] ), end_2018, DAY ) >= 0,
                365 - DATEDIFF ( MAX ( 'Table'[Anticipated Completion Date] ), end_2018, DAY ),
                0
            ),
            DATEDIFF ( MAX ( 'Table'[Anticipated Completion Date] ), end_2019, DAY )
        )
    )

3.png

Atentamente
Maggie

Equipo de apoyo de la comunidad _ Maggie Li
Si esta publicación ayuda, entonces por favor considere Acéptalo como la solución para ayudar a los demás miembros a encontrarlo más rápidamente.

JoãoBerryBR

En respuesta a v-juanli-msft

Gracias, lo intentaré.

Atentamente,

Stachu

No entiendo la fórmula, parece que la verdad en el segundo SI nunca puede suceder (fecha> E2 (2019) y fecha <= E1 (2018))
¿Puedes describirlo en lenguaje natural?

en M, solo se puede devolver como una columna o una tabla, y parece más una medida para DAX: contar los días desde una fecha determinada hasta el final de un año calendario personalizado. Si lo necesita en una columna, ¿puede agregar tablas de muestra (en un formato que se puede copiar a PowerBI) de su modelo con datos anónimos?

Columna1 Columna 2
A 1
B 2,5

Como se describe aquí:

Cómo obtener una respuesta rápida a su pregunta

JoãoBerryBR

En respuesta a Stachu

Hola,

Perdón por mi pregunta tonta, pero ¿qué parámetro debo poner en el campo a continuación?

"modified year"

Saludos,

En respuesta a JoãoBerryBR

Hola @ JoãoBerryBR

Es una columna agregada en la tabla «calendario», está escrito en mi primera fórmula.

El inicio de un año y el final de un año es del 30/9 de este año al 30/6 del próximo año, por ejemplo, 2018/9/30 ~ 2019/6/30, representa el año 2019, ¿verdad?

Atentamente
Maggie

Equipo de apoyo de la comunidad _ Maggie Li
Si esta publicación ayuda, entonces por favor considere Acéptalo como la solución para ayudar a los demás miembros a encontrarlo más rápidamente.

JoãoBerryBR

En respuesta a v-juanli-msft

Hola maggie

¡¡¡muchas gracias!!!

Mi año BU 2019 es desde el 01/10/2018 hasta el 30/09/2019.

Saludos,

João

Deja un comentario

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