Message path syntax

Message path syntax is used throughout Studio to help you drill down to the exact information you want to inspect in your data.

Topics

Specify the topic name to display all messages for that topic, e.g. /some_topic.

Nested values

Specify the topic, then drill down to a nested value with dot notation, e.g. /some_topic.some_value.some_nested_value.

Index into an array with bracket notation, e.g. /some_topic.many_values[0].width.

Slices

Slices will return an array of values, e.g. /some_topic.many_values[1:3].x or even /some_topic.many_values[:].x to get all values.

Negative slices work backwards from the end of the array, e.g. [-1] gets the last element, and [-2:-1] gets the last 2 elements.

Slice on a variable, e.g. /some_topic.many_values[$my_start_idx:$my_end_idx].

Filters

Filter messages based on their fields’ boolean, number, or string values. Only equality is currently supported.

Filter on fields in the top-level message using curly brackets – e.g. /some_topic{foo.bar==123}. Messages that don't match the filter will be skipped entirely.

You can also filter on a message’s nested field values using a combination of slices and filters: /some_topic.many_values[:]{id==123}.x.

In addition to filtering on primitive values, you can filter on a variable: /some_topic.many_values[:]{id==$my_id}.

When you apply multiple filters, only messages that satisfy all filters will be returned (i.e. an AND expression): /some_topic.many_values[:]{some_str_field=="abc"}{some_num_field==5}{some_boolean_field==false}.x.

We don't support escaping quotation marks in strings, but you can use single or double quotes, which allows you to express most strings, e.g. {value='string with "double" quotes'}.