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

Register now to learn Fabric in free live sessions led by the best Microsoft experts. From Apr 16 to May 9, in English and Spanish.

Reply
Anonymous
Not applicable

solución alternativa para el cálculo recursivo de mi medida dax?

Hola

Tengo 2 tablas en pedidos con la fecha de validez del pedido y en stock de tránsito (stock que llega a donde se atenderá el pedido).

(utilizando datos de muestra para simplificar la comprensión)
Estoy buscando un cálculo final como este en mi mesa final -

ClavePedido válido hasta la fechacantidad de pedidoEn tránsito stock que llegue antes de esta fecha(total_qty)pedidos acumulados cubiertos antes de esta fecha(used_stock)Stock alcanzado que no se ha agotado(avail_stock)cantidad de pedido de esta fecha atendida (con servicio)
122-09-2020103003010
123-09-20201530102015
124-09-202020302555

He hecho el cálculo hasta la columna 4 en power BI

si esto fuera en Excel simplemente podría haber hecho
used_stock(2) - serviced(1) + used_stock(1)
avail_stock(2) á total_qty(2) - used_stock(2)
atendidos(2) a min(orden(2),avail_stock(2))


Mis tablas base se ven así -
tabla de pedidos -

ClavePedido válido hasta la fechacantidad de pedido
122-09-202010
123-09-202015
124-09-202020


en la mesa de tránsito -

Clavefecha prevista de alcanzarCantidad en el envío
121-09-202030
125-09-202040


He realizado el cálculo de medida total_qty buscando la suma acumulada de la cantidad de envío para las fechas anteriores al valor seleccionado de la fecha de validez del pedido.

Estoy tratando de hacer el resto de las medidas, pero terminando en referencias circulares. ¿Hay alguna manera de hacerlo?

7 REPLIES 7
v-stephen-msft
Community Support
Community Support

Hola @powerbihelp1245 ,

Usé los siguientes datos de ejemplo.

tabla de pedidos:

KEYOrden válido hasta la cantidad del pedido de fecha

19/22/202010
19/23/202025
19/24/202020

en la tabla de tránsito:

KeyQuanity en el envíocuado fecha de llegar

1309/21/2020
120

9/24/2020

Cree estas medidas.

total_qty = 
CALCULATE (
    SUM ( 'in transit table'[Quanity in shipment] ),
    FILTER (
         'in transit table' ,
        [expected date of reaching] <= MAX ( 'order table'[Order valid till Date] )
    )
)
used_stock = 
VAR _Calc =
    CALCULATE (
        SUM ( 'order table'[order quantity] ),
        FILTER (
            ALL ( 'order table' ),
            [Order valid till Date] < MAX ( 'order table'[Order valid till Date] )
        )
    )
VAR _Quanity =
    CALCULATE (
        SUM ( 'in transit table'[Quanity in shipment] ),
        FILTER (
             'in transit table' ,
            [expected date of reaching] < MAX ( 'order table'[Order valid till Date] )
        )
    )
RETURN
    IF ( _Calc + 0 > _Quanity, _Quanity, _Calc + 0 )
avail_stock = 
[total_qty] - [used_stock]
serviced = 
MIN ( MAX ( 'order table'[order quantity] ), [avail_stock] )

El resultado es este.

5.png

Puede consultar más detalles desde aquí.

Saludos

Stephen Tao

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

Anonymous
Not applicable

permítanme probarlo. Me pondremos en su lugar para que me pongas en cuenta.

Greg_Deckler
Super User
Super User

@powerbihelp1245 - Véase pbIX adjunto a continuación sig, Tabla 2, 2a y 2b. En la página 2. Creé las siguientes medidas:

total_qty = SUMX(FILTER(RELATEDTABLE('Table (2a)'),[expected date of reaching]<MAX([Order valid till Date])),[Quanity in shipment])


used_stock = 
    VAR __Date = MAX([Order valid till Date])
    VAR __Calc = SUMX(FILTER(ALL('Table (2)'),[Order valid till Date]<__Date),[order quantity])
RETURN
    __Calc+0


avail_stock = [total_qty] - [used_stock]


serviced = MIN(MAX([order quantity]),[avail_stock])


@ me in replies or I'll lose your thread!!!
Instead of a Kudo, please vote for this idea
Become an expert!: Enterprise DNA
External Tools: MSHGQM
YouTube Channel!: Microsoft Hates Greg
Latest book!:
The Definitive Guide to Power Query (M)

