RASTREO DE EXISTENCIAS DISPONIBLES Y CÁLCULO DE VALOR

Un usuario Pregunto ✅

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.

SO = CALCULAR(
SUM(‘ASIGNACIÓN DE EXISTENCIAS'[Trans QTY]),
FILTRAR(
ALL(‘MAPEO DE EXISTENCIAS'[Order Date]),
(‘MAPEO DE STOCK'[Order Date])<=MAX('MAPEO DE EXISTENCIAS'[Order Date])
)
)
Sin embargo, para SKU individuales, los valores de existencias solo se completan con las fechas en las que se registraron las transacciones. En segundo lugar, necesito crear una medida variable donde el stock disponible en cada fecha entre 2009 y el presente se multiplique por un costo unitario estándar (el actual de una tabla diferente).
Cualquier sugerencia por favor.
Saludos,

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

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *