Cambio en el inventario del mes anterior al mes actual

Un usuario Pregunto ✅

zumbido1126

Hola chicos, he estado en los foros y otros temas y por alguna razón no puedo resolver esto.

Necesito calcular la diferencia entre el inventario del mes pasado y el inventario de este mes. Mi primer paso para resolver esto sería encontrar el inventario de los meses anteriores que supondría, por lo que a continuación se muestra mi intento de encontrar esa solución. Tengo un filtro mensual como segmentador donde puedo seleccionar un mes actual y espero que muestre el inventario de los meses anteriores.

El tipo de inventario que necesito encontrar es «Fin de mes» y el Producto es «Reparable 48×40»

Last Month Inventory = CALCULATE(sum(FactInventory[Inventory_Volume]),PREVIOUSMONTH(FactInventory[FiscalDate]))

imagen.png

cmmahan

En respuesta a zumbido1126

Ah, ese error. Entonces, por RAZONES, no puede usar funciones complejas en el CÁLCULO básico (EXPRESIÓN, [A]=B) sintaxis. En lo anterior, donde A es una columna en la que está filtrando, B puede ser cualquier valor establecido (como cero o ISBLANK()). En este caso, su B es una instrucción SELECTEDVALUE, que no está permitida. Sin embargo, esto es fácil de sortear. Si configuró su DateDim y lo marcó como una tabla de fechas mientras lo asociaba con su FactInventory, debería poder usar algo como esto:

Last Month Inventory = CALCULATE(
    SUM(FactInventory[Inventory_Volume]),
    FILTER(ALL(DimDate), 
DimDate[FiscalMonthNumber] = SELECTEDVALUE(DimDate[FiscalMonthNumber]) - 1 &&
DimDate[FiscalYear] = SELECTEDVALUE(DimDate[FiscalYear])
)
)

En cuanto a que el mes fiscal sea de tipo texto, ni siquiera lo estamos usando. Estamos usando específicamente FiscalMonthNumber para que podamos hacer matemáticas con él. Una vez más, todavía puede haber algo de funk con esta medida cuando se evalúa en el primer mes de un año fiscal.

cmmahan

PREVIOUSMONTH y muchas otras funciones de fecha y hora funcionan mejor cuando tiene una dimensión de fecha: https://radacad.com/do-you-need-a-date-dimension

Devuelven resultados extraños si no tiene datos para todos los días o varias entradas en el mismo día. Hago todo lo posible para no usarlos sin una dimensión de fecha.

Una vez que tenga una dimensión de fecha y la relacione con su tabla, su medida original debería funcionar así:

Last Month Inventory = CALCULATE(SUM(FactInventory[Inventory_Volume]), PREVIOUSMONTH(DateDim[Date]))

Si solo desea sumar valores en la categoría de fin de mes y del nombre de producto específico, su medida se vería así:

Last Month Inventory = CALCULATE(SUM(FactInventory[Inventory_Volume]), 
PREVIOUSMONTH(DateDim[Date]) &&
FactInventory[Type] = "Month End" &&
FactInventory[MainProductName]="Repairable 48x40")

Tenga en cuenta que si por alguna razón Ud. absolutamente no puedo crear una tabla de dimensión de fecha, puede usar la dimensión de fecha incorporada oculta dada a las columnas de fecha y hora de la siguiente manera:

Last Month Inventory = CALCULATE(SUM(FactInventory[Inventory_Volume]), PREVIOUSMONTH(FactInventory[Date].[Date]))

zumbido1126

En respuesta a cmmahan

¿Hay algún motivo por el que el Inventario del último mes muestre actualmente el mismo valor que el volumen de inventario del mes actual? También estamos en un programa fiscal 5/4/4, por lo que ya tenemos una tabla DimDate en nuestro sistema PowerBI. Entonces, a veces, el final del mes será la primera semana de marzo y la última semana de marzo, por lo que una fecha de calendario no funcionará.

Sin embargo, agregué la tabla Date() como se sugirió.

dimdate.PNGdimdate2.PNGFÓRMULA 2.PNGFÓRMULA.PNG

cmmahan

En respuesta a zumbido1126

Si ya tiene una tabla DimDate en su sistema, la reutilizaría en lugar de crear la suya propia, especialmente porque ya debería tener meses fiscales configurados. También el [Date] La tabla que describí en la parte inferior de mi última publicación ya existe para cada columna de fecha que cree, a menos que esté asociada con una dimensión de fecha. No debería tener que agregarlo manualmente.

PREVIOUSMONTH no funcionará con meses fiscales, solo funciona con meses calendario. Si está tratando de encontrar el mes fiscal anterior, busque el campo que indica el mes fiscal actual de una fecha determinada y encuentre el valor anterior a eso:

Last Month Inventory = CALCULATE(SUM(FactInventory[Inventory_Volume]), FactInventory[FiscalMonthNumber] = SELECTED(FactInventory[FiscalMonthNumber])-1 && FactInventory[FiscalYear] = SELECTEDVALUE(FactInventory[FiscalYear]))

Si no me equivoco, esto se volverá extraño cuando intente hacer cálculos en el primer mes del año fiscal, pero DAX no tiene una excelente manera de hacer cálculos de meses fiscales. Probablemente tendrá que usar algún tipo de instrucción IF para detectar ese caso extremo.

zumbido1126

En respuesta a cmmahan

Agradezco la ayuda, vi tu publicación anoche y realmente quería dedicar tiempo para intentar la solución con lo que me diste. Aunque todavía me falta una pieza.

Por lo tanto, la tabla FactInventory solo tiene una dimensión de fecha, FiscalDate (que se muestra a continuación) y está conectada a la tabla DimDate a través de FiscalDate. Me preocupa que la razón por la que esta solución no funcione es porque el mes fiscal es de tipo texto.

Captura 3.PNG

INVENTARIO DE FÁBRICA:

Captura.PNG

DIMDATE:

Captura 4.PNGCaptura 2.PNG

cmmahan

En respuesta a zumbido1126

Ah, ese error. Entonces, por RAZONES, no puede usar funciones complejas en el CÁLCULO básico (EXPRESIÓN, [A]=B) sintaxis. En lo anterior, donde A es una columna en la que está filtrando, B puede ser cualquier valor establecido (como cero o ISBLANK()). En este caso, su B es una instrucción SELECTEDVALUE, que no está permitida. Sin embargo, esto es fácil de sortear. Si configuró su DateDim y lo marcó como una tabla de fechas mientras lo asociaba con su FactInventory, debería poder usar algo como esto:

Last Month Inventory = CALCULATE(
    SUM(FactInventory[Inventory_Volume]),
    FILTER(ALL(DimDate), 
DimDate[FiscalMonthNumber] = SELECTEDVALUE(DimDate[FiscalMonthNumber]) - 1 &&
DimDate[FiscalYear] = SELECTEDVALUE(DimDate[FiscalYear])
)
)

En cuanto a que el mes fiscal sea de tipo texto, ni siquiera lo estamos usando. Estamos usando específicamente FiscalMonthNumber para que podamos hacer matemáticas con él. Una vez más, todavía puede haber algo de funk con esta medida cuando se evalúa en el primer mes de un año fiscal.

zumbido1126

En respuesta a cmmahan

¡Funciona! Gracias

zumbido1126

En respuesta a cmmahan

Gracias, absolutamente puedo construir una dimensión de fecha. Lo probaré rápido antes de marcarlo como solucionado.

Deja un comentario

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