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

Earn a 50% discount on the DP-600 certification exam by completing the Fabric 30 Days to Learn It challenge.

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
LearnSurvey

Fabric certifications survey

Certification feedback opportunity for the community.

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.