OPAL Verbs

Verbs process sets of rows. This page lists every OPAL verb grouped by category.

Aggregate Verbs

Aggregate verbs establish an aggregate context: multiple input rows generate fewer, summarizing, output rows.

VerbDescription
aggregateCombine aggregate functions over metric columns while collapsing rows to the grouping keys you choose.
alignTurns a raw metric-interface dataset into interval rows on a time grid by evaluating aggregate expressions that each pick exactly
bucketizeAlias of timechart.
dedupCollapses duplicate rows while preserving the input column layout and dataset kind.
distinctAlias of dedup.
fillAdds rows on an aligned temporal grid wherever a group has no row in an alignment bucket, keeps values from real observations on
histogramGenerate an approximated equi-width histogram for the selected expression.
make_referenceBuilds a compact reference Table by aggregating a temporal input across the full history available in the dataset, materialized so
make_sessionGroup events or intervals that are close to each other into sessions, and calculate aggregations over each session.
makesessionDeprecated alias of make_session.
merge_eventsMerge consecutive events into new events based on merge conditions.
pivotThe pivot verb rotates a table by transforming rows into columns.
reaggregateDeprecated alias of aggregate.
rollupRollup raw metrics into aligned metrics.
statsbyComputes aggregate expressions over the input, optionally partitioned by `group_by(.
timechartBin (in time) and aggregate point or interval table columns through time, based on (optional) grouping columns.
timestatsAggregate columns at every point in time, based on (optional) grouping columns.
unpivotThe unpivot verb rotates a table by transforming a list of columns into rows.

Filter Verbs

Filter verbs select particular rows from the input row set, emitting the matches as output.

VerbDescription
alwaysKeeps every row whose primary-key group had the predicate evaluate to true on every grouped row inside the chosen time window.
bottomkRetains rows that belong to the lowest-ranked groups in the current query window and adds an int64 _c_rank column giving each
everKeeps every row whose primary-key group had at least one row where the predicate evaluated to true inside the chosen time window.
filterExclude rows from the input dataset that do not match the given predicate expression.
filter_lastKeeps rows whose boolean predicate is true and drops all others while preserving the input schema (aside from optional internal
limitSelect the first count rows based on the current ordering of the input and filter out the rest.
neverKeeps every row whose primary-key group had no row where the predicate evaluated to true inside the chosen time window.
topkRetains rows that belong to the highest-ranked groups in the current query window and adds an int64 _c_rank column giving each

Join Verbs

Join verbs link multiple datasets together. They may generate more, fewer, or the same number of output rows as input rows, depending on the join condition and verb.

Join cost considerations

Joins are a powerful tool that can increase the amount of data collected and credits consumed. In order to keep your queries efficient, it is useful to check that the join being used is the most efficient one that will work for your use case.

From most expensive to least expensive:

  • lookup or leftjoin between two Resource or Interval datasets
    • This uses an interval overlapping band-join and an additional temporal left outer join. Prefer join to lookup in this case.
  • join between two Resource or Interval datasets
    • This only uses an interval overlapping band-join
  • lookup, leftjoin, or join between one Event and one Resource or Interval dataset (with or without window functions)
  • join or leftjoin between two Event datasets with window functions
    • These all use a point-in-interval band-join
  • lookup, leftjoin, or join between two Event datasets (without window functions), or between one Table and another dataset.
    • These use simple relational joins
VerbDescription
existsKeeps rows from the primary input where the join predicate matches at least one row from another dataset at some time within the
followReturns rows from the joined dataset (the single additional dataset referenced in the predicates) where the join condition matches
follow_notReturns rows from the joined dataset (the single additional dataset referenced in the predicates) where the join condition matches
fulljoinPerforms a temporal full outer join between the primary input and one other dataset: every row from either side appears at
joinPerforms an inner join between the pipeline input and exactly one other dataset, keeping rows where the join predicate holds and
leftjoinPerforms a temporal left outer join between the default input and exactly one other dataset, preserving every left-hand row and
lookupEnriches each input row with columns from a related dataset using a left-outer temporal join, while keeping the input dataset kind
lookup_ip_infoUsing a value or column of type IPv4, look up corresponding fields associated with the IP address.
merge_eventDeprecated alias of update_resource.
mergeeventDeprecated alias of update_resource.
not_existsReturns rows from the primary input where the join predicate matches no row from the additional dataset at any time within the
surroundingOuter joins datasets by matching row time to a specified frame as well as column values.
unionCombines the main pipeline input with every referenced additional dataset into one dataset whose rows are the union of all inputs.
update_resourceBuilds new columns on a Resource dataset by matching each resource row to Event rows on a full primary-key or candidate-key

Metadata Verbs

Metadata verbs modify the metadata of the dataset and the columns in the dataset, rather than directly acting on the data itself.

Certain metadata verbs may affect how the dataset is presented, such as whether column links are shown, or whether data is packed.

VerbDescription
add_keyDeclares an extra candidate key: the listed columns together are treated as identifying a resource instance for metadata and
addfkDeprecated alias of set_link.
addkeyDeprecated alias of add_key.
addmetricDeprecated alias of set_metric.
changelogDeprecated alias of make_event.
colenumDeprecated alias of set_col_enum.
colimmutableDeprecated alias of set_col_immutable.
colshowDeprecated alias of set_col_visible.
drop_interfaceRemoves named interface bindings from dataset metadata without changing row data or column definitions.
droptimeDeprecated alias of make_table.
fkdropDeprecated alias of unset_link.
interfaceMap fields of this dataset to a pre-defined interface.
make_eventCreates an Event dataset from an input Table, Interval, or Resource dataset.
make_intervalCreates an Interval dataset from an input Table, Event, or Resource dataset.
make_metricCreates a metric dataset from dataset with precomputed time grid.
make_referenceBuilds a compact reference Table by aggregating a temporal input across the full history available in the dataset, materialized so
make_resourceCreates a Resource dataset from an input Event or Interval dataset.
make_sessionGroup events or intervals that are close to each other into sessions, and calculate aggregations over each session.
make_tableConverts a non-Table dataset to kind Table by clearing temporal metadata and key constraints while keeping the same data columns.
makeresourceDeprecated alias of make_resource.
makesessionDeprecated alias of make_session.
merge_eventsMerge consecutive events into new events based on merge conditions.
set_col_enumMark specified columns as enumerations, or not, so that the user interface can present them appropriately.
set_col_immutableMark resource columns as time immutable (time-invariant), or not.
set_col_searchableInclude or exclude columns from any future full-text search operation.
set_col_visibleControls whether existing columns are shown or hidden in the UI by updating column visibility metadata on the output schema.
set_labelDeclare the 'label' of the output to be the designated column.
set_linkDeclares a foreign key from the current dataset to another bound dataset or stage so resources can be resolved through the
set_metricRegister a metric, with its metadata defined in an options object.
set_metric_metadataPoints the current metric dataset at another bound dataset that implements the "metric_metadata" interface so type, unit, and
set_pkAlias of set_primary_key.
set_primary_keyDeclare the primary key of the output as consisting of one or more named columns.
set_timestampDeclare the timestamp of the output to be the named column, which must have the timestamp type.
set_valid_fromDeclare the valid from of the output to be the named column, which must be a timestamp column.
set_valid_toDeclare the valid to of the output to be the named column, which must be a timestamp column.
setlabelDeprecated alias of set_label.
setpkDeprecated alias of set_primary_key.
setvfDeprecated alias of set_valid_from.
setvtDeprecated alias of set_valid_to.
sortSort rows in the dataset based on ordering functions applied to column fields or column name provided as arguments.
timeshiftShifts each row forward or backward in time by adding a compile-time duration to the valid-from timestamp and, when the dataset
timewrapReplicates the input count times along a timeline, shifting each copy by 0, 1, …, count - 1 multiples of a fixed
unset_all_linksDrop all outbound links without having to specify the individual labels.
unset_keysRemove the primary and candidate key declarations from the dataset.
unset_linkDrop a foreign key by specifying the foreign keys label.
unsortClears all column sort ordering metadata that may have been recorded by a prior sort verb.

Metrics Verbs

Metrics verbs create, aggregate, or normalize time series values. They are often used with aggregate functions.

VerbDescription
addmetricDeprecated alias of set_metric.
aggregateCombine aggregate functions over metric columns while collapsing rows to the grouping keys you choose.
alignTurns a raw metric-interface dataset into interval rows on a time grid by evaluating aggregate expressions that each pick exactly
make_metricCreates a metric dataset from dataset with precomputed time grid.
reaggregateDeprecated alias of aggregate.
rollupRollup raw metrics into aligned metrics.
set_metricRegister a metric, with its metadata defined in an options object.
timeshiftShifts each row forward or backward in time by adding a compile-time duration to the valid-from timestamp and, when the dataset
timewrapReplicates the input count times along a timeline, shifting each copy by 0, 1, …, count - 1 multiples of a fixed

Projection Verbs

Projection verbs create, remove, or rename columns in a dataset.

VerbDescription
coldropDeprecated alias of drop_col.
colmakeDeprecated alias of make_col.
colpickDeprecated alias of pick_col.
colregexDeprecated alias of extract_regex.
colrenameDeprecated alias of rename_col.
drop_colRemoves one or more named columns from the default dataset while preserving every other column, its type, and the dataset kind.
extract_regexAdd one or more columns by matching capture names in a regular expression against a given source expression.
make_colEvaluates one or more name:expression bindings per row, inserting new columns or replacing existing columns of the same name
pick_colProjects the pipeline to an explicit list of columns in argument order, binding each output name to an expression and dropping
rename_colRenames existing columns while keeping the full row shape, using `newName:@.

Semistructured Verbs

Semistructured verbs act upon, or produce, arrays or objects that are treated as scalars. E.g., a single column may contain multiple values in an array, or multiple key/value tuples in an object.

The values inside semi-structured containers are stored as variants, and must be cast to the type you expect them to have. If the array or object contains a value of an unexpected type, the cast returns null.

VerbDescription
colregexDeprecated alias of extract_regex.
extract_regexAdd one or more columns by matching capture names in a regular expression against a given source expression.
flattenExpands a column that holds an object, array, or variant into many rows—one per nested path—while copying the other input
flatten_allGiven an object or array input, recursively flatten all child and intermediate elements into key-value columns.
flatten_leavesGiven an object or array input, recursively flatten all child elements into key-value columns, returning only leaf values.
flatten_singleGiven an object or array input, flatten the first level of child elements into key-value columns.
flattenallDeprecated alias of flatten_all.
flattenleavesDeprecated alias of flatten_leaves.
flattensingleDeprecated alias of flatten_single.