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

Earn a 50% discount on the DP-600 certification exam by completing the Fabric 30 Days to Learn It challenge.

Reply
Anonymous
Not applicable

Dax para calcular el inventario obsoleto

Estoy buscando una fórmula DAX que devolverá el valor del inventario que no ha tenido ninguna venta en los últimos 365 días. Tengo una medida para el valor de inventario, y tengo una columna con la fecha de la última venta. También tengo una tabla de fechas separada vinculada.

Lo que necesito devolver es el valor y la cantidad de sólo aquellos artículos que no se han vendido en los últimos 365 días.

¡Gracias!

13 REPLIES 13
amitchandak
Super User
Super User

@dzielke , Crear esta fórmula

Rolling 12 - CALCULATE(sum(Sales[Sales[Sales Amount]),DATESINPERIOD('Date'[Date],ENDOFMONTH(Sales[Sales Date]),-12,MONTH))+0

O

Rolling 12 - CALCULATE(sum(Sales[Sales[Sales Amount]),DATESINPERIOD('Date'[Date],MAX(Sales[Sales]),-12,MONTH))+0

A continuación, filtre por 0 y en blanco

si es necesario habilitar esta opción en el elemento - Mostrar elemento sin datos

ShowItemwithoutdata.JPG

Anonymous
Not applicable

@amitchandak : Aceptó la medida. ¡Gracias! Pero tengo curiosidad de lo que hace el "+0" al final? ¿Cuál es su función?

Anonymous
Not applicable

Así que hay dos maneras que vienen a la mente para hacer esto.

1) Agregue un atributo a su tabla de fechas llamado "En los últimos 365 días" y devuelva Sí si la fecha está en los últimos 365 días. El DAX sería algo así como IF( date[date]+365 > TODAY(),"Yes","No"). A continuación, relaciona su tabla de fechas con su "fecha de la última venta" en su tabla de artículos. A continuación, puede exponer la medida de inventario directamente y filtrarla como considere adecuado para obtener el valor de inventario obsoleto.

2) Puede agregar este atributo directamente a la tabla de artículos de inventario en su lugar. es decir, IF( iventoryitem[fecha de la última venta]+365 > HOY(),"Sí","No"). A continuación, puede crear una medida, es decir, SUM(inventoryitem[sales], FILTER(inventoryitem, inventoryitem[saleslast365days] - "No") y hacer referencia directamente.

Feliz de ayudar con más específico si eso no funciona.

Anonymous
Not applicable

Cantidad de inventario en movimiento lento Cantidad á SUM('Inventory Levels'[Qty On Hand],FILTER('Inventory Levels','Inventory Levels'[Slow Moving Inventory]''No"))
¿Recibo el error de que se pasaron demasiados argumentos a la función sum?
Anonymous
Not applicable

Error de novato por mí. Debe ajustar la función SUM en calculate.

Cantidad de inventario en movimiento lento ?
CALCULAR (
SUM ( 'Inventory Levels'[Qty On Hand] ),
FILTRO ( 'Niveles de inventario', 'Niveles de inventario'[Inventario en movimiento lento] - "No" )
)

Anonymous
Not applicable

@toolatejake : Gracias voy a probar eso también!

Anonymous
Not applicable

@dzielke : la ventaja de lo que @amitchandak publicado es que si aplica un filtro a su fecha de finalización, la suma de la actividad de ventas se actualizará dinámicamente al período final de 12 meses basado en una fecha de finalización dinámica frente a mi solución que se fija en HOY(). Si usted está utilizando esta medida con la gente de finanzas, yo recomendaría NO tener que sea dinámico, ya que se meterse con los filtros dan un resultado incorrecto, pero YMMV.

Anonymous
Not applicable

@toolatejake : No necesito tenerlo bloqueado a períodos financieros específicos, así que creo que esto funcionará. Básicamente, mi entendimiento es que cada vez que uso su método en un objeto visual, mirará hacia atrás para ver si la fecha de la última venta es en cualquier momento más grande que hace 365 días. Sin embargo, la pregunta es, ¿la columna de atributos que responde sí o no se actualiza cada vez con nuevas respuestas?

Anonymous
Not applicable

Es una buena pregunta. Creo que la columna DAX es dinámica dentro de powerBI, lo que significa que calcula cada vez que se interactúa con ella. Este entendimiento se confirma aquí - https://www.blue-granite.com/blog/understanding-the-differences-between-calculated-columns-measures-...

"Con las columnas calculadas, los datos de la columna se almacenan en la base de datos en memoria xVelocity, lo que significa que se realiza un cálculo antes de que el usuario lo vea."

Anonymous
Not applicable

@toolatejake @amitchandak : Caballeros, he probado ambos métodos y cuando extraito los resultados en una matriz I y traigo en la fecha de la última venta, estoy recibiendo artículos que se han vendido en los últimos 12 meses. ¿Qué estoy haciendo mal?

Anonymous
Not applicable

Publique las dos fórmulas DAX para...

1) Cálculo si un artículo está activo o no (en la tabla de artículos de inventario)

2) Sumando la cantidad de ventas en el último año para un artículo de inventario específico

Debería ser muy obvio una vez que lo hagas 🙂

Anonymous
Not applicable

@toolatejake Esta es la fórmula de columna de atributo que utilicé para devolver los resultados correctos:

Inventario en movimiento lento - VAR hoy en día - HOY()
VAR daysnosale - ABS (DATEDIFF(today,'Inventory Levels'[Fecha de la última venta],DAY))
VAR slowmove ? IF(daysnosale>365 ? 'Niveles de inventario'[Fecha de la última venta]-BLANK(),"Sí","No")
Retorno lentomove
Una vez que creé esto, pude calcular fácilmente los valores deseados y obtener las respuestas correctas. Gracias por toda su ayuda porque realmente me señaló en la dirección correcta!
Anonymous
Not applicable

lo clavaste. ¡Buen trabajo!

Helpful resources

Announcements
RTI Forums Carousel3

New forum boards available in Real-Time Intelligence.

Ask questions in Eventhouse and KQL, Eventstream, and Reflex.

LearnSurvey

Fabric certifications survey

Certification feedback opportunity for the community.