By Rudderstack Team

How to load data from Google Analytics to Snowflake

This post helps you with loading your data from Analytics to Snowflake. Suppose you are looking to get analytics-ready data without the manual hassle. In that case, you can integrate Analytics to Snowflake with RudderStack, so you can focus on what matters, getting value out of your data.

Access your data on Google Analytics

The first step in loading your Analytics data to any data warehouse solution is to access your data and start extracting it.

The Google Analytics Reporting API is the most advanced programmatic method to access report data in Google Analytics. The API also allows you to interact with the Google Analytics account programmatically you own, creating reports and dashboards that can be viewed from within your GA account and embed them into other applications.

Data from Google Analytics is always coming in the form of a report, which means that you have to construct a report and request it from Google Analytics for a specific time period.

Google Analytics is accessed in the same way that every other Google API is. You need to leverage the Google API console to manage applications and access various APIs, including Google Analytics.

In addition to the above, the things that you have to keep in mind when dealing with the Google Analytics API are:

  1. Rate limits. Every API has some rate limits that you have to respect.
  2. Authentication. You authenticate on Google Analytics using an OAuth.
  3. Paging and dealing with a big amount of data. Platforms like Google Analytics that are dealing with clickstream data tend to generate a lot of data, like events on your web properties.

About Google Analytics

Google Analytics is a freemium web analytics service offered by Google that tracks and reports website traffic. Google Analytics is the most commonly used service for tracking the traffic on a website and an invaluable tool, especially for marketers.

Google Analytics has evolved into a powerful tool that offers reports about your visitors and a full set of tools to perform clickstream analysis ranging from a live view to complex funnel analytics and event tracking.

The free version of Google Analytics offers a sampled view of every data, which suffices for most cases as it gives a very accurate view of what is happening. There’s also the option of using Google Analytics Premium, which also grants you access to all the raw events, but this is part of a paid version of the service.

Transform and prepare Google Analytics Data for Snowflake

After you have accessed your data on Google Analytics, you will have to transform it based on two main factors,

  • The limitations of the database that is going to be used
  • The type of analysis that you plan to perform

Each system has specific limitations on the data types and data structures that it supports. Suppose, for example, you want to push data into Google BigQuery. In that case, you can send nested data like JSON directly, but keep in mind that the data you get from Google Analytics is in the form of a tabular report closer to what a CSV or a spreadsheet looks like.

Of course, when you are dealing with tabular data stores, like Microsoft SQL Server, this is not an option. Instead, you will have to flatten out your data, just as in the case of JSON, before loading it into the database.

Also, you have to choose the right data types. Again, depending on the system that you will send data to and the data types that the API exposes to you, you will have to make the right choices. These choices are important because they can limit the expressivity of your queries and limit your analysts on what they can do directly out of the database. Google Analytics has a very limited set of available data types which means that your work to do these mappings is much easier and straightforward, but nonetheless equally important with any other case of a data source.

In order to understand and model your Analytics data correctly, you will need to understand that any data coming out of it is in the form of a report. The report is like a spreadsheet, and it can be naturally mapped into a table. So more or less, you will end up with a one-to-one mapping between a report and a table on your database.

You also need to keep in mind that because of the report nature of data, you will not find any primary keys that can be used for deduplication and reference. This is something that you have to construct by understanding the nature of your report’s data.

Also, as Google analytics is sampling data to generate the report, you might see slightly different values if you pull the same report for the same period, more than once.

Data in Snowflake is organized around tables with a well-defined set of columns, with each one having a specific data type.

Snowflake supports a rich set of data types. It is worth mentioning that a number of semi-structured data types are also supported. It is possible to load data directly in JSON, Avro, ORC, Parquet, or XML format with Snowflake. Hierarchical data is treated as a first-class citizen, similar to what Google BigQuery offers.

There is also one notable common data type that Snowflake does not support. LOB or large object data type is not supported. Instead, you should use a BINARY or VARCHAR type instead. But these types are not that useful for data warehouse use cases.

A typical strategy for loading data from Google Analytics to Snowflake is to create a schema where you will map each API endpoint to a table.

Each key inside the Google Analytics API endpoint response should be mapped to a column of that table, and you should ensure the right conversion to a Snowflake data type.

Of course, you will have to ensure that as the data types from the Google Analytics API might change, you will adapt your database tables accordingly; there’s no such thing as automatic data type casting.

After you have a complete and well-defined data model or schema for Snowflake, you can move forward and start loading your data into the database.

Load data from Google Analytics to Snowflake

Usually, data is loaded into Snowflake in a bulk way, using the COPY INTO command. Files containing data, usually in JSON format, are stored in a local file system or in Amazon S3 buckets. Then a COPY INTO command is invoked on the Snowflake instance, and data is copied into a data warehouse.

The files can be pushed into Snowflake using the PUT command into a staging environment before the COPY command is invoked.

Another alternative is to upload data directly into a service like Amazon S3, from where Snowflake can access data directly.

Updating your Google Analytics data on Snowflake

As you will be generating more data on Google Analytics, you must update your older data on Snowflake. This includes new records and updates to older records that have been updated on Google Analytics for any reason.

You will need to periodically check Google Analytics for new dat