Join us at FabCon Atlanta from March 16 - 20, 2026, for the ultimate Fabric, Power BI, AI and SQL community-led event. Save $200 with code FABCOMM.
Register now!The Power BI Data Visualization World Championships is back! It's time to submit your entry. Live now!
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]
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:
Muchas gracias de antemano por cualquier ayuda que me hayas podido.
Solved! Go to Solution.
Gracias a todos por vuestra ayuda, pero en mi caso no parece posible.
Gracias a todos por vuestra ayuda, pero en mi caso no parece posible.
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.
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
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
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.
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.
¡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.
The Power BI Data Visualization World Championships is back! It's time to submit your entry.
Check out the January 2026 Power BI update to learn about new features.