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

Compete to become Power BI Data Viz World Champion! First round ends August 18th. Get started.

Reply
4rmfunction
Frequent Visitor

Looking for PoP (Period over Period) Change to Specific Row-Level Data

Hello,

 

Thanks for stopping by. I am looking to get the promoter and Detractor percentage variance by quarter and month. I will post the table in a comment.

 

Using the following measures to aggregate the data I need:

 

Current totals:

Total Responded =
COUNTA(Table[Column1])
 
Current Promoter Totals:
Glbl_Promoter Total =
CALCULATE (
    COUNTROWS ( Table ),
    Table[NPS Group] = "Promoters"
)
 
Previous Quarter Totals:
CALCULATE (
    [Total Responded],
    PREVIOUSQUARTER (Date_Table[Date])
)
 
Previous Quarter Promoters:
 
Previous Quarter Promoters =
CALCULATE (
    COUNTROWS ( Table),
    Table[NPS Group] = "Promoters",
 PREVIOUSQUARTER(Date_Table[Date])
)
 
And then a measure to tie everything together:
Glbl_PromoterQuarterVariance =
VAR CurrentQtrPromoter =
            DIVIDE(CSAT_GLOBAL[Glbl_Promoter Total],[Total Responded])
VAR PrevQtrPromoter =
            DIVIDE([Previous Quarter Promoters], [PreviousQuarterVolume])
VAR _Variance =
            DIVIDE(CurrentQtrPromoter - PrevQtrPromoter, PrevQtrPromoter)
   
RETURN
format(_Variance, "#%") & " " &IF(_Variance > 0, "+")
 
What I end up with is something like this:
4rmfunction_1-1721682495044.png

 


Where it calculates the percentage change of the specific row and not how the row interacts with the overall survey volume. What I need it to do is calculate the specific topic percentage against the total, and then the QoQ change based on that. Example:

 

Topic (Level 2)Current Quarter PromotersPercent of TotalChangeGlbl_PreviousQuarterPromotersPercent of TotalTotal RespondedPreviousQuarterVolume
Shipping6415%17%9913%112206
Payments307%55%354%7273
Cancellation123%4%213%4862
Returns & Refunds5914%-19%13217%107225
Promo Code164%-48%567%40103
Account123%-40%365%2554
Status205%-5%385%3267
      436790

 

I hope this is enough information. Thanks again in advance.

3 REPLIES 3
4rmfunction
Frequent Visitor

Survey Responded DateTopicTopic (Level 2)NPS Group
01-Jan-24Product ServiceProduct Service RequestNeutrals
02-Jan-24Product ServiceRedirect To FormPromoters
03-Jan-24Product ServiceLimited Warranty CoveragePromoters
04-Jan-24Product ServiceProduct Service RequestDetractors
05-Jan-24Product ServiceLimited Warranty CoverageDetractors
06-Jan-24Product ServiceLimited Warranty CoveragePromoters
07-Jan-24Product ServiceLimited Warranty CoverageNeutrals
25-Jan-24Product ServiceLimited Warranty CoverageDetractors
26-Jan-24Product ServiceLimited Warranty CoverageDetractors
27-Jan-24Product ServiceLimited Warranty CoverageDetractors
28-Jan-24Product ServiceProduct Service StatusDetractors
29-Jan-24Product ServiceLimited Warranty CoveragePromoters
30-Jan-24Product ServiceProduct Service RequestNeutrals
01-Feb-24Product ServiceLimited Warranty CoverageDetractors
02-Feb-24Product ServiceLimited Warranty CoveragePromoters
03-Feb-24Product ServiceRedirect To FormPromoters
04-Feb-24Product ServiceLimited Warranty CoveragePromoters
05-Feb-24Product ServiceLimited Warranty CoveragePromoters
06-Feb-24Product ServiceRedirect To FormDetractors
07-Feb-24Product ServiceProduct Service StatusDetractors
19-Feb-24Product ServiceProduct Service RequestDetractors
22-Feb-24Product ServiceProduct Service RequestNeutrals
23-Feb-24Product ServiceLimited Warranty CoverageDetractors
24-Feb-24Product ServiceLimited Warranty CoverageDetractors
25-Feb-24Product ServiceLimited Warranty CoverageDetractors
26-Feb-24Product ServiceProduct Service StatusPromoters
27-Feb-24Product ServiceProduct Service StatusDetractors
29-Feb-24Product ServiceProduct Service StatusPromoters
02-Mar-24Product ServiceLimited Warranty CoverageDetractors
04-Mar-24Product ServiceProduct Service StatusPromoters
11-Mar-24Product ServiceProduct Service RequestDetractors
30-Mar-24Product ServiceProduct Service StatusPromoters
31-Mar-24Product ServiceLimited Warranty CoveragePromoters
03-Apr-24Product ServiceLimited Warranty CoveragePromoters
05-Apr-24Product ServiceProduct Service StatusPromoters
06-Apr-24Product ServiceLimited Warranty CoverageDetractors
18-Apr-24Product ServiceProduct Service RequestPromoters
25-Apr-24Product ServiceLimited Warranty CoveragePromoters
28-Apr-24Product ServiceLimited Warranty CoveragePromoters
29-Apr-24Product ServiceProduct Service StatusPromoters
03-May-24Product ServiceLimited Warranty CoverageDetractors
21-May-24Product ServiceProduct Service RequestDetractors
25-May-24Product ServiceLimited Warranty CoverageDetractors
26-May-24Product ServiceLimited Warranty CoveragePromoters
04-Jun-24Product ServiceNA 5Promoters
06-Jun-24Product ServiceProduct Service StatusPromoters
14-Jun-24Product ServiceLimited Warranty CoveragePromoters
21-Jun-24Product ServiceProduct Service StatusPromoters
26-Jun-24Product ServiceRedirect To FormPromoters
27-Jun-24Product ServiceLimited Warranty CoverageNeutrals
Anonymous
Not applicable

