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

Nivel de stock inicial

Hola

Me gustaría pedir ayuda con el siguiente problema.

Datos de muestra

Id. del artículo: fecha de stock

1 10 2022.12.12. 1
1 14 2022.12.14 2
1 7 2022.12.14 3
1 18 2022.12.16 4

Tengo un filtro de fecha (el usuario puede cambiarlo) y una matriz. Me gustaría ver el nivel de stock inicial, basado en el filtro de fecha (fecha mínima). Si hay más registros en la misma fecha, el último ID decide el nivel de stock correcto.

Resultado previsto:

Filtro de fecha establecido en 2022.12.12 - 2022.12.16 --> Stock 10
Filtro de fecha establecido en 2022.12.14 - 2022.12.14 --> Stock 7 (misma fecha, ID diferente)
Filtro de fecha establecido en 2022.12.15 - 2022.12.16 --> Stock 7 (No hay registro en 2022.12.15, por lo que la fecha más cercana es 2022.12.14)

Probé esta parte superior para obtener el stock correcto, pero no funciona 😕

MAXX(
TOPN (
1,
FILTRO(view_PBI_BTK,MIN(view_PBI_BTK[fecha])-1),
view_PBI_BTK[fecha], ASC,view_PBI_BTK[Id],DESC
),
view_PBI_BTK[stock]
)

Gracias.

4 REPLIES 4
Syndicate_Admin
Administrator
Administrator

Hola

Por favor, compruebe la imagen de abajo y el archivo pbix adjunto.

Jihwan_Kim_0-1671531171498.png

Expected result measure: =
VAR _mindateslicer =
    MIN ( 'Calendar'[Date] )
VAR _maxdatedata =
    MAXX (
        FILTER (
            ALL ( Data ),
            Data[ItemID] = MAX ( Data[ItemID] )
                && Data[Date] <= _mindateslicer
        ),
        Data[Date]
    )
RETURN
    MAXX (
        FILTER (
            ALL ( Data ),
            Data[ID]
                = MAXX (
                    GROUPBY (
                        FILTER (
                            ALL ( Data ),
                            Data[ItemID] = MAX ( Data[ItemID] )
                                && Data[Date] = _maxdatedata
                        ),
                        "@maxID", MAXX ( CURRENTGROUP (), Data[ID] )
                    ),
                    [@maxID]
                )
        ),
        Data[Stock]
    )

Hola


Gracias por la respuesta.

Probé esta solución, pero con mi número de registro de ~ 60 millones, desafortunadamente ni siquiera calcula nada 😞

Hola

Gracias por sus comentarios, y por favor pruebe lo siguiente si muestra algún resultado y se adapta a sus necesidades.

Expected result measure: =
VAR _mindateslicer =
    MIN ( 'Calendar'[Date] )
VAR _maxdatedata =
    MAXX (
        FILTER (
            ALL ( Data ),
            Data[ItemID] = MAX ( Data[ItemID] )
                && Data[Date] <= _mindateslicer
        ),
        Data[Date]
    )
VAR _maxid =
    MAXX (
        GROUPBY (
            FILTER (
                ALL ( Data ),
                Data[ItemID] = MAX ( Data[ItemID] )
                    && Data[Date] = _maxdatedata
            ),
            "@maxID", MAXX ( CURRENTGROUP (), Data[ID] )
        ),
        [@maxID]
    )
RETURN
    CALCULATE ( MAX ( Data[Stock] ), REMOVEFILTERS ( calendar ), Data[ID] = _maxid )

Hola


Gracias por la respuesta. Probé esta medida y obtuve resultados mixtos.

Lo bueno: Para algunos productos obtuve el resultado correcto.

Lo malo: El tiempo de cálculo es muy lento con la matriz completa, y en algunos casos ni siquiera obtuve ningún resultado.

Utilicé la función TopN para obtener la cantidad de stock final y funciona muy bien. Si eso se pudiera cambiar de alguna manera para ver el registro fuera del filtro de fecha, pero mantener otros filtros estaría bien ... si es posible...

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