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

The Power BI Data Visualization World Championships is back! It's time to submit your entry. Live now!

Reply
Syndicate_Admin
Administrator
Administrator

Cómo usar el valor del día anterior en una medida sin que se obtenga un error circular de dependencia

Hola

Estoy experimentando un error de dependencia circular en mi medida, pero no sé cómo solucionarlo. ¿Alguien puede ayudarme, por favor?

Tengo que mostrar una tabla de datos que muestre el número de unidades de producto que se producen cada día.

Como los hornos deben funcionar a máxima capacidad, siempre habrá algún producto adicional al final del día [Stock de cierre]

Este turno se convierte en el [Stock de Apertura] del día siguiente

El [Número Requerido de Oljas] se reduce entonces en el valor de [Stock de Apertura] para formar la columna [Número Ajustado de Oljas].

La columna [Número ajustado de ollas] se divide por la [Capacidad del horno] redondeada al número total más cercano para formar el [No. de Hornos]

El [Nº de Hornos] se multiplica por la [Capacidad del horno] para obtener el [Nº Total de ollas]

El [Stock Final] se crea por [Stock Abierto] + [Número total de Ollas] - [Número Obligatorio de Ollas]

AliPoTD_0-1764758354824.png

Me doy cuenta de que tengo un escenario de bucle aquí, de ahí las referencias a la Dependencia Circular, pero no sé cómo sortear esto.

Un archivo de prueba de ejemplo está disponible en WeTransfer en: https://we.tl/t-tWSidwSNBL

¿Alguien podría darme una solución si es posible, por favor?

Mi objetivo es lo siguiente:

AliPoTD_0-1764761864665.png

Muchas gracias de antemano por cualquier ayuda que me hayas podido.

1 ACCEPTED SOLUTION
Syndicate_Admin
Administrator
Administrator

Gracias a todos por vuestra ayuda, pero en mi caso no parece posible.

View solution in original post

10 REPLIES 10
Syndicate_Admin
Administrator
Administrator

Gracias a todos por vuestra ayuda, pero en mi caso no parece posible.

Syndicate_Admin
Administrator
Administrator

Hola @AliPoTD , espero que estés muy bien. ¿Podríamos saber si tu problema está resuelto o si sigues teniendo dificultades? Por favor, comparte los detalles, ya que ayudará a la comunidad, especialmente a otros con problemas similares.

Syndicate_Admin
Administrator
Administrator

Closing Stock = [Total No. of Pots] - [Required No. of Pots]
/* This should be the Opening Stock value plus the total number of pots produced on the day minus the Required No of Pots. */

¿Cuál es el número de vasijas producidas al día? ¿Cómo lo calculas?

Este es el [Nº Total de Ollas], que se calcula multiplicando el [Nº de Hornos] por la [Capacidad del Horno].

Sin embargo, el número de hornos se basa en el número ajustado de valor en Pots, que es el número requerido. del valor de la Potificación menos el Stock de cierre de ayer

@AliPoTD , en DAX no podemos hacer cálculos recursivos, significa que BOP/EOP, el stock inicial y el cierre tienen que acumularse

ejemplo