DAX is easy, CALCULATE makes DAX hard...
Anonymous
Not applicable

@Greg_Deckler muchas gracias por su respuesta.

(editar 2 - en resumen, el stock usado debe ser la suma de los pedidos atendidos en lugar de la suma de los pedidos, lo que dará lugar a una dependencia circular)

Sin embargo, estas medidas sólo me darán el resultado correcto para estos datos en los que los pedidos eran menores que el stock disponible. Si el pedido es mayor que el stock disponible, su sumx para calcular el stock usado será incorrecto, ya que el stock usado sólo debe ser la suma de min(order,available stock) y no sólo la suma de la cantidad de pedido como used_stock no puede ser mayor que el stock disponible.

Por ejemplo, si los datos tenían el segundo pedido como 25 en lugar de 15, sus medidas mostrarán -

ClavePedido válido hasta la fechacantidad de pedidoEn tránsito stock que llegue antes de esta fecha(total_qty)pedidos acumulados cubiertos antes de esta fecha(used_stock)Stock alcanzado que no se ha agotado(avail_stock)cantidad de pedido de esta fecha atendida (con servicio)
122-09-2020103003010
123-09-20202530102020
124-09-2020203035-5 (?)-5

mientras que en realidad debería aparecer así -

ClavePedido válido hasta la fechacantidad de pedidoEn tránsito stock que llegue antes de esta fecha(total_qty)pedidos acumulados cubiertos antes de esta fecha(used_stock)Stock alcanzado que no se ha agotado(avail_stock)cantidad de pedido de esta fecha atendida (con servicio)
122-09-2020103003010
123-09-20202530102020
124-09-202020303000



Básicamente, el sumx en stock usado debe estar en min(cantidad de pedido, avail_stock), pero esto da lugar a un error de dependencia circular.

Todavía podríamos manejar estos -5 haciéndolo cero si el resultado es negativo, pero si un nuevo envío llega en 24-09 se estropeará el avail_stock ya que entonces agregará un erronous -5.

(editar - Sólo fyi, las órdenes no se llevan adelante, sólo son válidas hasta la fecha de validez mencionada)



@powerbihelp1245 No está claro en esto. Parecía que estaba recibiendo todas las respuestas correctas. ¿Quizás podría proporcionar un conjunto ampliado de datos de muestra y resultados esperados?


@ me in replies or I'll lose your thread!!!
Instead of a Kudo, please vote for this idea
Become an expert!: Enterprise DNA
External Tools: MSHGQM
YouTube Channel!: Microsoft Hates Greg
Latest book!:
The Definitive Guide to Power Query (M)

DAX is easy, CALCULATE makes DAX hard...
Anonymous
Not applicable

Consulte los siguientes datos y la salida esperada y el resultado que darán sus medidas -

ClavePedido válido hasta la fechacantidad de pedido
122-09-202010
123-09-202025
124-09-202020

Clavefecha prevista de alcanzarCantidad en el envío
121-09-202030
124-09-202020

producción esperada -

ClavePedido válido hasta la fechacantidad de pedidototal_qtyused_stockavail_stockServiced
122-09-2020103003010
123-09-20202530102020
124-09-20202050302020

sus medidas de producción -

ClavePedido válido hasta la fechacantidad de pedidototal_qtyused_stockavail_stockServiced
122-09-2020103003010
123-09-20202530102020
124-09-20202050351515

Una vez más tenga en cuenta que sólo quiero el cálculo correcto de la medida con servicio, el descanso es sólo la lógica intermedia construida por mí. Por lo tanto, estoy abierto a una lógica diferente para llegar a la columna con servicio.

Anonymous
Not applicable

@Greg_Deckler

para cualquiera que intente resolver esto, sólo quiero el cálculo correcto de la columna con servicio, las columnas de descanso son intermedias creadas por mí como lógica. Si hay otra lógica elegante para llegar a la columna con servicio, eso sería brillante, ya que parece que mi lógica inevitablemente resultará en una dependencia circular

Helpful resources

Announcements
Microsoft Fabric Learn Together

Microsoft Fabric Learn Together

Covering the world! 9:00-10:30 AM Sydney, 4:00-5:30 PM CET (Paris/Berlin), 7:00-8:30 PM Mexico City

PBI_APRIL_CAROUSEL1

Power BI Monthly Update - April 2024

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

April Fabric Community Update

Fabric Community Update - April 2024

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