The tap-google-analytics extractor pulls data from Google Analytics (Universal Analytics API - Deprecated) that can then be sent to a destination using a loader.
Alternate Implementations
- Meltano (default)🥇
- Saïd Tezel 🥈
- Wise 🥉
- Andrea Mostosi
Getting Started
Prerequisites
If you haven't already, follow the initial steps of the Getting Started guide:
Installation and configuration
-
Add the tap-google-analytics extractor to your
project using
:meltano add
-
Configure the tap-google-analytics
settings using
:meltano config
-
Test that extractor settings are valid using
:meltano config
meltano add extractor tap-google-analytics
meltano config tap-google-analytics set --interactive
meltano config tap-google-analytics test
Next steps
Follow the remaining steps of the Getting Started guide:
If you run into any issues, learn how to get help.
Capabilities
The current capabilities for
tap-google-analytics
may have been automatically set when originally added to the Hub. Please review the
capabilities when using this extractor. If you find they are out of date, please
consider updating them by making a pull request to the YAML file that defines the
capabilities for this extractor.
This plugin has the following capabilities:
- about
- catalog
- discover
- schema-flattening
- state
- stream-maps
You can
override these capabilities or specify additional ones
in your meltano.yml
by adding the capabilities
key.
Settings
The
tap-google-analytics
settings that are known to Meltano are documented below. To quickly
find the setting you're looking for, click on any setting name from the list:
client_secrets
end_date
key_file_location
oauth_credentials.client_id
oauth_credentials.client_secret
oauth_credentials.refresh_token
reports
reports_list
start_date
view_id
Expand To Show SDK Settings
You can also list these settings using
with the meltano config
list
subcommand:
meltano config tap-google-analytics list
You can
override these settings or specify additional ones
in your meltano.yml
by adding the settings
key.
Please consider adding any settings you have defined locally to this definition on MeltanoHub by making a pull request to the YAML file that defines the settings for this plugin.
Client Secrets (client_secrets)
-
Environment variable:
TAP_GOOGLE_ANALYTICS_CLIENT_SECRETS
Follow the above steps for Key File Location but instead of providing a path you can provide the serialized json directly. This can be useful for ephemeral runtime environments where its easier to provide an environment variable instead of a file.
Configure this setting directly using the following Meltano command:
meltano config tap-google-analytics set client_secrets [value]
End Date (end_date)
-
Environment variable:
TAP_GOOGLE_ANALYTICS_END_DATE
Date up to when historical data will be extracted.
Configure this setting directly using the following Meltano command:
meltano config tap-google-analytics set end_date [value]
Key File Location (key_file_location)
-
Environment variable:
TAP_GOOGLE_ANALYTICS_KEY_FILE_LOCATION
How to get
Follow the steps below if you don't already have a valid client_secrets.json
to upload. The process below can take over 10 minutes, but it's a one-time setup that's well worth it.
This extractor supports service account based authorization, where an administrator manually creates a service account with the appropriate permissions to view the account, property, and view you wish to fetch data from.
To access your Google Analytics data, the "Analytics Reporting API" and "Analytics API" both need to be enabled. These need to be enabled for a project inside the same organization as your Google Analytics account.
Step 1: Creating Service Account Credentials
As a first step, you need to create a new project in Google Cloud Platform or use an existing one:
Sign in to the Google Account you are using for managing Google Analytics (you must have Manage Users permission at the account, property, or view level).
Open the Service accounts page. If prompted, select a project or create a new one to use for accessing Google Analytics.
- Click "Create service account"
In the Create service account window, type a name for the service account, and click Create
.
We do not need to provide any additional permissions for this account, so click Continue
in the Service account permissions
configuration page.
We also do not need to grant access to any users for this service account, as we only need the key.
Click Create Key
, select JSON
as the key type and create a new private key. Then click Save
and store it locally as client_secrets.json
.
Meltano will use the private key in this client_secrets.json
file to connect with the Google Analytics API.
Step 2: Linking Credentials to Google Analytics
The newly created service account will have an email address that looks similar to:
service-account-name@PROJECT-ID.iam.gserviceaccount.com
To grant this service account access to your Google Analytics data, add the email address as a new user to your Google Analytics account, property or view through the "Admin > User Management" page.
Only the Read & Analyze permissions are needed as Meltano only extracts data to generate reports.
Step 3: Enabling the APIs
- Visit the Google Analytics Reporting API dashboard and make sure that the project you used in the previous step is selected.
Now enable the API using the button at the top, so that the button will say "Disable API" instead:
- Next, visit the Google Analytics API dashboard, make sure that the project you used in the previous step is selected, and enable this API as well.
Configure this setting directly using the following Meltano command:
meltano config tap-google-analytics set key_file_location [value]
OAuth Credentials Client ID (oauth_credentials.client_id)
-
Environment variable:
TAP_GOOGLE_ANALYTICS_OAUTH_CREDENTIALS_CLIENT_ID
See https://developers.google.com/analytics/devguides/reporting/core/v4/authorization#OAuth2Authorizing.
Takes precedence over Key File Location if both are specified.
Configure this setting directly using the following Meltano command:
meltano config tap-google-analytics set oauth_credentials client_id [value]
OAuth Credentials Client Secret (oauth_credentials.client_secret)
-
Environment variable:
TAP_GOOGLE_ANALYTICS_OAUTH_CREDENTIALS_CLIENT_SECRET
Google Analytics Client Secret. See https://developers.google.com/analytics/devguides/reporting/core/v4/authorization#OAuth2Authorizing.
Configure this setting directly using the following Meltano command:
meltano config tap-google-analytics set oauth_credentials client_secret [value]
OAuth Credentials Refresh Token (oauth_credentials.refresh_token)
-
Environment variable:
TAP_GOOGLE_ANALYTICS_OAUTH_CREDENTIALS_REFRESH_TOKEN
Google Analytics Refresh Token. See https://developers.google.com/analytics/devguides/reporting/core/v4/authorization#OAuth2Authorizing.
Configure this setting directly using the following Meltano command:
meltano config tap-google-analytics set oauth_credentials refresh_token [value]
Reports (reports)
-
Environment variable:
TAP_GOOGLE_ANALYTICS_REPORTS
Project-relative path to JSON file with the definition of the reports to be generated.
See https://ga-dev-tools.appspot.com/dimensions-metrics-explorer/ for valid dimensions and metrics.
The JSON structure expected is as follows:
[
{ "name" : "name of stream to be used",
"dimensions" :
[
"Google Analytics Dimension",
"Another Google Analytics Dimension",
// ... up to 7 dimensions per stream ...
],
"metrics" :
[
"Google Analytics Metric",
"Another Google Analytics Metric",
// ... up to 10 metrics per stream ...
]
},
// ... as many streams / reports as the user wants ...
]
For example, if you want to extract user stats per day in a users_per_day
stream and session stats per day and country in a sessions_per_country_day
stream:
[
{ "name" : "users_per_day",
"dimensions" :
[
"ga:date"
],
"metrics" :
[
"ga:users",
"ga:newUsers"
]
},
{ "name" : "sessions_per_country_day",
"dimensions" :
[
"ga:date",
"ga:country"
],
"metrics" :
[
"ga:sessions",
"ga:sessionsPerUser",
"ga:avgSessionDuration"
]
}
]
Configure this setting directly using the following Meltano command:
meltano config tap-google-analytics set reports [value]
Reports List (reports_list)
-
Environment variable:
TAP_GOOGLE_ANALYTICS_REPORTS_LIST
List of Google Analytics Reports Definitions
Configure this setting directly using the following Meltano command:
meltano config tap-google-analytics set reports_list [value]
Start Date (start_date)
-
Environment variable:
TAP_GOOGLE_ANALYTICS_START_DATE
This property determines how much historical data will be extracted. Please be aware that the larger the time period and amount of data, the longer the initial extraction can be expected to take.
Configure this setting directly using the following Meltano command:
meltano config tap-google-analytics set start_date [value]
View ID (view_id)
-
Environment variable:
TAP_GOOGLE_ANALYTICS_VIEW_ID
The ID for the view to fetch data from.
How to get
To get your View ID:
- Visit Google Analytics: https://analytics.google.com/
- Log in if you haven't already.
- Open the account/property/view selector in the top left corner
- Select the account, property, and view that you would like to connect with Meltano
- You will see the View ID displayed inside the selector below the name of the view (e.g. "All Web Site Data"):
188274549
Configure this setting directly using the following Meltano command:
meltano config tap-google-analytics set view_id [value]
Expand To Show SDK Settings
Flattening Enabled (flattening_enabled)
-
Environment variable:
TAP_GOOGLE_ANALYTICS_FLATTENING_ENABLED
'True' to enable schema flattening and automatically expand nested properties.
Configure this setting directly using the following Meltano command:
meltano config tap-google-analytics set flattening_enabled [value]
Flattening Max Depth (flattening_max_depth)
-
Environment variable:
TAP_GOOGLE_ANALYTICS_FLATTENING_MAX_DEPTH
The max depth to flatten schemas.
Configure this setting directly using the following Meltano command:
meltano config tap-google-analytics set flattening_max_depth [value]
Stream Map Config (stream_map_config)
-
Environment variable:
TAP_GOOGLE_ANALYTICS_STREAM_MAP_CONFIG
User-defined config values to be used within map expressions.
Configure this setting directly using the following Meltano command:
meltano config tap-google-analytics set stream_map_config [value]
Stream Maps (stream_maps)
-
Environment variable:
TAP_GOOGLE_ANALYTICS_STREAM_MAPS
Config object for stream maps capability. For more information check out Stream Maps.
Configure this setting directly using the following Meltano command:
meltano config tap-google-analytics set stream_maps [value]
Something missing?
This page is generated from a YAML file that you can contribute changes to.
Edit it on GitHub!Looking for help?
#plugins-general
channel.