View
3.031
Download
2
Embed Size (px)
DESCRIPTION
Updated presentation for PyCon Canada 2013 Google Analytics is an excellent tool to track what happens in your website or your mobile app. In this talk, you'll learn how to query your data using the Python library for the Core Reporting API and why you should be doing it.
Citation preview
Exploring the Google Analytics API
Vanessa Sabino @bani
Google Analytics
It’s all about Data • Web sites • Mobile apps • Coffee makers* • Etc.
* http://youtu.be/C27yMQOS8n0
Google Analytics
Goals & Conversion Optimization
The Core Reporting API
https://developers.google.com/analytics/devguides/reporting/core/v3/
Why use the API?
1. Productivity
(and less sampling)
http://xkcd.com/303/
Why use the API?
1. Productivity
2. + Results
max-results=10,000
Why use the API?
1. Productivity
2. + Results
3. + Dimensions
Up to 7 dimensions!
Why use the API?
1. Productivity
2. + Results
3. + Dimensions
4. Visualization
http://tinyurl.com/GA-Apps
Why use the API?
1. Productivity
2. + Results
3. + Dimensions
4. Visualization
5. Web apps
http://sumall.com/
Why use the API?
1. Productivity
2. + Results
3. + Dimensions
4. Visualization
5. Web apps
6. Data storage
API Concepts
Metrics & Dimensions
https://developers.google.com/analytics/devguides/reporting/core/dimsmets
Filters & Segments
Metrics == Equals
!= Does not equal
> Greater than
< Less than
>= Greater than or equal to
<= Less than or equal to
Dimensions == / != Exact match
=@ / !@ Contains substring
=~ / !~ Contains a match for the regular expression
, Or ; And
https://developers.google.com/analytics/devguides/reporting/core/v3/reference#filterSyntax
Data Feed
https://www.googleapis.com/analytics/v3/data/ga
?ids=ga:12345 *
&dimensions=ga:source,ga:medium
&metrics=ga:visits,ga:bounces *
&sort=-ga:visits
&filters=ga:medium%3D%3Dreferral
&segment=gaid::10
&start-date=2011-10-01 *
&end-date=2011-10-31 *
&start-index=10
&max-results=100
&prettyprint=true
* = required
Query Explorer
http://tinyurl.com/gdata-explorer
Steps to use the API
1. Authenticate
2. Get your data
3.
Register your Project
https://code.google.com/apis/console
oAuth Authentication
client_secrets.json
{
"installed": {
"auth_uri":"https://accounts.google.com/o/oauth2/auth",
"client_secret":"CleKR0UzPYhfTbjPb3TgeQRBw",
"token_uri":"https://accounts.google.com/o/oauth2/token",
"client_email":"",
"redirect_uris":["urn:ietf:wg:oauth:2.0:oob","oob"],
"client_x509_cert_url":"",
"client_id":"395901729588.apps.googleusercontent.com",
"auth_provider_x509_cert_url":"https://www.googleapis.com/oauth2/v1/certs"
}
}
Python Library
¤ Python: Versions 2.5, 2.6, or 2.7
¤ easy_install / pip google-api-python-client
¤ Download file for Google AppEngine ¤ https://developers.google.com/api-client-library/
python/start/installation
Authorize
¤ Copy hello_analytics_api_v3_auth.py
import auth_helper from apiclient.errors import HttpError from oauth2client.client \ import AccessTokenRefreshError service = \ auth_helper.initialize_service()
Get your data
* https://www.google.com/analytics/web/?hl=en&pli=1#dashboard/
ViBLgd51S7YHgitTK4MoYQ/a4126737w34427220p33794370/
service.data().ga().get( ids='ga:' + profile_id*, start_date='2013-‐07-‐01', end_date='2013-‐08-‐01', metrics='ga:visits', dimensions='ga:source', sort='-‐ga:visits,ga:source', filters='ga:medium==organic', max_results='25').execute()
Co
re R
ep
ortin
g A
PI Qu
ery
Handle the results
for row in results.get('rows'): output = [] for cell in row: output.append('%16s' % cell) print ''.join(output)
Handle the results
for header in \ results.get('columnHeaders'): print '%s: %s -‐ %s' % ( header.get('name'), header.get('columnType'), header.get('dataType'))
ga:source: DIMENSION - STRING ga:visits: METRIC - INTEGER
Handle the results
totals = \ results.get('totalsForAllResults') for metric_name, metric_total \ in totals.iteritems(): print '%s = %s' % \ (metric_name, metric_total)
More data
¤ results.get('containsSampledData')
¤ results.get('profileInfo') ¤ info.get('webPropertyId') # UA-XXXXXXX-X ¤ info.get('profileId') ¤ info.get('profileName')
¤ results.get('itemsPerPage')
¤ results.get('totalResults’)
Limits and Quotas
¤ Quotas ¤ 10,000 requests / profile/ day ¤ 10 concurrent requests per profile
¤ Dimensions and Metrics ¤ 7 dimensions ¤ 10 metrics ¤ Valid combinations ¤ Regular expressions: 128 characters
Other Google Analytics APIs
¤ Multi-Channel Funnels Reporting API ¤ https://developers.google.com/analytics/devguides/reporting/mcf/v3/
¤ Management API ¤ https://developers.google.com/analytics/devguides/config/mgmt/v3/
¤ Real Time Reporting API ¤ http://analytics.blogspot.ca/2013/08/google-analytics-launches-real-
time-api.html
¤ See also: Google Analytics superProxy ¤ https://developers.google.com/analytics/solutions/google-
analytics-super-proxy
Thank you
Vanessa Sabino @bani [email protected] http://www.slideshare.net/vanessasabino/