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.
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 -
Clave | Pedido válido hasta la fecha | cantidad de pedido | En 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) |
1 | 22-09-2020 | 10 | 30 | 0 | 30 | 10 |
1 | 23-09-2020 | 15 | 30 | 10 | 20 | 15 |
1 | 24-09-2020 | 20 | 30 | 25 | 5 | 5 |
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 -
Clave | Pedido válido hasta la fecha | cantidad de pedido |
1 | 22-09-2020 | 10 |
1 | 23-09-2020 | 15 |
1 | 24-09-2020 | 20 |
en la mesa de tránsito -
Clave | fecha prevista de alcanzar | Cantidad en el envío |
1 | 21-09-2020 | 30 |
1 | 25-09-2020 | 40 |
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?
Hola @powerbihelp1245 ,
Usé los siguientes datos de ejemplo.
tabla de pedidos:
KEYOrden válido hasta la cantidad del pedido de fecha
1 | 9/22/2020 | 10 |
1 | 9/23/2020 | 25 |
1 | 9/24/2020 | 20 |
en la tabla de tránsito:
KeyQuanity en el envíocuado fecha de llegar
1 | 30 | 9/21/2020 |
1 | 20 | 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.
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.
permítanme probarlo. Me pondremos en su lugar para que me pongas en cuenta.
@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])
@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 -
Clave | Pedido válido hasta la fecha | cantidad de pedido | En 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) |
1 | 22-09-2020 | 10 | 30 | 0 | 30 | 10 |
1 | 23-09-2020 | 25 | 30 | 10 | 20 | 20 |
1 | 24-09-2020 | 20 | 30 | 35 | -5 (?) | -5 |
mientras que en realidad debería aparecer así -
Clave | Pedido válido hasta la fecha | cantidad de pedido | En 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) |
1 | 22-09-2020 | 10 | 30 | 0 | 30 | 10 |
1 | 23-09-2020 | 25 | 30 | 10 | 20 | 20 |
1 | 24-09-2020 | 20 | 30 | 30 | 0 | 0 |
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?
Consulte los siguientes datos y la salida esperada y el resultado que darán sus medidas -
Clave | Pedido válido hasta la fecha | cantidad de pedido |
1 | 22-09-2020 | 10 |
1 | 23-09-2020 | 25 |
1 | 24-09-2020 | 20 |
Clave | fecha prevista de alcanzar | Cantidad en el envío |
1 | 21-09-2020 | 30 |
1 | 24-09-2020 | 20 |
producción esperada -
Clave | Pedido válido hasta la fecha | cantidad de pedido | total_qty | used_stock | avail_stock | Serviced |
1 | 22-09-2020 | 10 | 30 | 0 | 30 | 10 |
1 | 23-09-2020 | 25 | 30 | 10 | 20 | 20 |
1 | 24-09-2020 | 20 | 50 | 30 | 20 | 20 |
sus medidas de producción -
Clave | Pedido válido hasta la fecha | cantidad de pedido | total_qty | used_stock | avail_stock | Serviced |
1 | 22-09-2020 | 10 | 30 | 0 | 30 | 10 |
1 | 23-09-2020 | 25 | 30 | 10 | 20 | 20 |
1 | 24-09-2020 | 20 | 50 | 35 | 15 | 15 |
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.
@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
Covering the world! 9:00-10:30 AM Sydney, 4:00-5:30 PM CET (Paris/Berlin), 7:00-8:30 PM Mexico City
Check out the April 2024 Power BI update to learn about new features.
User | Count |
---|---|
1 | |
1 | |
1 | |
1 | |
1 |