Google analytics syntax event label and or results don't match - google-analytics

I am new to querying GA with event label filters and am trying to work out my mistake with the following syntax. I have 3 different event label filters on 3 separate reports which are identical, except for the variation in this query:
Report filter 1: ga:eventLabel==Login - Create Account Step 2
Report filter 2: ga:eventLabel==Login - Create Account Step 2;ga:eventLabel!=Where to Buy Step 2 Submit Query
Report filter 3: ga:eventLabel==Login - Create Account Step 2;ga:eventLabel==Where to Buy Step 2 Submit Query
Now, I would expect that the count of sessions and users I get from report filter #1 would equal the sum of results from report filters #2 and #3. But actually, report filter #2: ga:eventLabel==Login - Create Account Step 2;ga:eventLabel!=Where to Buy Step 2 Submit Query returns counts of users and sessions orders of magnitude larger than the other 2 queries. (like 70K vs 120ish). Feels like there's a classic beginner conceptual error I'm making here, but I'm not sure how to google the the right question. Any ideas what I'm doing wrong?
Thanks for any help.

What you are trying to query with session/user metrics won't really work the reason being is that events are hits and so filtering that way filters on the hits. The way to get around that is to create segments of users that have triggered the events that you are interested in.
Now if you were to report on events/unique events using those filters based on the logic there I would expect #1 and #2 to return the same results and #3 to contain no values.

Related

Percentage of returning visitors in google data studio

Here what I want is get the number of returning visitor in percentage in scorecard.What I tried is tried creating calculating filed but didn't able to succeed
What I tried is applied the usertype = "returning visitor" filter but it shows only number and I want percentage.
Expected result is %returning visitors
Unfortunately, this method isn't entirely accurate. GA double counts a user if they are both a returning user and new user if they complete more than 1 session within the time period that you have listed.
My work around is to blend a data source with itself: 1 with a Google segment for returning users, 1 without.
The formula for the calculated field should use these two metrics:
ga:users (Users): total number of users
ga:newUsers (New Users): total number of new users
ga:newUsers/ga:users will give you the percentage of new users, the rest would be return. So just subtract the % from 1. Like so
Returning visitor in data studio
Showing the total number of returning visitors via the Scorecard
There is 2 ways to make it
1
Step 1
usertype = "returning visitor" pie chart or in table
Just make a new Pie chart or table then add to demensions Usertype
Step 2:
Add a new scoreboard
Make a filter for scoreboard just to show Returning of New visitors.
Done !! Showing the total number of returning visitors via the Scorecard.
Step 3 showing as a %
Add a new scoreboard without any filter and just show session.
Click at Scoreboard which shows Returning or New visitors. Click also in sametime at the scoreboard which shows session.. then right click on the mouse, choise the Merge data options.
Data studio makes automaticly percentage of both data. You get it!!!!
Second Way
You'll need to create a segment for in Google Analytics to use in Data Studio
Make a segment for returning visitors in Google Analytics.
Add a new scoreboard in data studio, choose just made segment. You will see the total Returning visitors in scoreboard.
follow step 2 and 3 ..
Good luck..

Google Analytics Checkout Behaviour in Bigquery

does anyone know how to extract checkout behaviour from the Google Analytics export in BigQuery?
E.g. I'd like to calculate abandonment at each checkout stage. I've raked through the schema -
https://support.google.com/analytics/answer/3437719?hl=en&ref_topic=3416089
but it doesn't seem to have the equivalent data from GA i.e. the details within shopping stages such as
"CHECKOUT_1_ABANDONMENT"
.
I can get each checkout step using hits_eCommerceAction_step but can't calculate exits here, they're always just blank when I do a count of hits.isExit
hits.isExit refers to the last page in the session. It will not help you here, unless you want to know if any step was also the session exit.
Regarding e-commerce steps, you could define the highest step number per session as being the exit step or the last one seen - but I guess the highest makes more sense?!
Oh, and you have to translate what each step number means by yourself. It literally just tracks the number, not the meaning.
You can do it like that:
SELECT
(SELECT MAX(ecommerceaction.step) FROM t.hits) AS maxStep,
SUM(totals.visits) AS sessions
FROM `project.dataset.ga_sessions_2018*` t
GROUP BY 1
ORDER BY 1
If you want the "last step in a session"-logic, you would do it like that:
SELECT
(SELECT ecommerceaction.step FROM t.hits WHERE ecommerceaction.step is not null ORDER BY hitnumber DESC LIMIT 1) AS lastStep,
SUM(totals.visits) AS sessions
FROM `project.dataset.ga_sessions_2018*` t
GROUP BY 1
ORDER BY 1
I didn't check if these are translations to Google Analytics numbers but should be helpful, I hope, getting in this direction.

