Forum Discussion
Dependencia circular
- 2 years ago
La solución la encontré justo debajo:
Saldo inicial de caja =
VAR varNum =
INTERRUPTOR (
MONTH(MAX('dimCalendar'[Fecha])),
1, 0,
2, -1,
3, -2,
4, -3,
5, -4,
6, -5,
7, -6,
8, -7,
9, -8,
10, -9,
11, -10,
12, -11
)VAR varMonth = MONTH(MAX('dimCalendar'[Date]))
VAR varInicial =
CALCULAR(
[Importe de la moneda],
dimCashFlowAccount[H1] = "5 Saldo de efectivo inicial"
)FEBRERO
VAR X =
CALCULAR(
[DefaultCase],
DATEADD(dimCalendar[Fecha], varNum, MES)
)VAR Y =
CALCULAR(
[Importe de la moneda],
(dimCashFlowAccount[H1] = "1 OCF - Operativa [NIIF]" ||
dimCashFlowAccount[H1] = "2 FCF - Financiación" ||
dimCashFlowAccount[H1] = "3 ICF - Inversión" ||
dimCashFlowAccount[H1] = "4 Variación de cambio de efectivo") &&
DATEADD(dimCalendar[Date], varNum + 1, MONTH)
) + XMARZO
VAR X1 = YVAR Y1 =
CALCULAR(
[Importe de la moneda],
(dimCashFlowAccount[H1] = "1 OCF - Operativa [NIIF]" ||
dimCashFlowAccount[H1] = "2 FCF - Financiación" ||
dimCashFlowAccount[H1] = "3 ICF - Inversión" ||
dimCashFlowAccount[H1] = "4 Variación de cambio de efectivo") &&
DATEADD(dimCalendar[Fecha], varNum + 2, MES)
) + X1ABRIL
VAR X2 = Y1VAR Y2 =
CALCULAR(
[Importe de la moneda],
(dimCashFlowAccount[H1] = "1 OCF - Operativa [NIIF]" ||
dimCashFlowAccount[H1] = "2 FCF - Financiación" ||
dimCashFlowAccount[H1] = "3 ICF - Inversión" ||
dimCashFlowAccount[H1] = "4 Variación de cambio de efectivo") &&
DATEADD(dimCalendar[Fecha], varNum + 3, MES)
) + X2MAYO
VAR X3 = Y2VAR Y3 =
CALCULAR(
[Importe de la moneda],
(dimCashFlowAccount[H1] = "1 OCF - Operativa [NIIF]" ||
dimCashFlowAccount[H1] = "2 FCF - Financiación" ||
dimCashFlowAccount[H1] = "3 ICF - Inversión" ||
dimCashFlowAccount[H1] = "4 Variación de cambio de efectivo") &&
DATEADD(dimCalendar[Date], varNum + 4, MONTH)
) + X3JUNIO
VAR X4 = Y3VAR Y4 =
CALCULAR(
[Importe de la moneda],
(dimCashFlowAccount[H1] = "1 OCF - Operativa [NIIF]" ||
dimCashFlowAccount[H1] = "2 FCF - Financiación" ||
dimCashFlowAccount[H1] = "3 ICF - Inversión" ||
dimCashFlowAccount[H1] = "4 Variación de cambio de efectivo") &&
DATEADD(dimCalendar[Date], varNum + 5, MONTH)
) + X4JULIO
VAR X5 = Y4VAR Y5 =
CALCULAR(
[Importe de la moneda],
(dimCashFlowAccount[H1] = "1 OCF - Operativa [NIIF]" ||
dimCashFlowAccount[H1] = "2 FCF - Financiación" ||
dimCashFlowAccount[H1] = "3 ICF - Inversión" ||
dimCashFlowAccount[H1] = "4 Variación de cambio de efectivo") &&
DATEADD(dimCalendar[Fecha], varNum + 6, MES)
) + X5// AUGUST
VAR X6 = Y5VAR Y6 =
CALCULAR(
[Importe de la moneda],
(dimCashFlowAccount[H1] = "1 OCF - Operativa [NIIF]" ||
dimCashFlowAccount[H1] = "2 FCF - Financiación" ||
dimCashFlowAccount[H1] = "3 ICF - Inversión" ||
dimCashFlowAccount[H1] = "4 Variación de cambio de efectivo") &&
DATEADD(dimCalendar[Date], varNum + 7, MONTH)
) + X6SEPTIEMBRE
VAR X7 = Y6VAR Y7 =
CALCULAR(
[Importe de la moneda],
(dimCashFlowAccount[H1] = "1 OCF - Operativa [NIIF]" ||
dimCashFlowAccount[H1] = "2 FCF - Financiación" ||
dimCashFlowAccount[H1] = "3 ICF - Inversión" ||
dimCashFlowAccount[H1] = "4 Variación de cambio de efectivo") &&
DATEADD(dimCalendar[Date], varNum + 8, MONTH)
) + X7OCTUBRE
VAR X8 = Y7VAR Y8 =
CALCULAR(
[Importe de la moneda],
(dimCashFlowAccount[H1] = "1 OCF - Operativa [NIIF]" ||
dimCashFlowAccount[H1] = "2 FCF - Financiación" ||
dimCashFlowAccount[H1] = "3 ICF - Inversión" ||
dimCashFlowAccount[H1] = "4 Variación de cambio de efectivo") &&
DATEADD(dimCalendar[Date], varNum + 9, MONTH)
) + X8NOVIEMBRE
VAR X9 = Y8VAR Y9 =
CALCULAR(
[Importe de la moneda],
(dimCashFlowAccount[H1] = "1 OCF - Operativa [NIIF]" ||
dimCashFlowAccount[H1] = "2 FCF - Financiación" ||
dimCashFlowAccount[H1] = "3 ICF - Inversión" ||
dimCashFlowAccount[H1] = "4 Variación de cambio de efectivo") &&
DATEADD(dimCalendar[Date], varNum + 10, MONTH)
) + x9DICIEMBRE
VAR X10 = Y9VAR Y10 =
CALCULAR(
[Importe de la moneda],
(dimCashFlowAccount[H1] = "1 OCF - Operativa [NIIF]" ||
dimCashFlowAccount[H1] = "2 FCF - Financiación" ||
dimCashFlowAccount[H1] = "3 ICF - Inversión" ||
dimCashFlowAccount[H1] = "4 Variación de cambio de efectivo") &&
DATEADD(dimCalendar[Fecha], varNum + 11, MES)
) + X10Resultado del VAR =
INTERRUPTOR(
varMonth,
2, X, // Si CurrentMonth es 2 (febrero), devuelve X
3, X1, // Si CurrentMonth es 3 (marzo), devuelve X1
4, X2, // Si CurrentMonth es 4 (abril), devuelve X2
5, X3, // Si CurrentMonth es 5 (mayo), devuelve X3
6, X4, // Si CurrentMonth es 6 (junio), devuelve X4
7, X5, // Si CurrentMonth es 7 (julio), devuelve X5
8, X6, // Si CurrentMonth es 8 (agosto), devuelve X6
9, X7, // Si CurrentMonth es 9 (septiembre), devuelve X7
10, X8, // Si CurrentMonth es 10 (octubre), devuelve X8
11, X9, // Si CurrentMonth es 11 (noviembre), devuelve X9
12, X10, // Si CurrentMonth es 12 (diciembre), devuelve X10
BLANK() // Mayúsculas y minúsculas por defecto
)DEVOLUCIÓN
IF(varInitial <> 0, varInitial, Result)
========================================================Saldo final de caja =
VAR varNum =
INTERRUPTOR (
MONTH(MAX('dimCalendar'[Fecha])),
1, 0,
2, -1,
3, -2,
4, -3,
5, -4,
6, -5,
7, -6,
8, -7,
9, -8,
10, -9,
11, -10,
12, -11
)VAR varMonth = MONTH(MAX('dimCalendar'[Date]))
VAR varInicial =
CALCULAR(
[Importe de la moneda],
dimCashFlowAccount[H1] = "5 Saldo de efectivo inicial"
)VAR varFinal =
CALCULAR(
[Importe de la moneda],
dimCashFlowAccount[H1] = "6 Saldo de efectivo final"
)FEBRERO
VAR X =
CALCULAR(
[DefaultCase],
DATEADD(dimCalendar[Fecha], varNum, MES)
)VAR Y =
CALCULAR(
[Importe de la moneda],
dimCashFlowAccount[H1] = "1 OCF - Operativa [NIIF]" ||
dimCashFlowAccount[H1] = "2 FCF - Financiación" ||
dimCashFlowAccount[H1] = "3 ICF - Inversión" ||
dimCashFlowAccount[H1] = "4 Variación de cambio de efectivo",
DATEADD(dimCalendar[Date], varNum +1, MONTH)
) + XMARZO
VAR X1 = Y
VAR Y1 =
CALCULAR(
[Importe de la moneda],
dimCashFlowAccount[H1] = "1 OCF - Operativa [NIIF]" ||
dimCashFlowAccount[H1] = "2 FCF - Financiación" ||
dimCashFlowAccount[H1] = "3 ICF - Inversión" ||
dimCashFlowAccount[H1] = "4 Variación de cambio de efectivo",
DATEADD(dimCalendar[Date], varNum +2, MONTH)
) + X1ABRIL
VAR X2 = Y1
VAR Y2 =
CALCULAR(
[Importe de la moneda],
dimCashFlowAccount[H1] = "1 OCF - Operativa [NIIF]" ||
dimCashFlowAccount[H1] = "2 FCF - Financiación" ||
dimCashFlowAccount[H1] = "3 ICF - Inversión" ||
dimCashFlowAccount[H1] = "4 Variación de cambio de efectivo",
DATEADD(dimCalendar[Date], varNum +3, MONTH)
) + X2MAYO
VAR X3 = Y2VAR Y3 =
CALCULAR(
[Importe de la moneda],
dimCashFlowAccount[H1] = "1 OCF - Operativa [NIIF]" ||
dimCashFlowAccount[H1] = "2 FCF - Financiación" ||
dimCashFlowAccount[H1] = "3 ICF - Inversión" ||
dimCashFlowAccount[H1] = "4 Variación de cambio de efectivo",
DATEADD(dimCalendar[Date], varNum +4, MONTH)
) + X3JUNIO
VAR X4 = Y3VAR Y4 =
CALCULAR(
[Importe de la moneda],
dimCashFlowAccount[H1] = "1 OCF - Operativa [NIIF]" ||
dimCashFlowAccount[H1] = "2 FCF - Financiación" ||
dimCashFlowAccount[H1] = "3 ICF - Inversión" ||
dimCashFlowAccount[H1] = "4 Variación de cambio de efectivo",
DATEADD(dimCalendar[Date], varNum +5, MONTH)
) + X4JULIO
VAR X5 = Y4VAR Y5 =
CALCULAR(
[Importe de la moneda],
dimCashFlowAccount[H1] = "1 OCF - Operativa [NIIF]" ||
dimCashFlowAccount[H1] = "2 FCF - Financiación" ||
dimCashFlowAccount[H1] = "3 ICF - Inversión" ||
dimCashFlowAccount[H1] = "4 Variación de cambio de efectivo",
DATEADD(dimCalendar[Date], varNum +6, MONTH)
) + X5// AUGUST
VAR X6 = Y5VAR Y6 =
CALCULAR(
[Importe de la moneda],
dimCashFlowAccount[H1] = "1 OCF - Operativa [NIIF]" ||
dimCashFlowAccount[H1] = "2 FCF - Financiación" ||
dimCashFlowAccount[H1] = "3 ICF - Inversión" ||
dimCashFlowAccount[H1] = "4 Variación de cambio de efectivo",
DATEADD(dimCalendar[Date], varNum +7, MONTH)
) + X6
SEPTIEMBRE
VAR X7 = Y6VAR Y7 =
CALCULAR(
[Importe de la moneda],
dimCashFlowAccount[H1] = "1 OCF - Operativa [NIIF]" ||
dimCashFlowAccount[H1] = "2 FCF - Financiación" ||
dimCashFlowAccount[H1] = "3 ICF - Inversión" ||
dimCashFlowAccount[H1] = "4 Variación de cambio de efectivo",
DATEADD(dimCalendar[Date], varNum +8, MONTH)
) + X7OCTUBRE
VAR X8 = Y7VAR Y8 =
CALCULAR(
[Importe de la moneda],
dimCashFlowAccount[H1] = "1 OCF - Operativa [NIIF]" ||
dimCashFlowAccount[H1] = "2 FCF - Financiación" ||
dimCashFlowAccount[H1] = "3 ICF - Inversión" ||
dimCashFlowAccount[H1] = "4 Variación de cambio de efectivo",
DATEADD(dimCalendar[Date], varNum +9, MONTH)
) + X8NOVIEMBRE
VAR X9 = Y8VAR Y9 =
CALCULAR(
[Importe de la moneda],
dimCashFlowAccount[H1] = "1 OCF - Operativa [NIIF]" ||
dimCashFlowAccount[H1] = "2 FCF - Financiación" ||
dimCashFlowAccount[H1] = "3 ICF - Inversión" ||
dimCashFlowAccount[H1] = "4 Variación de cambio de efectivo",
DATEADD(dimCalendar[Date], varNum +10, MONTH)
) + x9DICIEMBRE
VAR X10 = Y9VAR Y10 =
CALCULAR(
[Importe de la moneda],
dimCashFlowAccount[H1] = "1 OCF - Operativa [NIIF]" ||
dimCashFlowAccount[H1] = "2 FCF - Financiación" ||
dimCashFlowAccount[H1] = "3 ICF - Inversión" ||
dimCashFlowAccount[H1] = "4 Variación de cambio de efectivo",
DATEADD(dimCalendar[Date], varNum +11, MONTH)
) + X10Resultado del VAR =
INTERRUPTOR(
varMonth,
2, Y, // Si CurrentMonth es 2 (febrero), devuelve X
3, Y1, // Si CurrentMonth es 3 (marzo), devuelve X1
4, Y2, // Si CurrentMonth es 4 (abril), devuelve X2
5, Y3, // Si CurrentMonth es 5 (mayo), devuelve X3
6, Y4, // Si CurrentMonth es 6 (junio), devuelve X4
7, Y5, // Si CurrentMonth es 7 (julio), devuelve X5
8, Y6, // Si CurrentMonth es 8 (agosto), devuelve X6
9, Y7, // Si CurrentMonth es 9 (septiembre), devuelve X7
10, Y8, // Si CurrentMonth es 10 (octubre), devuelve X8
11, Y9, // Si CurrentMonth es 11 (noviembre), devuelve X9
12, Y10, // Si CurrentMonth es 12 (diciembre), devuelve X10
BLANK() // Mayúsculas y minúsculas por defecto
)DEVOLUCIÓN
IF(varInitial <> 0, varFinal, Result)
Si alguien encuentra una simplificación del código, agradecería mucho mejoras y consejos. Muchas gracias por el apoyo de la comunidad !!
Proporcione datos de muestra que cubran su problema o pregunta por completo, en un formato utilizable (no como una captura de pantalla).
No incluya información confidencial ni nada que no esté relacionado con el problema o la pregunta.
Si no está seguro de cómo cargar datos, consulte https://community.fabric.microsoft.com/t5/Community-Blog/How-to-provide-sample-data-in-the-Power-BI-Forum/ba-p/963216
Muestre el resultado esperado en función de los datos de muestra que proporcionó.
¿Quieres respuestas más rápidas? https://community.fabric.microsoft.com/t5/Desktop/How-to-Get-Your-Question-Answered-Quickly/m-p/1447523
Lbendlin, agradezco su atención de antemano.
¡Tengo problemas para adjuntar el archivo .pbix!
Creé un modelo específicamente para su comprensión; sin embargo, devuelve el mensaje "El tipo de archivo (.pbix) no es compatible", aunque el archivo solo tenga 89 KB.
Os dejo algunas imágenes de mi modelo y de lo que espero conseguir!!
Saldo de efectivo inicial = Saldo de efectivo final del mes pasado
Saldo final de caja = (cuenta) 1 + 2 + 3 + 4 + 5
Si tienes alguna duda, ¡estoy a tu disposición!