Onhand BOP= CALCULATE(SUM(Table[Ordered]),filter(all(date),date[date] <min(date[date))) -
CALCULATE(SUM(Table[Vend]),filter(all(date),date[date] <min(date[date])))


onhand EOP= CALCULATE(SUM(Table[Ordered]),filter(all(date),date[date] <=Max(date[date]))) -
CALCULATE(SUM(Table[Vend]),filter(all(date),date[date] <= Max(date[date])))

o

Inventario / Disponible =

CALCULATE(SUM(Table[Quantity]),filter(all(date),date[date] <min(date[date)), filter(Table, Table[MovementType] en {"Purchased", "Internal Conversion"}) -
CALCULATE(SUM(Table[Quantity]),filter(all(date),date[date] <min(date[date)), filter(Table, Table[MovementType] en {"Sales"})

Inventario de Power BI disponible: https://youtu.be/nKbJ9Cpb-Aw



Syndicate_Admin
Administrator
Administrator

Usa este patrón:

Mensaje de texto
Unidades diarias =
CALCULATE(
SUM('Producción'[Unidades]),
ALLEXCEPTO('Producción', 'Producción'[Fecha], 'Producción'[Producto])
)

Si sigue siendo circular:

Comprueba relaciones bidireccionales → configurado en sentido único

Sustituye las medidas circulares por columnas calculadas siempre que sea posible

Usa REMOVEFILTERS() en lugar de ALL() solo en tablas específicas

@AliPoTD

Syndicate_Admin
Administrator
Administrator

@AliPoTD ,

Por qué ocurre la dependencia circular
Estás intentando calcular algo como:
Requisito ajustado = Trampas requeridas - Stock de cierre del día anterior
Pero si el Stock Cerrado depende del Requisito Ajustado, creas un bucle. DAX no permite cálculos iterativos fila por fila en las medidas.

Enfoque recomendado:

Stock inicial =
CALCULATE(
MAX('Producción'[Stock de Cierre]),
OFFSET(-1, ORDERBY('Production'[Date], ASC))
)

O, si tienes una tabla de fechas adecuada:

Stock inicial =
CALCULATE(
MAX('Producción'[Stock de Cierre]),
DÍA ANTERIOR ('Fecha'[Fecha])
)


Luego calcula:


Requisito ajustado =
SUM('Producción'[Ollas Requeridas]) - [Abriendo Stock])


Referencia oficial:

Función DÍA ANTERIOR (DAX) - DAX | Microsoft Learn

Si esta respuesta te ha servido de algo, aceptaría encantado la alegría de ver funcionar una medida DAX a la primera sin necesidad de otro FILTRO.

Por favor, márcalo como la solución correcta. Ayuda a otros miembros de la comunidad a encontrar su camino más rápido (y les salva de otro bucle interminable).

Gracias por esto, aunque sigo recibiendo el error de dependencia circular ya que el Requisito Ajustado se usa posteriormente en los cálculos para el Número de Hornos -> Total de Ollas, > Stock de cierre -> Stock de apertura -> Requisito ajustado, etc.

He añadido un enlace en la publicación original a un archivo pbi de prueba que demuestra lo que intento conseguir, espero que esto lo explique completamente.

Gracias de antemano.

¡Gracias@Zanqueta

Entiendo tu explicación, tiene sentido.

Sin embargo, el valor de mi stock de cierre es una medida que no parece funcionar en el código que has proporcionado.

AliPoTD_0-1764755613094.png

Syndicate_Admin
Administrator
Administrator

¡Hola @AliPoTD

Debes romper la dependencia calculando el valor del día anterior a partir de los datos base, no de la medida en sí.

En Power BI el patrón correcto es:

Prev Day Value :=
CALCULATE(
    [Your Base Measure],                
    DATEADD('Date'[Date], -1, DAY)
)

Entonces tu medida final se convierte en:

Final Measure :=
VAR OpeningStock = [Prev Day Value]
VAR RequiredToday = [Base Requirement]
RETURN
    RequiredToday - OpeningStock

Separando la lógica base en [Requisito Base] y usando DATEADD() sobre la tabla de fechas, evitas la recursión y la dependencia circular desaparece.

Helpful resources

Announcements
Power BI DataViz World Championships

Power BI Dataviz World Championships

The Power BI Data Visualization World Championships is back! It's time to submit your entry.

January Power BI Update Carousel

Power BI Monthly Update - January 2026

Check out the January 2026 Power BI update to learn about new features.

FabCon Atlanta 2026 carousel

FabCon Atlanta 2026

Join us at FabCon Atlanta, March 16-20, for the ultimate Fabric, Power BI, AI and SQL community-led event. Save $200 with code FABCOMM.