I need to create segments that correspond to a certain choice of the customer upon registration to the app. To give an analogy, let's say they can choose the role of their character in a game (e.g. marksman, wizard, or warrior). It's a one-time thing that you do at the very start and it cannot be changed afterwards. Creating this segment is pretty straightforward and easy to do.
The problem occurs when doing analysis using time filters on the segment.
As you can see above, when I apply the Yesterdaytime range to the Oct 31, 2019 row, the data doesn't match when it should be equal because it was Oct 31 yesterday. What I think is happening here is the Yesterday filter is being applied on top of the Warriorssegment filter. To be more explicit, the Yesterday row is showing "how many unique visitors picked 'Warriors' yesterday?" -- which is 588. What I want it to show is "how many unique visitors yesterday picked 'Warriors'?" -- which is 10571.
I confirmed this when I checked the First Launches metric.
The Yesterday and Oct 31, 2019 row are now equal.
This has crucial implications in a lot of analysis. What if you want to evaluate a new feature (hence, you'll only analyze the last 30 days)? You can't just filter to last 30 days because it will also filter your segments. So you're forced to use the entire timeline which could result to unpleasant charts like below:
What if you want to create virtual report suites and they need to create analysis based on last week/last month? It's likely that they'll miss the fact that the time filters they are using are being applied on top of the segment filter used to create the virtual report suite -- this could create a lot of confusing, inaccurate, and misleading insights.
Is there a way to circumvent this? Is there a way to apply the segment filter first instead of the time filter?
as you said, using the breakdown gives you not the right number. whenever you use a date range (purple items", Adobe Analytics is only looking at this data, nothing "outside" - even if the project date range is larger. that means the data is (as you assumed) only those visitors who had the desired page within this date range "yesterday)
a) segment: you could create a new segment and "force it" to look for a longer timespan. I would not recommend since date ranges might give you unexpected numbers just as you have seen above.
b) eVar: according to your explanation I assume that "select warriors" is something the user does once, maybe doesn't change later and is important for your website (just like selecting the favorite team for sport news). hence I would recommend to use an eVar with a long expiry (or never?). that means, you set this eVar whenever you have the information about the user (during onboarding, maybe you have the information somewhere on the page or the devs might write it in a dataLayer). as soon as you have the information in the eVar, it will last long in future (expiry) and can be used for an easy breakdown
regarding the segment: you could add an additional visitor condition and force the segment to only return the desired data. giving you an example:
a) visitor container where (segment with long date range and page=warrier selected xy)
b) visitor where (segment with short date range)
this would force the segment to return only the data from both segments, which will match the overlapping (short date range). if you setup some of those segments like "yesterday", "last week", "last month",... you could at least handle some of the confusion (not all).
hope this gives you an idea of a possible workaround, not perfect, but better than nothing
a) segment -- This is what I am currently doing as a workaround. I'm forcing the segment to cover the entire timeline so there's no one left out. Unfortunately, this nullifies the calendar altogether and might also confuse the users when they change the calendar dates and see that nothing is changing.
b) eVar -- This is our long-term solution. It solves the problem entirely but obviously, this kind of approach takes time to setup and you can't use this when you want to do the analysis to a specific historical data.
Would you be able to share the segment you've used for your audience creation? Are you storing the userType in a persisted variable like an eVar? Its very likely there is a work around for this based on how you create the segment.