Product Updates  

Introducing Derived Columns

By Eben Freeman  |   Last modified on January 11, 2019

We’re excited to introduce derived columns! Derived columns let you run queries based on the value of an expression that’s computed from the columns in an event, making it easier to answer questions such as:

  • What does service performance look like from the perspective of our ten highest-value customers?
  • How many requests spent more than 50% of their request time talking to a database?
  • What fraction of service requests complete in less than 100 milliseconds?
  • How did performance compare between builds older than build ID 4300, and all newer builds?

Let’s look at an example. Say you have events from a user-facing web service, and you wonder “how many requests completed in less than 100 milliseconds, and how many requests took longer than that?”

Previously, you could have added the filter request_time_ms < 100 and eyeballed the count of fast requests. Derived columns now let you directly express this breakdown using a simple function syntax. In this case, you can use the expression

LTE($request_time_ms, 100)

which evaluates to true if the value of the request_time_ms column is less than 100, and false otherwise. You can create a derived column from the ‘Break Down’ clause in the query builder:

creating a derived column

It’s also easy to further refine this query: for example, to compare the count of fast vs slow requests only for a specific customer, or for a specific build number, etc.

More Structure For Your Data

Conceptually, derived columns let you associate extra metadata to events, without needing to change the structure of the raw event. For example, let’s say you want to know “which requests spent most of their request time talking to the database?” But your events only contain absolute timings, e.g.:

    "request_time_ms": 36.4,
    "db_query_time_ms": 7.1

Well, you could compute a db_query_time_fraction field, and add it to your events before sending them off to Honeycomb. But that’s not always practical. Instead, you can use the derived column DIV($db_query_time_ms, $request_time_ms) to get answers in a matter of seconds:

reusing a derived column

In later posts, we’ll explore more applications for derived columns. In the meantime, take a look at the complete documentation and give it a try!


Related Posts

Product Updates  

Your Data Just Got a Facelift: Introducing Honeycomb’s Data Visualization Updates

Over the past few months, we've been hard at work modernizing Honeycomb’s data visualizations to address consistency issues, confusing displays, access to settings, and to...

OpenTelemetry   Product Updates  

OpenTelemetry 2022 Holiday Goodie Bag

We here at Honeycomb really like OpenTelemetry and goodie bags, so we have a nice little OpenTelemetry-flavored holiday goodie bag to share with you before...

Connectors & Integrations   Product Updates  

New Honeycomb Integrations Let You Bubble Up Lurking AWS Issues

Today, we’re announcing the expansion of Honeycomb integrations with various AWS services. This update now covers a much wider swath of AWS services, makes it...