Nasir_Arslan35
Hola comunidad de BI,
Tengo un conjunto de datos de aprox. 450k líneas de las que necesito mapear el historial de inventario. He usado el siguiente código para la medida y muestra valores precisos.
dedelman_clng
Hola @Nasir_Arslan35 –
Cree una tabla de fechas (usando CALENDARAUTO() o algo similar), luego establezca una relación entre la tabla de fechas y la Fecha del pedido. El DAX luego cambiaría para verse así, y debería obtener un valor para cada día: incluso a nivel de acciones individuales.
SOH = CALCULATE(
SUM('STOCK MAPPING'[Trans QTY]),
FILTER(
ALL(DateTab[Date),
(DateTab[Date])<=MAX(DateTab[Date])
)
)
Para el valor actual, es posible que desee crearlo como una columna calculada en la tabla de asignación de existencias, para que funcione en todos los niveles de agregación. Algo como:
//Calculated Column
Current Value = LOOKUPVALUE(ValueTable[Current Value], ValueTable[SKU], 'Stock Mapping'[SKU])
//Then your measure becomes
CALCULATE (
SUM ( 'Stock Mapping'[Trans QTY] * 'Stock Mapping'[Current Value] )
FILTER (ALL(DateTab), DateTab[Date] <= MAX(DateTab[Date])
)
Si esto no funciona para usted, comparta algunos datos de muestra, la estructura del modelo y/o el archivo pbix de muestra para obtener más ayuda.
Espero que esto ayude
David
islamabdelgany
Cuando filtro por producto y por tienda, da el último stock incluso antes de la fecha actual de SOH, entonces, ¿cómo podemos calcular todos los stocks de la última actualización incluso si filtramos por producto y minorista?
Intenté con removefilters/ALL funciona con el producto pero no funcionó con las ventas al por menor y me da fechas anteriores si la sucursal no tiene una fecha como la última actualización.
daxer-todopoderoso
Para los cálculos de fecha y hora, debe tener una tabla de fechas adecuada. Además, se debe evitar a toda costa almacenar todo dentro de una tabla grande. Hay demasiadas buenas razones para que esto se amplíe en este momento. Cree un buen modelo de esquema en estrella con una dimensión de fecha y hora y todo será mucho, mucho más fácil. Sin mencionar – mucho más rápido. Y DAX será mucho más legible/comprensible.
Cuando tenga la dimensión Fechas, puede escribir:
// 'Stock Mapping' should be a hidden fact table.
// 'Dates' should be a date dimension that joins to
// [Order Date] in Stock Mapping.
SOH =
var __maxOrderDate = MAX( 'Dates'[Date] )
var __result =
CALCULATE(
SUM( 'STOCK MAPPING'[Trans QTY] ),
// This code will work if 'Dates'
// is marked as a date table in
// the model. If it's not, then
// you have to add ALL( 'Dates' )
// as the last argument of CALCULATE.
'Dates'[Date] <= __maxOrderDate
)
RETURN
__result
dedelman_clng
Hola @Nasir_Arslan35 –
Cree una tabla de fechas (usando CALENDARAUTO() o algo similar), luego establezca una relación entre la tabla de fechas y la Fecha del pedido. El DAX luego cambiaría para verse así, y debería obtener un valor para cada día: incluso a nivel de acciones individuales.
SOH = CALCULATE(
SUM('STOCK MAPPING'[Trans QTY]),
FILTER(
ALL(DateTab[Date),
(DateTab[Date])<=MAX(DateTab[Date])
)
)
Para el valor actual, es posible que desee crearlo como una columna calculada en la tabla de asignación de existencias, para que funcione en todos los niveles de agregación. Algo como:
//Calculated Column
Current Value = LOOKUPVALUE(ValueTable[Current Value], ValueTable[SKU], 'Stock Mapping'[SKU])
//Then your measure becomes
CALCULATE (
SUM ( 'Stock Mapping'[Trans QTY] * 'Stock Mapping'[Current Value] )
FILTER (ALL(DateTab), DateTab[Date] <= MAX(DateTab[Date])
)
Si esto no funciona para usted, comparta algunos datos de muestra, la estructura del modelo y/o el archivo pbix de muestra para obtener más ayuda.
Espero que esto ayude
David