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

The Power BI Data Visualization World Championships is back! Get ahead of the game and start preparing now! Learn more

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
November Power BI Update Carousel

Power BI Monthly Update - November 2025

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

Fabric Data Days Carousel

Fabric Data Days

Advance your Data & AI career with 50 days of live learning, contests, hands-on challenges, study groups & certifications and more!

FabCon Atlanta 2026 carousel

FabCon Atlanta 2026

Join us at FabCon Atlanta, March 16-20, for the ultimate Fabric, Power BI, AI and SQL community-led event. Save $200 with code FABCOMM.