Skip to main content
cancel
Showing results for 
Search instead for 
Did you mean: 

Grow your Fabric skills and prepare for the DP-600 certification exam by completing the latest Microsoft Fabric challenge.

Reply
Syndicate_Admin
Administrator
Administrator

Cálculo de un total acumulado basado en la fila anterior

Necesito calcular un total acumulado que se basa en los totales acumulados anteriores, pero sigo recibiendo un error de referencia circular. He construido un ejemplo simple para mostrar el problema en Excel.

Tengo datos reales hasta el 31/3/24 para los movimientos de efectivo cada día. A partir del 1/4/24, los movimientos de efectivo se pronostican en función de un número estimado de ingresos para el mes y los costos anticipados.

Screenshot 2024-05-15 at 19.12.59.png

La siguiente medida transfiere los ingresos mensuales a los ingresos diarios:

Rev FCast = 
var DaysInContext = CALCULATE( COUNTROWS( Dates ), Dates[Day of Week]<>5 && Dates[Day of Week] <> 6 )

VAR DaysInMonth = CALCULATE(COUNTROWS( Dates ), REMOVEFILTERS(Dates), VALUES( Dates[Year-Month] ), Dates[Day of Week]<>5 && Dates[Day of Week] <> 6  )
VAR MonthlyRevenueAmounts = CALCULATE( SUM('Revenue FCast'[Rev Est] ) , TREATAS( VALUES( Dates[Year-Month] ), 'Revenue FCast'[Year Month] ))

RETURN
IF( OR( HASONEVALUE( Dates[Date] ), HASONEVALUE( Dates[Year-Month] )),
    IF( NOT(OR( Min( Dates[Day of Week]) =5, Min( Dates[Day of Week]) = 6)),
    DIVIDE( DaysInContext, DaysInMonth, 0 ) * MonthlyRevenueAmounts,
    0
    ),
    MonthlyRevenueAmounts
)

Otra medida calcula los movimientos reales y estimados de las pantorrillas:

Total ActFCast = SUM( RevAct[Revenue] ) + SUM( Costs[Costs] ) + [Rev FCast]

Si el saldo acumulado de efectivo se vuelve negativo, se requiere un requisito de préstamo para que el saldo de efectivo vuelva a cero durante el día. La tabla anterior muestra un ejemplo para abril de 2024. La columna que no puedo calcular en Power Bi es la última columna de la tabla anterior que muestra el total acumulado, incluido el préstamo diario. Todo lo que intento dice que tengo una referencia circular.

Tengo un archivo pbix que he creado como ejemplo, pero si lo suelto en la publicación, dice que el tipo de archivo no es compatible.

4 REPLIES 4
Syndicate_Admin
Administrator
Administrator

Hola@pdoak
Estaré encantado de ayudarte.
De acuerdo con su descripción, desea calcular un total acumulado basado en totales acumulados anteriores, pero tiene problemas con las referencias circulares.
A continuación tengo los resultados de mis pruebas, creé los datos tal y como los entendí ya que no tuve acceso a los datos originales.
Primero creé los datos de prueba basados en el código que proporcionaste y usé la medida, desafortunadamente no tuve ningún problema, creo que los datos de prueba que creé eran un poco simples y tenían menos relaciones entre las tablas, ¡así que no reproducía tu problema!
Si puede proporcionar datos no confidenciales relevantes, sería útil para resolver su problema.

vjtianmsft_0-1715857382856.png

vjtianmsft_1-1715857397164.png

La relación entre las tablas es la siguiente:

vjtianmsft_3-1715857447798.png

En cuanto a su problema de referencia circular, debe ser que uno de los cálculos de la tabla depende de otro cálculo.

(posiblemente entre dos compases).

Por inferencia, el problema puede estar en la medida:[Rev FCast].
Lo anterior es mi conjetura, puedes referirte a él

Estos son los datos y cálculos que construí yo mismo en función de la funcionalidad que describe
1. Cum Bal
medida : Cum Bal
implementa un proceso de acumulación para Cash M'ment.

