Drill (Advanced segmentation)


Countly Drill is advanced segmentation feature, available with Enterprise Edition. Drill can be very powerful when it comes to understanding segmented data.

Before giving specific examples, it’s important to understand how Drill works. Here is a Drill screen.


  1. Here you select data type you are going to segment: either session, event, views, crashes or feedback. Your selection of different data types will affect overall graph.
  2. You can define granularity (monthly/weekly/hourly/daily, depending on the selected time), or change what graph shows (e.g. users, times or times/users).
  3. Here’s the part where you can select a filter based on User Properties (e.g. First Seen, City, Device, Platform, Name), Custom Properties (e.g. Facebook Login, Twitter name, Has Apple Watch OS etc), Campaign Properties (e.g. Campaign Name). Depending on the selected data type, different filter categories are listed as well: event properties, crash segments, view segments, feedback segments.
  4. You can view the table that corresponds to the graph here.
  5. You can reach your previous historical bookmarks here (see Bookmarks).
  6. You can view available actions (see Other actions).
  7. You can execute a query when you finished building it.


Now, on (1), when you select Sessions, Events, Views, Crashes or Feedback, then you’ll see that Select a Filter part in (3) will change. All changes are depicted below:

When you select “Sessions”, you’ll see:

  • User Properties (e.g. First Seen, City, Device, Platform, Name)
  • Event Properties (e.g. Sum, Duration)
  • Custom Properties if set (e.g. Facebook Login, Twitter name, Has Apple Watch OS, etc.)
  • Campaign Properties (e.g. Campaign Name)

When you select “Events” and then an event name, you’ll see:

  • Event Segments (e.g. Level, Mode, Difficulty)
  • Event Properties (e.g. Sum, Duration)
  • Plus everything you see when you select “Sessions” (see list above)

When you select “Views", you’ll see:

  • View Segments (e.g. View name, Landing, Exit)
  • Plus everything you see when you select “Sessions” (see list above)

When you select “Crashes”, you’ll see

  • Crash name
  • Crash Segments (e.g Manufacturer, CPU, Fatal/non-fatal, current RAM, total disk, etc.)
  • Plus everything you see when you select “Sessions” (see list above)

When you select “Feedback", you’ll see:

  • Feedback Segments (e.g. Comments, Ratings, etc.)
  • Plus everything you see when you select “Sessions” (see list above)


Input types

In drill, when you click on a drop down menu as you segment your data, there are different input types, based on what kind of data has been collected in the specified property:

  • Incoming data can be number. In this case, input can be any arbitrary number.
  • Incoming data can be date. In this case, input would be calendar time.
  • Incoming data can be string. In this case, input would be a dropdown with all provided values up to a limit (defined in configuration). By default it is 100 entries. If this limit is reached, then depending on configuration, it either switches to plain arbitrary input string, or a searchable list.

Note that if you have only dropdown with selectable values (e.g. without any option to insert arbitrary values), it means that this property have not yet reached the limit of unique values and all those unique values are listed in the dropdown.


List of available operators is updated based on the selected data type. Here is a complete list of offered operators:

  • is, is not: Basic comparison operators for strings, numbers and dates.
  • greater than, at least, less than, at most: Operators that can be used with numerical values and dates.
  • contains, doesn't contain: These operators are used to check whether a field contains provided string value (e.g. <Name contains John>).
  • is set: In some cases, a field might not exist at all for a portion of event records. This operator gives you a better level of control over those fields. (e.g. Events where browser version is not provided: <Browser version is set False>).

Drill by examples

Before we start to get more into how to drill down data, we need to make sure you understand all about Countly custom events since Countly Drill is all about custom events.

