英文:
Issue with Calculating SAT Metric in Power BI - Incorrect Aggregated Results
问题
I'm encountering an issue while calculating the SAT (Satisfaction) metric in Power BI. The SAT metric is calculated based on grades received, where grades equal to 9 or 10 are considered positive (Promoters), and grades ranging from 0 to 6 are considered negative (Detractors). The formula I'm using to calculate SAT is as follows:
SAT =
VAR TotalRows = COUNTROWS(ALLSELECTED(SAT_SHEET))
VAR PromoterRows =
CALCULATE(
COUNTROWS(SAT_SHEET),
SAT_SHEET[GRADE] >= 9 && SAT_SHEET[GRADE] <= 10,
ALLSELECTED(SAT_SHEET)
)
VAR DetractorRows =
CALCULATE(
COUNTROWS(SAT_SHEET),
SAT_SHEET[GRADE] >= 0 && SAT_SHEET[GRADE] <= 6,
ALLSELECTED(SAT_SHEET)
)
RETURN
100 * (PromoterRows - DetractorRows) / TotalRows
However, when I try to create a table, matrix, or line chart to display the SAT results aggregated by location, code, or month, the calculation does not yield the correct values. Strangely, when I manually apply filters in Power BI, the SAT calculation produces the expected results. How can I fix my formula to obtain the desired outcome?
英文:
I'm encountering an issue while calculating the SAT (Satisfaction) metric in Power BI. The SAT metric is calculated based on grades received, where grades equal to 9 or 10 are considered positive (Promoters), and grades ranging from 0 to 6 are considered negative (Detractors). The formula I'm using to calculate SAT is as follows:
SAT =
VAR TotalRows = COUNTROWS(ALLSELECTED(SAT_SHEET))
VAR PromoterRows =
CALCULATE(
COUNTROWS(SAT_SHEET),
SAT_SHEET[GRADE] >= 9 && SAT_SHEET[GRADE] <= 10,
ALLSELECTED(SAT_SHEET)
)
VAR DetractorRows =
CALCULATE(
COUNTROWS(SAT_SHEET),
SAT_SHEET[GRADE] >= 0 && SAT_SHEET[GRADE] <= 6,
ALLSELECTED(SAT_SHEET)
)
RETURN
100 * (PromoterRows - DetractorRows) / TotalRows
However, when I try to create a table, matrix, or line chart to display the SAT results aggregated by location, code, or month, the calculation does not yield the correct values. Strangely, when I manually apply filters in Power BI, the SAT calculation produces the expected results. How can I fix my formula to obtain the desired outcome?
I have a dataset containing the following columns:
ID TRANS | LOCATION | CODE | GRADE | DATE |
---|---|---|---|---|
1 | US | RED | 10 | 22/05/2023 |
2 | CAD | BLUE | 5 | 23/05/2023 |
3 | LATAM | YELLOW | 8 | 24/05/2023 |
4 | UK | RED | 9 | 25/05/2023 |
5 | US | RED | 5 | 26/05/2023 |
6 | CAD | BLUE | 4 | 27/05/2023 |
7 | LATAM | BLUE | 1 | 28/05/2023 |
8 | UK | BLUE | 0 | 29/05/2023 |
9 | US | BLACK | 2 | 30/05/2023 |
10 | CAD | RED | 5 | 31/05/2023 |
11 | LATAM | BKUE | 10 | 1/06/2023 |
12 | UK | YELLOW | 10 | 2/06/2023 |
13 | US | RED | 10 | 12/05/2023 |
14 | CAD | RED | 10 | 13/05/2023 |
15 | LATAM | BLUE | 5 | 4/06/2023 |
16 | UK | BLUE | 6 | 1/07/2023 |
17 | US | BLUE | 8 | 8/07/2023 |
18 | CAD | BLACK | 10 | 26/07/2023 |
19 | LATAM | RED | 5 | 8/08/2023 |
20 | UK | BKUE | 10 | 22/08/2023 |
21 | US | YELLOW | 10 | 13/09/2023 |
22 | CAD | RED | 5 | 19/09/2023 |
23 | LATAM | RED | 8 | 11/10/2023 |
24 | UK | BLUE | 10 | 5/11/2023 |
25 | US | BLUE | 10 | 27/11/2023 |
26 | CAD | BLUE | 10 | 30/11/2023 |
27 | LATAM | BLACK | 8 | 2/12/2023 |
28 | UK | RED | 9 | 14/12/2023 |
29 | US | BKUE | 9 | 6/01/2024 |
30 | CAD | YELLOW | 0 | 12/01/2024 |
To ilustrate my issue let me show you:
When I apply my SAT to a line chart I get this:
whic is incorrect but If I filter (In a dat filter) my data by month (Mayo) it does give me the proper correct value:
and the same goes for location
and code
I cant seem to find a way to properly show the resulting SAT by location
, code
and date
in a table viz or in a line viz. How can I fix this issue and correctly display the SAT measure over the months, locations and codes of the dataset?
答案1
得分: 1
Using ALLSELECTED() removes the filter coming from the row context. EG if you write a simple row counting measure like
Rows = countrows(allselected(SAT_SHEET))
You get
So try something like:
SAT =
VAR TotalRows = COUNTROWS(SAT_SHEET)
VAR PromoterRows =
CALCULATE(
COUNTROWS(SAT_SHEET),
SAT_SHEET[GRADE] >= 9 && SAT_SHEET[GRADE] <= 10
)
VAR DetractorRows =
CALCULATE(
COUNTROWS(SAT_SHEET),
SAT_SHEET[GRADE] >= 0 && SAT_SHEET[GRADE] <= 6
)
RETURN
100 * (PromoterRows - DetractorRows) / TotalRows
英文:
Using ALLSELECTED() removes the filter coming from the row context. EG if you write a simple row counting measure like
Rows = countrows(allselected(SAT_SHEET))
You get
So try something like:
SAT =
VAR TotalRows = COUNTROWS(SAT_SHEET)
VAR PromoterRows =
CALCULATE(
COUNTROWS(SAT_SHEET),
SAT_SHEET[GRADE] >= 9 && SAT_SHEET[GRADE] <= 10
)
VAR DetractorRows =
CALCULATE(
COUNTROWS(SAT_SHEET),
SAT_SHEET[GRADE] >= 0 && SAT_SHEET[GRADE] <= 6
)
RETURN
100 * (PromoterRows - DetractorRows) / TotalRows
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论