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

Register now to learn Fabric in free live sessions led by the best Microsoft experts. From Apr 16 to May 9, in English and Spanish.

Reply
Syndicate_Admin
Administrator
Administrator

Cálculo del nivel de stock

Hola

Recientemente he empezado a usar PowerBI.

Por favor, ayúdame con este cálculo DAX:

La cantidad disponible de un producto se registra en una tabla cada vez que cambia.

nivel de stock

cantidad de fecha del producto
Un 2020-01-01 1
B 2020-01-03 10
B 2020-02-02 15
Un 2020-02-03 0


resultado deseado: un calendario que muestra el nivel de stock (=cantidad de la última entrada por producto <= fecha) diaria

nivel de stock de fecha del producto
Un 2020-01-01 1
B 2020-01-01 0
Un 2020-01-02 1
B 2020-01-02 0
Un 2020-01-03 1
B 2020-01-03 10
... ... ...
Un 2020-02-25 0
B 2020-02-25 15
.. .. ..


Lo que intenté:

hizo una tabla de fechas "Fecha"

hizo estas medidas:

cantidad global = SUM(stock[cantidad])
cantidad por día = CALCULATE([Cantidad global],FILTER(ALLSELECTED('Date'[Date]),'Date'[Date]<=MAX('Date'[Date])))

Bien, esto resume la cantidad. No es exactamente lo que quiero.


Gracias por su ayuda

6 REPLIES 6
Syndicate_Admin
Administrator
Administrator

Convierta el valor seleccionado en una sola tabla de fila/una sola columna y, a continuación, haga la combinación cruzada con eso.

Sin embargo, computacionalmente no habrá ningún beneficio real.

Syndicate_Admin
Administrator
Administrator

7000x365 es 25 lakh - es lo que es.

No uses 365 días. Calcule los niveles de acciones semanales o mensuales. No uses medidas.

Hago cálculos similares en rangos de fechas y recuentos de unidades mucho más grandes, y hago todos estos cálculos en mi fuente de datos. El nivel de existencias del producto A el viernes pasado ya no cambia después del hecho, por lo que volver a compilarlo en una medida de Power BI es contraproducente, por decirlo bien.

Hola

¿Existe la posibilidad de hacer un "crossjoin virtual" para Date y un Producto en la medida?
Mi idea es generar un historial de nivel de stock solo para el producto seleccionado actualmente.
Con la esperanza de deshacerse de esa tabla grande Output=CROSSJOIN(Fechas,Productos)

probado esto - pero no está funcionando todavía ("Salida" no está permitido en este contexto...)

stock_current_product =

VAR selProduct=SELECTEDVALUE('Inventory'[product]) /*dropdown*/
Salida VAR=CROSSJOIN('Fechas',FILTRO(VALORES(Inventario[producto]),Inventario[producto]=selProduct))
VAR p =
MAX ( Salida[producto] )
VAR d =
MAX ( Salida[Fecha] )
VAR a =
CALCULAR (
MAX ( Inventario[fecha] ),
Inventario[fecha] <= d,
Inventario[producto] = p
)
VAR s =
IF (
ISBLANK ( a ),
0,
CALCULAR (
MAX ( Inventario[cantidad]),
Inventario[fecha] = a,
Inventario[producto] = p
)
)
devolución
s

Syndicate_Admin
Administrator
Administrator

Te mueves en la dirección correcta con la tabla de fechas. No conecte esa tabla al modelo de datos (ni haga que todas las conexiones estén inactivas, ni utilice CROSSFILTER(,,none) para un producto cartesiano).

Fechas=CALENDARIO("2020-01-01","2020-02-25")

Lo que debe hacer a continuación es cada fecha de esa tabla y cada producto para calcular una medida del inventario más reciente. Si desea llegar a la salida deseada que usted indica entonces recomendaría crear otra tabla de búsqueda

Productos = VALUES(Inventario[producto])
y luego para hacer el crossjoin entre los dos
Salida = CROSSJOIN(Fechas,Productos)
Esta tabla alimentará su objeto visual.
Lo último que hay que hacer es añadir la medida para el inventario

stock =
VAR p =
MAX ( Salida[producto] )
VAR d =
MAX ( Salida[Fecha] )
VAR a =
CALCULAR (
MAX ( Inventario[fecha] ) ,
Inventario[fecha] <= d,
Inventario[producto] = p
)
VAR s =
IF (
ISBLANK ( a ),
0,
CALCULAR (
MAX ( Inventario[cantidad] ) ,
Inventario[fecha] = a,
Inventario[producto] = p
)
)
devolución
s

A continuación se muestra el resultado, filtrado hasta sólo las fechas en las que algo está sucediendo
lbendlin_0-1614456035957.png

Oye, gran respuesta sobre el tema.
En realidad, estoy tratando de lograr el mismo resultado, pero estoy luchando para implementar su solución, ya que mi stock siempre es igual a 1.
Mi 'Nivel de stock' es su inventario, y seguí su lógica para productos, fechas y salida, pero sigo obteniendo el 1 en la columna de stock.

¿Crees que podrías ayudarme? Esto está un poco más allá de mi experiencia, lo admito.

Aquí está mi archivo de muestra:
https://drive.google.com/file/d/1UWVSCX03KW7LXU8YaRvgYVreMHhSLD_x/view?usp=sharing

¡¡¡Muchas gracias!!! Para mis datos de prueba funciona perfectamente.
Pero 7.000 productos y un intervalo de fechas de 365 días hacen que los cálculos sean muy lentos.

¿Tienes alguna idea de cómo optimizarlo?

Helpful resources

Announcements
Microsoft Fabric Learn Together

Microsoft Fabric Learn Together

Covering the world! 9:00-10:30 AM Sydney, 4:00-5:30 PM CET (Paris/Berlin), 7:00-8:30 PM Mexico City

PBI_APRIL_CAROUSEL1

Power BI Monthly Update - April 2024

Check out the April 2024 Power BI update to learn about new features.

April Fabric Community Update

Fabric Community Update - April 2024

Find out what's new and trending in the Fabric Community.