Power BI is turning 10! Tune in for a special live episode on July 24 with behind-the-scenes stories, product evolution highlights, and a sneak peek at what’s in store for the future.
Save the dateEnhance your career with this limited time 50% discount on Fabric and Power BI exams. Ends August 31st. Request your voucher.
Trying to Create 2 card visuals (one for this year and one for last year) that show the number of stores that are selling above an average N amount per month.
I think the best way to do this is to create a calculated column to sums the sales numbers by Store Name and Year. Can you let me know the best way to approach that?
Or if that is not the right appraoch, what might be? Pretty sure I am overcomplicated a potentially simple goal.
Solved! Go to Solution.
Hi @abarrett,
Here is the calculated column formula to get the row count based on current category group and average:
Column =
COUNTROWS (
FILTER (
SUMMARIZE (
FILTER ( 'Table', [StoreRef] = EARLIER ( 'Table'[StoreRef] ) ),
[StoreRef],
[Date],
[Revenue],
"AVG",
CALCULATE (
AVERAGE ( 'Table'[Revenue] ),
FILTER (
ALL ( 'Table' ),
[StoreRef] = EARLIER ( 'Table'[StoreRef] )
&& YEAR ( [Date] ) = YEAR ( EARLIER ( 'Table'[Date] ) )
)
)
),
[Revenue] > [AVG]
)
)
You can set two 'year' filters on your card to show different results.
Regards,
Xiaoxin Sheng
Please give sample data?
Below are some overly simplied versions of the data where I am ultimately trying to find the number of stores (YTD, and prior year same time period) where the average monthly revenue is $50 for that same time period
in the below example 2021 (through June) would have 2 stores (Store B and C)
2022 would also have 1, Store A
Revenue Table
StoreRef | Revenue | Date |
0 | $500 | 1/1/2022 |
0 | $300 | 4/1/2022 |
1 | $1,000 | 1/2/2021 |
2 | $100 | 1/5/2022 |
2 | $500 | 3/3/2021 |
as well as a reference table where
0 -> Store A
1 -> Store B
2 -> Store C
Hi @abarrett,
Here is the calculated column formula to get the row count based on current category group and average:
Column =
COUNTROWS (
FILTER (
SUMMARIZE (
FILTER ( 'Table', [StoreRef] = EARLIER ( 'Table'[StoreRef] ) ),
[StoreRef],
[Date],
[Revenue],
"AVG",
CALCULATE (
AVERAGE ( 'Table'[Revenue] ),
FILTER (
ALL ( 'Table' ),
[StoreRef] = EARLIER ( 'Table'[StoreRef] )
&& YEAR ( [Date] ) = YEAR ( EARLIER ( 'Table'[Date] ) )
)
)
),
[Revenue] > [AVG]
)
)
You can set two 'year' filters on your card to show different results.
Regards,
Xiaoxin Sheng
Good day Abarett
You should be able to create a measure that will calculate this (instead of doing an expensive calculated column)
Create a new measure.
MeasureName =
VAR AvgSalesStore = 12345 (or any value you hardcode) or VAR AvgSalesStore2 = AVERAGE('TableName'[Sales])
VAR NumberOfStoresAboveAverage =
CALCULATE(
COUNTROWS('TableName'[Sales]), -- This is the main Fact Table
TableName'[Stores] >= AvgSalesStore -- This will check the stores where the average is either AvgSalesStore or AvgSalesStore2
RETURN
NumberOfStoresAboveAverage
So this is fantastic, and I think it gets me about 95% of the direction I am going.
each line item in my version of TableName[Sales] may have more than 1 in it. That is fine, swaping COUNTROWS with SUM should work. Would any other parts of the measure need to be adjusted?
User | Count |
---|---|
25 | |
12 | |
8 | |
7 | |
7 |
User | Count |
---|---|
25 | |
12 | |
11 | |
10 | |
6 |