The ultimate Fabric, Power BI, SQL, and AI community-led learning event. Save €200 with code FABCOMM.
Get registeredEnhance your career with this limited time 50% discount on Fabric and Power BI exams. Ends August 31st. Request your voucher.
Estimados, en base a la imagen adjunta requiero lo siguiente:
- A través de DAX, agregar una columna adicional que vaya mostrando el stock remanente por cada producto.
- Como ven, la tabla tiene varios productos. Cada producto tiene como primera linea el Stock Inicial. A partir de este stock inicial, necesito ir restando la demanda y sumando las entradas de inventario que tenga.
Por ejemplo:
El producto 1005304 tiene stock inicial de 16.620 unidades. Necesito que el stock remanente de Enero sea el stock inicial (16.620) - Demanda Enero (4.984) = 11.636.
Luego el stock de Febrero sea el Stock de cierre del mes anterior (11.636) - Demanda Febrero (1.650) = 9.986.
Además debe incorporar como Stock, las entradas de inventario de los meses futuros.
Esto quiere decir, que considerando el mismo producto y la imagen arriba, el stock de cierre de Marzo sera = Stock Cierre Febrero + Entrada Stock Marzo - Demanda de Marzo.
Agradezco vuestro apoyo.
Estimado @v-yilong-msft , gracias por su respuesta.
Se parece, pero no es lo mismo.
Aquí les comparto lo que necesito. Teniendo en cuenta la imagen a continuación, necesito la columna "Stock final" en PBI.
como puedes notar, la primera fila de cada producto es el Stock Inicial. Luego, el "Stock Final" es sumar la oferta de nuevo stock menos la demanda.
Espero que esto se aclare.
Gracias de antemano.
¿Por qué no tuvo en cuenta el valor de 750 en el cálculo del mes de marzo?
Hola @SachinNandanwar veo que se considera.
El "Stock Final" de Marzo es = Stock Final de Febrero (9.986) - Demanda de Marzo (5.700) + Oferta (750) = 5.036.
Oh. Es decir, 0,750 y no 750
Todos los datos están en miles de unidades 😉
Necesita indexar sus registros. Si nos fijamos en las tres primeras filas tenemos las fechas 29-02-2024, 30-03-2024 seguidas de otra 29-02-2024.
El DAX considerará primero el orden de los dos registros del 29-02-2024 y luego considerará el 30-03-2024 en su cálculo.
Eche un vistazo a estos datos de muestra y sus resultados >>>
Código,Fecha,Año,Demanda,Oferta,SelecciónActivado
1,29-02-2024,2024,0,16620,M01/2024
1,30-01-2024,2024,4984,0,M02/2024
1,29-02-2024,2024,1650,0,M03/2024
1,30-03-2024,2024,5700,750,M04/2024
1,30-04-2024,2024,4950,8875,M05/2024
FinalStock = CALCULATE(SUM('Table'[Supply])-SUM('Table'[Demand]),ALLEXCEPT('Table','Table'[Date]),'Table'[Date]<=MAX('Table'[Date]))
Eche un vistazo a la salida después de agregar una columna de índice.
Datos de muestra >>
Índice.Código,Fecha,Año,Demanda,Oferta,SelecciónOn
1,1,29-02-2024,2024,0,16620,M01/2024
2,1,30-01-2024,2024,4984,0,M02/2024
3,1,29-02-2024,2024,1650,0,M03/2024
4,1,30-03-2024,2024,5700,750,M04/2024
5,1,30-04-2024,2024,4950,8875,M05/2024
FinalStock = CALCULATE(SUM('Table'[Supply])-SUM('Table'[Demand]),ALLEXCEPT('Table','Table'[Index]),'Table'[Index]<=MAX('Table'[Index]))
Supongo que es similar a lo que quieres
Gracias @SachinNandanwar .
¿Cómo manejo los índices?. debería definirse por producto?.
Hola @Crisvilla88 ,
Tendría que crearlos probablemente en función de la columna de material/producto, asegurándose de que el perdiod/sección que tiene un valor "Stock" siempre se asigne con el valor 1 y el resto de los registros se incrementen en 1 según el orden del mes y el año.
Caro
Lo intento pero parece que algo va mal
Comparta algunos datos de muestra o el archivo PBI.
Espero que esto funcione, porque no tengo acceso para compartir el archivo PBI aquí
https://drive.google.com/file/d/1KJ3dsKpW5lR06NIStx2LVwnYC_ouZ28E/view?usp=drive_link
Dice acceso denegado.
Arrepentido. ¿Podría intentarlo de nuevo, por favor?
https://drive.google.com/file/d/1KJ3dsKpW5lR06NIStx2LVwnYC_ouZ28E/view?usp=drive_link
Hola @Crisvilla88 ,
Solo estaba echando un vistazo a su archivo. Puede reemplazar ALLEXCEPT por ALLSELECTED. Su requisito inicial no mencionaba que filtraría por códigos
F.stock = CALCULATE(SUM('Proyección'[Supply])-SUM('Proyección'[Demand]),ALLSELECTED('Proyección'[Index]),'Proyección'[Index]<=MAX('Proyección'[Index]))
¡Sí!, me gustaría filtrar códigos, y luego agregar familia, y subfamilia entonces.
Lo intento con ALLSELECTED, pero no funciona. Funciona añadiendo 'Proyección' en la función ALLEXCEPT.
Hago esto porque quiero estimar el stock final de cada mes y verlo en un gráfico.
El problema que veo, es que el PBI muestra que el stock final de Mach es 8.966.609, pero en realidad es 7.225.012.
He descargado la tabla del PBI en un fichero CSV, y si sumas el stock final, no puedes la diferencia.
PBI: https://drive.google.com/file/d/1KJ3dsKpW5lR06NIStx2LVwnYC_ouZ28E/view?usp=drive_link
CSV: https://drive.google.com/file/d/1rQdUxAbG5Q1mJ8AmvrQrHVUYSpWl93JL/view?usp=drive_link
Debe agregar un índice a sus registros para una identificación única. Si nos fijamos en las tres primeras filas, tenemos las fechas 29-02-2024, 30-03-2024, seguidas de otra 29-02-2024.
DAX considerará que los dos registros del 29-02-2024 son iguales a menos que haya una forma de identificarlos como no únicos.
Echa un vistazo a estos datos de muestra
Código,Fecha,Año,Demanda,Oferta,SelecciónActivado
1,29-02-2024,2024,0,16620,M01/2024
1,30-01-2024,2024,4984,0,M02/2024
1,29-02-2024,2024,1650,0,M03/2024
1,30-03-2024,2024,5700,750,M04/2024
1,30-04-2024,2024,4950,8875,M05/2024
FinalStock = CALCULATE(SUM('Table'[Supply])-SUM('Table'[Demand]),ALLEXCEPT('Table','Table'[Date]),'Table'[Date]<=MAX('Table'[Date]))
Compruebe la salida.
Ahora, después de agregar una columna de índice .
Ejemplos de datos a continuación >>
Índice,Código,Fecha,Año,Demanda,Oferta,SelecciónOn
1,1,29-02-2024,2024,0,16620,M01/2024
2,1,30-01-2024,2024,4984,0,M02/2024
3,1,29-02-2024,2024,1650,0,M03/2024
4,1,30-03-2024,2024,5700,750,M04/2024
5,1,30-04-2024,2024,4950,8875,M05/2024
El Dax es capaz de identificarlos como filas separadas independientemente de los meses únicos
FinalStock = CALCULATE(SUM('Table'[Supply])-SUM('Table'[Demand]),ALLEXCEPT('Table','Table'[Index]),'Table'[Index]<=MAX('Table'[Index]))
Hola @Crisvilla88 ,
Creo una mesa como mencionaste.
A continuación, creo una columna calculada.
Column =
200
- CALCULATE (
SUM ( 'Table'[Total] ),
FILTER (
ALLSELECTED ( 'Table' ),
'Table'[Number] = EARLIER ( 'Table'[Number] )
&& 'Table'[Name] <= EARLIER ( 'Table'[Name] )
)
)
Saludos
Yilong Zhou
Si esta publicación ayuda, considere Acéptalo como la solución para ayudar a los demás miembros a encontrarlo más rápidamente.