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

Sumar las ventas por períodos de tiempo seleccionados donde la columna tiene el mismo valor en ambos

Hi Expertos,

Estoy tratando de hacer una suma dinámica basada en períodos de tiempo seleccionados para comparar los cambios durante el período de tiempo. El problema que tengo es que necesito poder sumar las ventas solo cuando una tienda está presente en los períodos de tiempo anteriores y posteriores.

Mis datos están estructurados de la siguiente manera:

TiendaArtículoVentasPeríodo de tiempo
1Punto A243Q2 2023
1Punto B200Q2 2023
1Punto C195Q2 2023
2Punto A377Q2 2023
2Punto B158Q2 2023
2Punto C235Q2 2023
2Tema D374Q2 2023
3Punto A245Q2 2023
3Punto B116Q2 2023
3Punto C392Q2 2023
2Punto A287Q1 2023
2Punto B188Q1 2023
2Punto C114Q1 2023
2Tema D398Q1 2023
3Punto A148Q1 2023
3Punto B325Q1 2023
3Punto C214Q1 2023
4Punto A348Q1 2023
4Punto B298Q1 2023

Mis tablas están configuradas de la siguiente manera:

Phillip_Nelson_0-1685636062937.png

Las fórmulas para las ventas posteriores al período y las ventas previas al período son las siguientes:

Post Period Sales = 
CALCULATE(
    SUM(FactSales[Sales]), 
    GROUPBY(DimItem, DimItem[Item])
    )

Pre Period Sales = 
CALCULATE(
    SUM(FactSales[Sales]),
    REMOVEFILTERS(DimTimePeriod[Time Period]),
    GROUPBY(DimItem, DimItem[Item]),
    USERELATIONSHIP(FactSales[Time Period], DimTimePeriodCompare[Time Period])
    )

El diseño en lienzo para una tabla simple tendría DimTimePeriod y DimTimePeriodComparison en segmentaciones de datos para que el usuario final pueda seleccionar qué períodos de tiempo desea comparar.

Phillip_Nelson_1-1685636237072.png

¿Cómo puedo ajustar mis fórmulas para omitir cualquier tienda que no aparezca en ambos períodos de tiempo? El ejemplo anterior muestra actualmente la suma de las ventas de todas las tiendas, pero las tiendas 1 y 4 no están en ambos períodos de tiempo.

1 ACCEPTED SOLUTION
Syndicate_Admin
Administrator
Administrator

Para cualquiera que se encuentre con esta publicación, pude averiguar cómo hacerlo usando una función INTERSECT y un filtrado inteligente.

Pre Period Sales = 
VAR PreStores =
CALCULATETABLE (
VALUES ( FactSales[Store] ),
ALLCROSSFILTERED(FactSales),
USERELATIONSHIP ( FactSales[Time Period], DimTimePeriodCompare[Time Period] ),
FILTERS(DimTimePeriodCompare[Time Period])
)
VAR PostStores =
CALCULATETABLE(
    VALUES ( FactSales[Store] ), 
    ALLCROSSFILTERED(FactSales), 
    FILTERS(DimTimePeriod[Time Period]))
VAR CommonStores =
INTERSECT ( PreStores, PostStores )
RETURN
CALCULATE(
    SUM(FactSales[Sales]),
    REMOVEFILTERS(DimTimePeriod[Time Period]),
    GROUPBY(DimItem, DimItem[Item]),
    USERELATIONSHIP(FactSales[Time Period], DimTimePeriodCompare[Time Period]),
    INTERSECT(CommonStores, VALUES(DimStore[Store])
    ))

Post Period Sales = 
VAR PreStores =
CALCULATETABLE (
VALUES ( FactSales[Store] ),
ALLCROSSFILTERED(FactSales),
USERELATIONSHIP ( FactSales[Time Period], DimTimePeriodCompare[Time Period] ),
FILTERS(DimTimePeriodCompare[Time Period])
)
VAR PostStores =
CALCULATETABLE(
    VALUES ( FactSales[Store] ), 
    ALLCROSSFILTERED(FactSales), 
    FILTERS(DimTimePeriod[Time Period]))
VAR CommonStores =
INTERSECT ( PreStores, PostStores )
RETURN
CALCULATE(
SUM( FactSales[Sales] ),
GROUPBY( DimItem, DimItem[Item] ),
INTERSECT(CommonStores, VALUES(DimStore[Store])))

View solution in original post

2 REPLIES 2
Syndicate_Admin
Administrator
Administrator

Para las ventas posteriores al período, puede probar y ver si esto funciona ...

Post Period Sales = 
    var _stores = CALCULATETABLE( VALUES(FactSales[Store]), 
                  REMOVEFILTERS(DimTimePeriod[Time Period]),
                  USERELATIONSHIP(FactSales[Time Period], DimTimePeriodCompare[Time Period]), 
                  FactSales[Time Period] in VALUES(DimTimePeriodCompare[Time Period]))

    RETURN CALCULATE( SUM(FactSales[Sales]), _stores)
Syndicate_Admin
Administrator
Administrator

Para cualquiera que se encuentre con esta publicación, pude averiguar cómo hacerlo usando una función INTERSECT y un filtrado inteligente.

Pre Period Sales = 
VAR PreStores =
CALCULATETABLE (
VALUES ( FactSales[Store] ),
ALLCROSSFILTERED(FactSales),
USERELATIONSHIP ( FactSales[Time Period], DimTimePeriodCompare[Time Period] ),
FILTERS(DimTimePeriodCompare[Time Period])
)
VAR PostStores =
CALCULATETABLE(
    VALUES ( FactSales[Store] ), 
    ALLCROSSFILTERED(FactSales), 
    FILTERS(DimTimePeriod[Time Period]))
VAR CommonStores =
INTERSECT ( PreStores, PostStores )
RETURN
CALCULATE(
    SUM(FactSales[Sales]),
    REMOVEFILTERS(DimTimePeriod[Time Period]),
    GROUPBY(DimItem, DimItem[Item]),
    USERELATIONSHIP(FactSales[Time Period], DimTimePeriodCompare[Time Period]),
    INTERSECT(CommonStores, VALUES(DimStore[Store])
    ))

Post Period Sales = 
VAR PreStores =
CALCULATETABLE (
VALUES ( FactSales[Store] ),
ALLCROSSFILTERED(FactSales),
USERELATIONSHIP ( FactSales[Time Period], DimTimePeriodCompare[Time Period] ),
FILTERS(DimTimePeriodCompare[Time Period])
)
VAR PostStores =
CALCULATETABLE(
    VALUES ( FactSales[Store] ), 
    ALLCROSSFILTERED(FactSales), 
    FILTERS(DimTimePeriod[Time Period]))
VAR CommonStores =
INTERSECT ( PreStores, PostStores )
RETURN
CALCULATE(
SUM( FactSales[Sales] ),
GROUPBY( DimItem, DimItem[Item] ),
INTERSECT(CommonStores, VALUES(DimStore[Store])))

Helpful resources

Announcements
Join Arun Ulag at MPPC23

Join Arun Ulag at MPPC23

Get a sneak peek into this year's Power Platform Conference Keynote.

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.

Dashboard in a day with date

Exclusive opportunity for Women!

Join us for a free, hands-on Microsoft workshop led by women trainers for women where you will learn how to build a Dashboard in a Day!

Top Solution Authors