Data Reporting Limits

Google Analytics handles a massive amount of data per day per property. Given the number of large Google Analytics customers, the volume of data passing through can sometimes be an issue. As a result, Google has implemented limits on the quantity of data that can pass.

Google Analytics uses a visits table to store data about each session in a property. Pre-aggregated data for common reports are stored in processed or aggregate tables which allow the reports to be generated quickly and without sampling. The reports are aggregated daily and, for reports with longer date ranges, in four day groups. If unique dimension value combinations exceed a particular table’s limit, then the excess values will be grouped into the (other) category. With certain dimension values hidden in (other), data can be interpreted incorrectly as valuable information can be lost. It’s important to note that despite the data not being visible in the Google Analytics interface, it is still tracked. If several dimensions display (other), the data can still be exported to BigQuery and viewed there.     

If you want to identify if a particular dimension may hit the limit on processed rows, look at it’s cardinality. We’ve written about cardinality before on this site, as a refresher, cardinality is the number of elements in a set. The term originates from mathematics and examples usually look something like this:

 

If set {A} contains [1, 2, 3], then the cardinality of {A} is 3

 

Let’s use a real-world example. Dimensions are usually discrete variables—that is, they have a finite number of possible values. The cardinality of a dimension is the number of values it has. Take “Currency Code” for example, where it’s cardinality is at maximum 162 values. We know this because there are currently only 162 possible values for Currency Code according to the ISO 4217 Currency Code listing. Barring any implementation errors, the Currency Code dimension in a GA report is unlikely to trigger the row limit on a processed table.

However, other dimensions have a large number of values. Some of them, like “Transaction ID” or “Count of Sessions” have a theoretically infinite number of values. These high cardinality dimensions are more likely to have (other) appear as a value due to hitting the limit on processed table rows.

When running reports in Google Analytics, it is important for the analyst to keep in mind reporting limits. There are several types of limits:

 

Daily Limits:

  • For Standard Google Analytics, the limit for processed table rows per day is 50 thousand rows, while the limit for processed table rows per day for Google Analytics 360 is 75 thousand rows.

 

 

 

Multi-Day Limits:

  • For standard Google Analytics, the limit is 100 thousand rows while the limit for Google Analytics 360 customers is 150 thousand rows.

 

 

 

Report Query Limits:

  • For any date range, Google Analytics returns a maximum of 1 million rows.

 

 

 

  • Custom Table Limits:
    • This feature is only available for Google Analytics 360 customers. The custom table limit is 1 million unique rows per day.
  • Unsampled Report Limits:
    • This feature is only available for Google Analytics 360 customers. The unsampled report table limit is 3 million unique rows.

 

For more information on how to reduce cardinality in your Google Analytics reports, read our post on high cardinality dimensions.

One Comment

  1. In your first image (daily limits), could you please help me understand why would total number of rows are not exactly 50,000 (or 75,000 if GA360)?
    If the high cardinality ‘(Other)’ row kicks in, then I would assume that the report, would display at least the limit and then group anything over the limit into ‘(Other)’. In your image it shows 26,895.
    The multi day report does make sense since those are retrieved from the daily tables which may already be affected by high cardinality.

    Reply

Leave a Comment