Forum Discussion
Renewal rates
What is your desired form of result?
I mean do you need
the Count of those users,
or
Names of those users
Do you need it in a Table or a MEASURE?
If you need MEASURES, try these
Count_Of_Users =
COUNTROWS (
FILTER (
VALUES ( CardTable[User ID] ),
CALCULATE ( DISTINCTCOUNT ( CardTable[Card ID] ) ) > 1
)
)
Names_of_users =
CONCATENATEX (
FILTER (
VALUES ( CardTable[User ID] ),
CALCULATE ( DISTINCTCOUNT ( CardTable[Cardstatus] ) ) > 1
),
[User ID],
UNICHAR ( 10 )
)
Thank you for your reply,
I'm try to get an output that looks like so:
| Month | % of cards renewed |
| Jan-19 | 40% |
| Feb-19 | 38% |
| Mar-19 | 37% |
I think the way to go is to create a table of all of the [user IDs] who have had a card during a specific period, say Jan-18 (which means that their cards would expire Jan-19) and then review that list of user IDs to see which ones now have a new card (with a status of 6) from Jan-19 onwards.
In short, what percentage of people who originally bought a card in Jan-18 have since renewed.
I tried the following to give me a table of cards with a particular puchase date but I get the error
"A table of multiple values was supplied where a single value was expected." back.
Table =
ADDCOLUMNS(
Cards,
"Expired Cards",
DATESBETWEEN(Cards[timePurchased].[Date], DATE(2014,1,1), DATE(2014,1,31)))
- Zubair_Muhammad7 years ago
Community Champion
HI Andy6001
This looks very much doable.
Please copy paste some sample data (Copiable format) and expected results from that sample data.
This way contributors can attempt a solution and match their results. - vbisen7 years agoFrequent Visitor
Hi
can you confirm if this is waht you are looking for- Andy60017 years agoFrequent Visitor
Hi vbisen,
That is exactly the output I'm looking for.
If you could share how you got from your inital MEasure to there it would be greatly appreciated!
Thanks,
Andy
- vbisen7 years agoFrequent Visitor
Hi Andy
Great.
Here are the steps i followed:
1. Create a New Table (Date) based on available dates in CardTable
Date = CALENDAR(MIN(CardTable[PurchaseDate]), MAX(CardTable[ExpiryDate]))2. Define relationship between CardTable and Date table based on CardTable.PurchaseDate and Date.Date columns3. Create following Measure in Date tableMeasure4 =CALCULATE(COUNT(CardTable[UserID]), CardTable[CardStatus] <> 10)/CALCULATE(count(CardTable[UserID]))Hope this will solve your issue.
- Zubair_Muhammad7 years ago
Community Champion
Try this MEASURE
Measure = VAR myusers = CALCULATETABLE ( VALUES ( CardTable[UserID] ), CardTable[CardStatus] = 6 ) VAR UsersInPrevMonths = CALCULATETABLE ( VALUES ( CardTable[UserID] ), FILTER ( ALL ( CardTable ), CardTable[PurchaseDate] < MIN ( CardTable[PurchaseDate] ) && CardTable[CardStatus] = 10 ) ) RETURN DIVIDE ( COUNTROWS ( INTERSECT ( myusers, UsersInPrevMonths ) ), DISTINCTCOUNT ( CardTable[UserID] ) )- Zubair_Muhammad7 years ago
Community Champion