Medida acumulativa con condición y tamaño de ventana específico (sin límites anterior a fila_actual-1)

Un usuario Pregunto ✅

Sichanm

Hola a todos,

Tengo algunos datos del proyecto de la siguiente manera:

Sichanm_1-1616782875184.png

He creado un esquema en estrella a partir de los atributos que necesito para el procesamiento, como el tipo de activo y el recinto.

Para el análisis financiero, seleccioné algunas de las columnas que se requieren y desvié los datos Fys para que aparezcan en las filas (no columnas) como se muestra a continuación.

Sichanm_0-1616784535296.png

Fy es la parte del año de Fys y el flujo de caja es el valor de esa columna.

Fys representa el año financiero y el Gran Total es la suma de todos los Fys.

Ahora, necesito calcular el compromiso. He agregado una columna en el ejemplo anterior para mostrar cómo se calcula. La logica es como sigue:

Problema:

Para el primer año, es igual a la suma de todos los Fys (que podemos obtener del Gran total en lugar de sumar todos los Fys). Para cualquier otro año (es decir, segundo, tercero,…), el compromiso es igual al Gran total – (suma del flujo de caja de todos los anterior años). Por lo tanto,

Para el primer año es igual a Gran Total, es decir, 1500.

Para el segundo año, es Total general – Flujo de efectivo del primer año (es decir, primer año fiscal), es decir, 1500-100=1400.

Para el tercer año, es el total general – (año fiscal primero + año fiscal segundo), es decir, 1500- (100+200)=1200.

y así

Dado que estos proyectos pueden tener diferentes fechas de inicio y finalización y pueden ocurrir en diferentes años, eliminé los Fys que son nulos y calculé la clasificación para el resto en función de Fys. Por ejemplo, para el ejemplo anterior, todos los Fys de 2025 a 2050 son nulos, por lo que los eliminé porque no se muestran en la tabla sin pivotar y están clasificados según el valor de Fys en orden ascendente.

Mi fórmula de clasificación:

Rango = CALCULAR (
COUNTROWS(‘Cartera DPO_FY’),
FILTRAR(
TODOS(‘Cartera DPO_FY’),
‘Cartera DPO_FY'[Id] = ANTERIOR(‘Cartera DPO_FY'[Id]) &&
‘Cartera DPO_FY'[FY_Start] < ANTERIOR('Cartera DPO_FY'[FY_Start])
)
)+1
Feliz de usar Power Query o DAX o cualquier otra forma posible
Ejemplo numérico:
IDENTIFICACIÓN paquete Tipo de activo Recinto Rango año fiscal Flujo de efectivo Compromiso real Gran total
1 100 Agua A 1 2020 100 1500 1500
1 100 Agua A 2 2021 200 1400 1500
1 100 Agua A 3 2022 300 1200 1500
1 100 Agua A 4 2023 400 900 1500
1 100 Agua A 5 2024 500 500 1500
2 200 Transporte A 1 2019 200 1000 1000
2 200 Transporte A 2 2020 300 800 1000
2 200 Transporte A 3 2021 400 500 1000
2 200 Transporte A 4 2022 100 900 1000

Sichanm

Tengo que usar una columna calculada ya que es un cálculo fila por fila.

este enlace me ayudo mucho

Comm_calc1 =CALCULAR (suma (‘Cartera DPO_FY'[Cash Flow]),Filtrar(TODO EXCEPTO(‘Cartera DPO_FY’,’Cartera DPO_FY'[Id]),’Cartera DPO_FY'[Rank](‘Cartera DPO_FY'[Rank])))
y luego
Compromiso = if(‘Cartera DPO_FY'[Rank]==1,’Cartera de DPO_FY'[Grand Total],’Cartera de DPO_FY'[Grand Total]-‘Cartera DPO_FY'[Comm_calc1])

Sichanm

Tengo que usar una columna calculada ya que es un cálculo fila por fila.

este enlace me ayudo mucho

Comm_calc1 =CALCULAR (suma (‘Cartera DPO_FY'[Cash Flow]),Filtrar(TODO EXCEPTO(‘Cartera DPO_FY’,’Cartera DPO_FY'[Id]),’Cartera DPO_FY'[Rank](‘Cartera DPO_FY'[Rank])))
y luego
Compromiso = if(‘Cartera DPO_FY'[Rank]==1,’Cartera de DPO_FY'[Grand Total],’Cartera de DPO_FY'[Grand Total]-‘Cartera DPO_FY'[Comm_calc1])

daxer

No es claro. Consulte esta guía: Cómo obtener una respuesta rápida a su pregunta (powerbi.com)

Sichanm

En respuesta a daxer

Hola @daxer, gracias por el comentario, lo revisé para que sea más fácil de entender y, con suerte, claro esta vez.

Deja un comentario

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