Filters and segments

Developers supply filters and segments to Reporting API requests to get subsets of Analytics data. They often ask these questions:

  • What are the differences between filters and segments?
  • When to use filters and when to use segments?

The following sections answer these questions.

Differences between filters and segments

Consider the following three user sessions between time T1 and T2:

Using a segment to request a subset of Analytics data, the following query:

  Dimension: ga:pathPath (Pagepath)
  Metric: ga:pageviews (Pageviews)
  Segment: users::condition::ga:pagePath!=pathToPageB
 

produces this report:

         Page Pageviews
pathToPageA         1
 

For the specified segment, every user session is checked against the segment condition (ga:pagePath!=pathToPageB). For user sessions that meet the condition, all rows are returned; for user sessions that don't meet the condition, no rows are returned. Because segments operate at the session level, the pageview of Page A at session 2 is excluded because the session includes a pageview of Page B. Analytics uses segments to determine

Using a filter to request a subset of Analytics data, the following query:

  Dimension: ga:pathPath (Pagepath)
  Metric: ga:pageviews (Pageviews)
  Filter: ga:pagePath!=pathToPageB
 

produces this report:

        Page Pageviews
pathToPageA         2
 

For the specified filter, all rows of all sessions are examined; only the rows that meet the filter condition (ga:pagePath!=pathToPageB) are returned. Because filters operate at the hit level, the pageview of Page A at session 2 is included although the session includes a pageview of Page B. To a Reporting API request, Analytics returns data representing rows in a table. Adding a filter to the

Filters and segments can be used together to get subsets of Analytics data:

  Dimensions: ga:country and ga:browser
  Metric: ga:pageviews
  Filter: ga:country==Canada
  Segment: users::condition::ga:browser==Chrome

When to use Filters and when to use Segments

The following are supported by segments only:

  • Sequences
  • In list operator []
  • Between (range) operator <>

For example:

  • Get users who used a Windows desktop and then a mobile Android device:
      users::sequence::ga:deviceCategory==desktop;
      ga:operatingSystem==Windows->>
      ga:deviceCategory==mobile;
      ga:operatingSystem==Android
    
  • Get sessions where the browser was Chrome, Firefox, or Opera:
      sessions::condition::ga:browser[]Chrome|Firefox|Opera
    
  • Get sessions in the hours 15 to 22:
      sessions::condition::ga:hour<>15_22
    

As another example, the following complex expression can be specified in a segment only:

  users::condition::perSession::ga:screenviews>5;
  sessions::condition::ga:adGroup=@aaa,
  ga:adTargetingType=@bbb;condition::
  ga:mobileInputSelector=@ccc;ga:campaign=@ddd
 

To get a specific hit (for example, ga:pageviews) from all sessions that match a condition, use a filter:

  filters=ga:pagePath=@analytis/devguides/reporting
Was this helpful?
How can we improve it?