cancel
Showing results for 
Search instead for 
Did you mean: 
Reply
Syndicate_Admin
Administrator
Administrator

Cálculo de stock fantasma (stock >0 y ventas =0)

Hola
Tengo una configuración básica de mesa:
tblProducts (ProductID)
tblStores (StoreID)
tblData (StoreID, ProductID, Date, SOH, Sales)
tblCalendar (Fecha)

Estoy tratando de contar la línea (ProductID y StoreID). Que tienen más de cero SOH para la última fecha de datos y cero ventas en más de 50 días.

1 ACCEPTED SOLUTION
Syndicate_Admin
Administrator
Administrator

Finalmente pude hacer que este cálculo funcionara, usando CROSSJOIN. Otros métodos eran demasiado lentos.
Aquí está la medida, espero que sea capaz de ayudar a alguien más.

Phantom Stock = 
CALCULATE (
    SUMX (
        CROSSJOIN (
            VALUES ( tblProducts[ArticleCode] ),
            VALUES ( tblStores[StoreCode] )
        ),
        IF (
            [Stock on Hand Latest Date] > 0
                && [Volume Sales Total (X Days)] <= 0,
            [Stock on Hand Latest Date],
            BLANK ()
        )
    )
)


Aquí están las 2 medidas de apoyo.

Stock on Hand Latest Date = 
VAR _MaxDate = CALCULATE(MAX(tblCalendar[Date]),ALL(tblCalendar))
RETURN
    CALCULATE (
        [Stock on Hand Total],
        FILTER (
            tblCalendar,
            tblCalendar[Date] = _MaxDate
        )
    )


La variable llamada _Days, es solo una lista de días en semanas, (1 semana = 7, 2 semanas = 14, etc.)

Volume Sales Total (X Days) = 
VAR _CurrentDate = CALCULATE(MAX(tblCalendar[Date]),ALL(tblCalendar))
VAR _Days = max(sptWeeks[Days])
VAR _StartDate = _CurrentDate - _Days
RETURN
CALCULATE(
    [Volume Sales Total],
    FILTER(
        tblCalendar,
        tblCalendar[Date] > _StartDate && tblCalendar[Date] <= _CurrentDate
    )
)

View solution in original post

1 REPLY 1
Syndicate_Admin
Administrator
Administrator

Finalmente pude hacer que este cálculo funcionara, usando CROSSJOIN. Otros métodos eran demasiado lentos.
Aquí está la medida, espero que sea capaz de ayudar a alguien más.

Phantom Stock = 
CALCULATE (
    SUMX (
        CROSSJOIN (
            VALUES ( tblProducts[ArticleCode] ),
            VALUES ( tblStores[StoreCode] )
        ),
        IF (
            [Stock on Hand Latest Date] > 0
                && [Volume Sales Total (X Days)] <= 0,
            [Stock on Hand Latest Date],
            BLANK ()
        )
    )
)


Aquí están las 2 medidas de apoyo.

Stock on Hand Latest Date = 
VAR _MaxDate = CALCULATE(MAX(tblCalendar[Date]),ALL(tblCalendar))
RETURN
    CALCULATE (
        [Stock on Hand Total],
        FILTER (
            tblCalendar,
            tblCalendar[Date] = _MaxDate
        )
    )


La variable llamada _Days, es solo una lista de días en semanas, (1 semana = 7, 2 semanas = 14, etc.)

Volume Sales Total (X Days) = 
VAR _CurrentDate = CALCULATE(MAX(tblCalendar[Date]),ALL(tblCalendar))
VAR _Days = max(sptWeeks[Days])
VAR _StartDate = _CurrentDate - _Days
RETURN
CALCULATE(
    [Volume Sales Total],
    FILTER(
        tblCalendar,
        tblCalendar[Date] > _StartDate && tblCalendar[Date] <= _CurrentDate
    )
)

Helpful resources

Announcements
PBI Sept Update Carousel

Power BI September 2023 Update

Take a look at the September 2023 Power BI update to learn more.

Learn Live

Learn Live: Event Series

Join Microsoft Reactor and learn from developers.

Top Solution Authors