Reply
Syndicate_Admin
Administrator
Administrator
Syndicated - Inbound

Autoreferencia de columna calculada en el período anterior

Source Community: Power BI | Source Author Name: case22

Para un poco de información sobre el problema, tengo datos mensuales con varios productos. Los productos pueden durar muchos meses y muchos productos pueden estar activos durante los mismos meses. Cada producto tiene un campo con una asignación máxima. Necesito extraer los valores para asignar de otra tabla y asignar estos valores a un producto hasta el punto en que se cumpla el máximo.

El problema con el que me encuentro son las dependencias circulares. Puedo crear una suma de ejecución de la asignación hasta el período anterior. No puedo hacer referencia a esta columna cuando intento extraer realmente los valores que se agregarían a la suma en ejecución a pesar de que es un período anterior. Construí lo siguiente en Excel para demostrar una versión más simple de lo que estoy tratando de replicar dentro de powerBI.

No puedo usar un índice porque la suma en ejecución está particionada por los diferentes productos y la fila indexada anterior podría ser un producto diferente. Cualquier sugerencia sería muy apreciada. ¡Gracias!

CuentaProductoFecha Cantidad máxima Cantidad mensual a asignar Cantidad asignada Suma de ejecución del mes anterior
Cuenta 1Producto 11/31/2021 40 10.0010=SI(H2<>
Cuenta 1Producto 12/28/2021 40 10.0010=SI(H3<>10=SUMA($F$2:F2)
Cuenta 1Producto 13/31/2021 40 10.0010=SI(H4<>20=SUMA($F$2:F3)
Cuenta 1Producto 14/30/2021 40 10.0010=SI(H5<>30=SUMA($F$2:F4)
Cuenta 1Producto 15/31/2021 40 10.000=SI(H6<>40=SUMA($F$2:F5)
Cuenta 1Producto 16/30/2021 40 10.000=SI(H7<>40=SUMA($F$2:F6)
Cuenta 1Producto 17/31/2021 40 10.000=SI(H8<>40=SUMA($F$2:F7)
Cuenta 1Producto 18/31/2021 40 10.000=SI(H9<>40=SUMA($F$2:F8)
Cuenta 1Producto 19/30/2021 40 10.000=SI(H10<>40=SUMA($F$2:F9)
Cuenta 1Producto 110/31/2021 40 10.000=SI(H11<>40=SUMA($F$2:F10)
1 ACCEPTED SOLUTION

Source Community: Power BI | Source Author Name: v-janeyg-msft
Syndicated - Inbound

En ella, @case22

Powerbi no admite la recursión, pero sus necesidades no son completamente recursivas, debe ser compatible.

¿Qué tal esto?

Allocated Quantity =
VAR TOTAL =
    SUMX (
        FILTER (
            Table,
            [Date] <= EARLIER ( Table[Date] )
                && [Product] = EARLIER ( Table[Product] )
        ),
        [Monthly Quantity to Assign]
    )
VAR maxquantity =
    MAXX (
        FILTER ( Table, [Product] = EARLIER ( Table[Product] ) ),
        [Max Quantity]
    )
RETURN
    IF ( TOTAL > maxquantity, 0, TOTAL )

Saludos
Equipo de apoyo a la comunidad _ Janey
Si esta publicación ayuda, por favor considere Acéptalo como la solución para ayudar a los otros miembros a encontrarlo más rápidamente.

View solution in original post

5 REPLIES 5
Syndicate_Admin
Administrator
Administrator

Source Community: Power BI | Source Author Name: amitchandak
Syndicated - Inbound

@case22 , En ejecución, suma una nueva columna

sumx(filter(Table, [Date] <= anterior([Date])) , [Cantidad asignada])

Source Community: Power BI | Source Author Name: case22
Syndicated - Inbound

Gracias por la respuesta. Necesito que esté ejecutando la suma antes de este mes y a nivel de producto. Puedo manipular el código que proporcionaste para obtener eso.

sumx(filter(Table, [Date] < anterior([Date]) && [Product] = Earlier([Product])) , [Cantidad asignada])

Sin embargo, el problema es que necesito verificar esta suma en ejecución dentro de la "Columna de asignación". Los dos trabajan juntos.

El código Psuedo para Asignación sería ...

Si la suma de ejecución < máximo permitida

a continuación, Cantidad mensual para asignar

más 0

Sin embargo, esta metodología me da un error de dependencia circular ya que la suma de ejecución es una derivación de la "Asignación" de los meses anteriores.

Source Community: Power BI | Source Author Name: v-janeyg-msft
Syndicated - Inbound

En ella, @case22

De acuerdo con su descripción, creo que puede crear una columna.

Así:

Allocated Quantity =
VAR TOTAL =
    SUMX (
        FILTER ( Table, [Date] <= EARLIER ( [Date] ) ),
        [Monthly Quantity to Assign]
    )
RETURN
    IF ( TOTAL > [Max Quantity], 0, TOTAL )

Saludos
Equipo de apoyo a la comunidad _ Janey
Si esta publicación ayuda, considere Aceptarla como la solución para ayudar a los otros miembros a encontrarla más rápidamente.

Source Community: Power BI | Source Author Name: case22
Syndicated - Inbound

Gracias por la respuesta. Esto no funciona, ya que solo duplicará [Cantidad mensual para asignar] cuando haya varios productos. Funcionará con los datos de ejemplo, pero como dije, puede haber múltiples productos por cuenta y fecha.

La fórmula que proporcionó es una suma en ejecución de una columna hasta cierto punto. Necesito un cálculo en el que la suma en ejecución del cálculo en sí no pueda exceder un cierto punto y no creo que power bi ofrezca ese nivel de recursividad. He llegado a la conclusión de que simplemente no tengo la flexibilidad para hacer esto dentro de power bi y escribí un script sql para calcularlo en el origen.

Source Community: Power BI | Source Author Name: v-janeyg-msft
Syndicated - Inbound

En ella, @case22

Powerbi no admite la recursión, pero sus necesidades no son completamente recursivas, debe ser compatible.

¿Qué tal esto?

Allocated Quantity =
VAR TOTAL =
    SUMX (
        FILTER (
            Table,
            [Date] <= EARLIER ( Table[Date] )
                && [Product] = EARLIER ( Table[Product] )
        ),
        [Monthly Quantity to Assign]
    )
VAR maxquantity =
    MAXX (
        FILTER ( Table, [Product] = EARLIER ( Table[Product] ) ),
        [Max Quantity]
    )
RETURN
    IF ( TOTAL > maxquantity, 0, TOTAL )

Saludos
Equipo de apoyo a la comunidad _ Janey
Si esta publicación ayuda, por favor considere Acéptalo como la solución para ayudar a los otros miembros a encontrarlo más rápidamente.

avatar user

Helpful resources

Announcements
Las Vegas 2025

Join us at the Microsoft Fabric Community Conference

March 31 - April 2, 2025, in Las Vegas, Nevada. Use code MSCUST for a $150 discount!

FebPBI_Carousel

Power BI Monthly Update - February 2025

Check out the February 2025 Power BI update to learn about new features.

March2025 Carousel

Fabric Community Update - March 2025

Find out what's new and trending in the Fabric community.

Top Solution Authors (Last Month)
Top Kudoed Authors (Last Month)