sum over date range in report (not query)

In Access 2010, I have a little form prior to a report which asks the user for a date range (e.g. 7.7.2015 - 9.9.2015). I pass this date range to the report as filter. The query contains the fields ActDate, Activity and Hours. I now want the report to look like:
Activities from <startDate> to <endDate>:
Activity Total Hours
Reading 5
Writing 8
Talking 3
What I'm getting is
Activities from <startDate> to <endDate>:
Activity Total Hours
Reading 2
Reading 3
Writing 1
Writing 3
Writing 4
Talking 1
Talking 2
The report should sum up equal activities over the selected date range and not display a separate line for each activity which just occured on a different date. Adding a group in the report for activities is no solution (it just adds extra blank lines).
I guess it's possible to build a custom query after the user dialog (in the query I could filter by date range and GROUP BY Activity), but it would be much simpler if the grouping could be done in the report without changing the query. Do I really have to change the query?

ga:visits showing zero when ga:pageviews, ga:visitors show values?

I have a top profileid and a filtered profileid.
the filtered profileid uses a path starting with /xxx/yyy/
now in site I have 2 view pages -
1) top profile + my filter of /xxx/yyy/
2) sub profile
both pages show the same number and values for pages
but when I do a view of "ga:pageviews, ga:visitors, ga:visits"
I get different values only for visits (sometimes 0 on #1)
examples of output
1)
70 5 1
40 8 0 <--how can I get a zero?
2)
70 5 6
40 8 8
so hitting the top profile and adding my filter to the call gives me invalid visits.
using the same code for profile #2 I get correct numbers.
looking inside google admin, profile 2 only has the 1 filter and it matches the same as what I am doing in code. also the pages match up so this does not make sense to me.
how is it possible to get numbers but have no visits?
is there a way to get an individual listing of the data that it is using to output to my filtered request?
http://www.analyticsedge.com/2014/09/misunderstood-metrics-sessions-pages/
I think I figured this out. doing the filter inside google as a separate profile will retag the first page to a session count, whereas if I query the top profile and filter on my end I will get very low session starts because most people hit the home page or login page which counts as their session start.
it seems I cannot use the metric sessions or visits along with my filtering to a sub section.

Is this loop redundant?

The three tables of interest are:
Event, containing various details of, eg, the berlin marathon
Result, containing various fields including user's race time and a FK to an Event, and
Goal, with a FK to the Event the user would like to run, a field for the time they'd like to run it in, and eventually a FK to the Race at which the user achieved their goal.
Obviously, the Event of the Race where the user achieved their goal has to be the Event of the Goal. But not all Goal's have been achieved -- some may never be.
Is this bad design? Can anybody suggest a better way of modelling this problem? I'm using sqlite in a django project.
Your Event table is OK.
But your Goal Table design messed up the proposed event and the actual achieved event.
I think Result Table can be merged with Goal table into a new Result table.
Since one user may want to run multiple events. In your new Result table, it should be like:
UserID EventID TimeProposed ActualTimeUsed Achieved
1 1 1 hour 1.1 hour No
1 2 1.5 hour 1.2 hour Yes
So the loop you mentioned is removed since each row has only one event. (The UserID and EventID remains to be the FK to the other two tables.)
The Achived column can be updated using a query to decide ActualTimeUsed<=TimeProposed.

Resources