Hi @4rmfunction 

 

According to your formula, you seem to use three tables, but I don't know the data structure of your other two tables, so I do it directly in the data table you provided.

 

In order to better help you, I have another question that I need to confirm with you. What is the calculation logic of these four columns?

vxuxinyimsft_1-1721719158992.png

 

What I have done so far is as follows, feel free to let me know if there are any problems.

 

Create a calculated column as follows

quarter = QUARTER([Survey Responded Date])

 

Create several measures as follow

CurrentQuarterPromoters = 
VAR _currentquarter = CALCULATE(MAX([quarter]), ALL('Table'))
RETURN
CALCULATE(COUNT('Table'[NPS Group]), FILTER('Table', [NPS Group] = "Promoters" && [quarter] = _currentquarter))

 

Percent of Total = 
VAR _CurrentQuarter = CALCULATE(MAX([quarter]), ALL('Table'))
VAR _count = CALCULATE(COUNT('Table'[NPS Group]), FILTER('Table', [quarter] = _CurrentQuarter))
RETURN
DIVIDE([CurrentQuarterPromoters], _count)

 

PreviousQuarterPromoters = 
VAR _previousquarter = CALCULATE(MAX([quarter]), ALL('Table')) - 1
RETURN
CALCULATE(COUNT('Table'[NPS Group]), FILTER('Table', [NPS Group] = "Promoters" && [quarter] = _previousquarter)) + 0

 

Percent of Total(previous) = 
VAR _previousQuarter = CALCULATE(MAX([quarter]), ALL('Table')) - 1
VAR _count = CALCULATE(COUNT('Table'[NPS Group]), FILTER('Table', [quarter] = _previousQuarter))
RETURN
DIVIDE([CurrentQuarterPromoters], _count) + 0

 

Output:

vxuxinyimsft_2-1721720148179.png

 

Best Regards,
Yulia Xu

 

If this post helps, then please consider Accept it as the solution to help the other members find it more quickly.

Hi @Anonymous,

 

Thanks for your feedback, but it looks like you're getting a similar return to what I was seeing before.

 

The logic of the table I provided at the end of my message is as follows:

 

Topic (Level 2)Current Quarter PromotersPercent of Total(a)ChangeGlbl_PreviousQuarterPromotersPercent of Total(b)Total RespondedPreviousQuarterVolume
 SUMCurrent Quarter Promoters/Total Responded=(percent of Total(a)-Percent of Total(b))/Percent of Total(b)SUMGlbl_PreviousQuarterPromoters/PreviousQuarterVolumeSUMSUM

 

What I am trying to achieve is replicating the "Change" column, which is a variance of a percentage.

 

Thanks again for your message.

Helpful resources

Announcements
August Power BI Update Carousel

Power BI Monthly Update - August 2025

Check out the August 2025 Power BI update to learn about new features.

August 2025 community update carousel

Fabric Community Update - August 2025

Find out what's new and trending in the Fabric community.