Cum Bal = 
VAR Date_=MAX('Test'[Date])
VAR Current_total=CALCULATE(
    SUM(Test[Cash M'ment]),FILTER(
        ALL('Test'),'Test'[Date]<=Date_)
)
RETURN Current_total

vjtianmsft_4-1715857578353.png


2. Endeudamiento

Borrowing = 
IF(
    'Test'[Cum Bal]<0,
    ABS('Test'[Cum Bal]),
    0
)

Si la acumulación de efectivo hasta la fecha actual es negativa, se requiere préstamo, de lo contrario, el resultado es 0 (no se requiere préstamo)

Cum inc Borrowing = 
IF(SELECTEDVALUE(Test[Date])>=DATE(2024,4,1),
'Test'[Cum Bal]+'Test'[Borrowing],
'Test'[Cum Bal])

Los resultados de la prueba anterior son mi propia comprensión, corríjame si me equivoco.

¿Puede describirme la definición de cada campo de la tabla?

Espero su respuesta.

Espero que mis sugerencias le den buenas ideas, si tiene más preguntas, por favor aclare en una respuesta de seguimiento.

Saludos

Carson Jian,

Si esta publicación ayuda, considere Aceptarlo como la solución para ayudar a los otros miembros a encontrarlo más rápidamente.

Hola @v-jtian-msft . Gracias por tomarse el tiempo de responder.

Desafortunadamente, su solución no resuelve mi problema, ya que su solución no incluye el valor prestado en la columna acumulativa, que es lo que necesito. He preparado un archivo pbix con datos de muestra correspondientes a la tabla de mi publicación original que me gustaría compartir para que le resulte más fácil comprender y resolver mi problema. Cuando intento soltar el archivo pbix en la página, recibo un mensaje de error que dice que el tipo de archivo no es compatible. Veo que pudiste adjuntar archivos pbix a tu publicación; ¿Cómo lo hago?

Mientras tanto, si miras mi tabla del 5/4/24, verás que se requiere un requisito de préstamo de 863.64 que lleva el total acumulado a cero ese día. Los movimientos de efectivo posteriores se suman a ese total acumulado.

Hola,@pdoak .
Gracias por la pronta corrección.
Basado en el hecho de que no puede cargar archivos pbix, lamento mucho escuchar que es posible que no pueda cargar archivos en este momento para los usuarios, no se preocupe, aquí están mis datos de prueba, puede consultarlos para ver si cumplen con sus expectativas.
Resumí las columnas de Cash M'ment, préstamos por separado y luego creé una nueva medida para resumir

vjtianmsft_0-1716173223128.png

Cum Bal = 
VAR Date_=MAX('Test'[Date])
VAR Current_total=CALCULATE(
    SUM(Test[Cash M'ment]),FILTER(
        ALL('Test'),'Test'[Date]<=Date_)
)
RETURN Current_total
Cum  Borrowing = 
VAR Date_=MAX('Test'[Date])
VAR Cum_Borrowing = CALCULATE(
    SUM('Test'[Borrowing]) ,FILTER(
        ALL(Test),'Test'[Date]<=Date_)
        )
RETURN Cum_Borrowing 
Cum inc borrowing = [Cum  Borrowing]+[Cum Bal]

Para que su archivo pbix no se pueda cargar, puede consultar la siguiente respuesta
URL:Cómo proporcionar datos de ejemplo en el foro de Power BI - Microsoft Fabric Community


Hola @v-jtian-msft , gracias por enmendar tu respuesta. Desafortunadamente, no es correcto, ya que el requisito de préstamo no se calcula correctamente en sus datos. Si el saldo acumulado nunca es inferior a cero, no es necesario ningún requisito de préstamo.

Mis datos de muestra están aquí , que son los datos de muestra en la tabla de mi publicación original en un archivo pbix. Según mis datos, el saldo acumulado no cae por debajo de cero hasta el 5 de abril. En este día, el requerimiento de endeudamiento debe ser de 863.64, lo que eleva el saldo de efectivo acumulado a cero, incluida la adición del requerimiento de endeudamiento.
Al día siguiente, 6 de abril, se experimenta un movimiento de efectivo negativo de 100 con el requerimiento de endeudamiento de 100 y nuevamente el saldo de efectivo acumulado debe ser cero.
El 7 de abril se produce un flujo de caja positivo de 809,09, lo que eleva el saldo de caja acumulado a 809,09. El siguiente día en que se requiere un requisito de endeudamiento es el 12 de abril.

Básicamente, quiero poder reproducir en Power Bi las dos últimas columnas de la tabla que publiqué en el post original.

Muchas gracias

Helpful resources

Announcements
RTI Forums Carousel3

New forum boards available in Real-Time Intelligence.

Ask questions in Eventhouse and KQL, Eventstream, and Reflex.

MayPowerBICarousel

Power BI Monthly Update - May 2024

Check out the May 2024 Power BI update to learn about new features.