In the custom event system Countly lets you keep track of your own metrics in a pretty simple way by sending event data like this;

	"key": "Ride",
	"count": 1,
	"sum": 15.99,
        "duration": 500,
	"segmentation": {
		"Car Type": "Luxury",
		"Time of Day": "15:00",
		"Coupon Used": "CLYROCKS"

Here we are tracking Ride event for our made up app that has segmentation properties called Car Type, Time of Day, and Coupon Used which lets us keep track of various occurrences of the same event. We use the sum property to store the amount paid for the ride.

We normally get a report that looks like below for our Ride event. Which is a great way to see a high level overview of how things are going and performing single level segmentations on our data.


Using Countly Drill we will be able to;

  • Perform advanced segmentations on our data by applying AND, OR and BY filters to our segmentation properties as well as user properties such as Device, App Version, Platform, Platform Version, Session Count, Session Duration, First Session, Last Session, Country, City and Carrier
  • View data on a line, pie or bar chart, whichever makes more sense for the current data
  • Change the time bucket displayed on the chart and table to hourly, daily, weekly or monthly
  • View how many times the event occurred as well as how many users performed this event and an average (times/users)

A simple query

Without further due we want to show you some of these highlights using real reports for our custom event Ride;

So to view Ride events with "Car Type": "Luxury", we simply build the query below and click "Execute query". Once the execution is done, graph and data table will be updated accordingly. Please note that changing period also triggers the execution of a query.


Segment by a field

So far, so good. We now only keep events with "Car Type": "Luxury". Let's make this slightly more complicated. We extend our query by adding another condition on duration and segment those events by Coupon Used.
Show Ride events with  that has a Duration higher than 600 (seconds) and show the report segmented by Coupon Used:
And please show this on a pie chart:

Segment by multiple fields

Segmenting by multiple fields? Is it even possible? The answer is simply yes.

Using multiple fields for segmenting allows you to see Cartesian product of values of provided fields. This is typically helpful when you need to analyze correlation between values of fields. For instance, you can easily detect frequently co-occurring values (e.g. event count, user count) of two fields (e.g. Device, App version). Let's say we want to know number of event occurrences grouped by (Device, App Version) pairs:

  Version 3.2 Version 3.1 Version 3.0
Device A 100 4 1
Device B 1 1 3
Device C 22 4 0

According to the table, our event has occurred significantly more for (Device A, Version 3.2) pair. So, it can be stated that there is something special for the pair, which is possibly an important insight for our app. 

Drill UI allows you to select up to 3 fields to be used in BY queries. Visualization of multiple segmented data is almost no different from single one. You can still use 3 basic chart types (line, pie and bar chart) to visualize single or multiple segmented queries. There is only a nuance for segment names: 

  • 1-BY (Platform): Android, iOS, Mac, Windows
  • 2-BY (Platform, App Version): (Android | 2.3), (Android | 2.0), (iOS | 2.3), (iOS | 2.0), etc.
  • 3-BY (Platform, App Version, Platform Version): (Android | 2.3 | 1.0), (Android | 2.0 | 1.0), (Android | 2.3 | 2.0), (Android | 2.0 | 2.0), etc.

So let's see this in action. Show Ride events segmented by "Platform" and "App Version"


Each bar represents a pair like (2.0 | iOS), (2.8 | Android), etc.

For 2-way segmented queries, a custom visualization method similar to the example table above, punchcard, is offered too:


In this chart type, circle sizes are arranged proportionally to other items in the table. That is, circle sizes represent the relative difference between pairs.

It is important to note that number of segment pairs (or triples) can be large, especially when there are many different values for each field. For those cases, it can be a nice idea to check data table as well:


Segment by Country

Country segmentation is handled slightly different from others. Since Country is a special field, segmented values are displayed on a world map. For multiple segmented queries, however, visualization options fall back to standards and Country names are shown as like other fields. 

Show Ride events with "Car Type": "Luxury" or "Car Type": "Basic" that has a "Coupon Used": "CLYROCKS" and show the report segmented by Country

The output is:


This is all great but will I define these filters every time I need to see a report? No - we have bookmarks for that. Just add to a bookmark, and then reach all bookmarks at once and run previously saved queries again. To add a bookmark, click on "Actions" and "Add Query to Bookmarks" in the popped up menu.
Then give your bookmark a name and a short description. You can make your bookmark visible to everyone, or just keep it private.
Once you saved the new bookmark, you can view it under Bookmarks tab:

Other actions

Drill offers you a set of useful actions in addition to bookmarks. 


Save to Report Manager: You can create drill reports to view a particular drill query later. These reports can be accessed from Report Manager. You can also attach your reports as widgets to your custom dashboards.  

Send a Message: You can send push notifications to users matching your query.

View User Profiles: You can view matching users in User Profiles.

Session drill

Session Drill is an extension to popular Countly Drill which provides the same awesomeness for your session data. You don't need to do anything extra to take advantage of Session Drill.

Every view under analytics menu now has a Drill button as shown below which takes you to Drill view and applies the related filter for you.


For this particular case when you click the Drill button under Devices view, you will automatically be navigated to Drill with a BY filter on Device. You can continue to drill down this data by applying more filters.


Currently you can apply any combination of AND, OR, BY filters to below user properties;

  • App Version
  • Carrier
  • Country
  • City
  • First Session
  • Last Payment (available only if Revenue Analytics is active)
  • Last Session
  • Platform
  • Platform Version
  • Resolution
  • Session Count
  • Total Session Duration

We could have added thousand more items to this list but we believe you are ready to see it for yourself at this point :) Go on and sign up for a free Countly Enterprise Edition account and experience the magic!

Was this article helpful?
0 out of 0 found this helpful

Looking for help?