funcion dax para calcular stok incial por fecha

que funcion me sireve para calcular un stock inicial a determinada fecha?

ej el 1/1/19 tengo 

tornillos:200

tuercas 604

en junio se vendieron 150 tornillos y 4 tuercas.

la planilla sigue sumando info  pero solo movimientos, quiero saber mi stock inicial al 1/7/19

GRacias!

Hola Enrique,

Si tu columna incluye solo los movimientos (incrementos o decrementos de tu métrica) puedes tener una métrica básica que sume dicha métrica:

Valor = SUM(data[Métrica])

(aquí presupongo que tu tabla se llama "data" y tu campo con la métrica se llama "Métrica")

Otra que acumule dicha métrica en el tiempo, algo como:

Acumulado = 
    CALCULATE(
        [Valor],
        DATESBETWEEN(
            'Calendar'[Date],
            FIRSTDATE(ALL('Calendar'[Date])),
            LASTDATE(data[Fecha])
        )
    )

(aquí presupongo que el calendario se llama Calendar y que el campo de tu tabla que contiene la fecha es data[Fecha])

Y finalmente calcular el "balance" a principio de cada mes con la función OPENINGBALANCEMONTH:

Opening Month Balance = 
    OPENINGBALANCEMONTH(
        [Acumulado],
        'Calendar'[Date]
    )

No tengo ningún escenario en el que use esta función, voy a crear uno con este mismo ejemplo.

Un saludo

Daniel

Hola Daniel, tu escenario funciona perfectamente, muchas gracias por compartirlo. La tabla de abajo muestra el comportamiento con mi modelo de datos.

Tengo el stock de cierre por SKU al 31-12-2018, con la funcion OPENINGBALANCEMONTH calculo el stock de incio para enero de 2019 y con la medida de Cantidad acumulada calculo stock de cierre para ese periodo, se repite cada mes para ver el nivel de actividad del almacén, Al llegar a Octubre de 2020 me muestra el stock actual que tengo en mi bodega. Genial.

Existe alguna alternativa para hacer esto mismo pero por día? Seria como utilizar OPENINGBALANCEDAY, la cual no existe desafortunamente.

Quedo atento, gracias!

 

 

Hola Jonathan,

Las funciones OPENINGBALANCEXXX tienen utilidad cuando el contexto actual es... el que sea (por ejemplo, la segunda semana de un mes), y queremos transformarlo para que apunte al primer día de dicho mes. Es ese tipo de transformación que da nombre a la categoría de funciones a la que pertenecen ("inteligencia de tiempo"). Sin estas funciones sería muy complicado transformar el contexto temporal actual a otros.

Pero si el contexto ya es el día, entonces no necesitas transformar nada. Basta con que calcules tu expresión para el día que te interese. La función OPENINGBALANCEDAY no tendría mucha utilidad (me temo), solo serviría para calcular una expresión "para el primer día de un día dado" (es decir, el mismo día).

Un saludo

Daniel Burrueco

Gracias Daniel! 

Es efectivamente como tu dices, al final logre hacerlo con la siguiente expreción

Stock Inicial diario = CALCULATE([Stock Final],DATEADD(Calendario[Date],-1,DAY))

El Stock Final = Acumulado, que tu indicaste mas arriba

" Acumulado = 
    CALCULATE(
        [Valor],
        DATESBETWEEN(
            'Calendar'[Date],
            FIRSTDATE(ALL('Calendar'[Date])),
            LASTDATE(data[Fecha])
        )
    )  "

Esta expreción se acumula día por día, por lo que mi stock inicial diario sera = al stock final del día anterior, el cual obtengo con DATEADD.

Saludos!

Enviado por ENRIQUE PINEDO el Vie, 31/07/2020 - 00:12