Berserk Docs
Tabular Operators

Introduction to Tabular Operators

Tabular operator overview and categories

Tabular operators transform an input table into an output table. In KQL, they are chained with the pipe (|) character — each operator receives the result of the previous step:

logs
| where severity_number >= 17
| project timestamp, body, service
| sort by timestamp desc
| take 100

The first line (logs) is the dataset name. Each subsequent | applies an operator that filters, reshapes, or aggregates the data. For a full introduction to writing queries, see Writing Queries.

Filter Operators

OperatorDescription
searchFull-text search across all string columns in the input table.
tailReturns up to the specified number of most recent rows by $time descending.
takeReturns up to the specified number of rows from the input table.
topReturns the top N rows sorted by the specified columns.
trace-findExperimental: This operator is experimental and its semantics may change.
whereFilters rows based on a boolean predicate expression.

Project Operators

OperatorDescription
extendAdds computed columns to the input table while keeping all existing columns.
projectSelects specific columns from the input and optionally computes new columns or renames existing ones.
project-awaySelects all columns from the input except the specified columns.

Aggregate Operators

OperatorDescription
countReturns the number of rows in the input table as a single row with a single column named Count.
distinctReturns a table with the distinct combination of the provided columns of the input table.
make-seriesCreates series of aggregated values along a specified axis, typically time-based.
summarizeGroups rows and calculates aggregate values over each group.

Sort Operators

OperatorDescription
sortSorts the rows of the input table by one or more columns in ascending or descending order.

Join Operators

OperatorDescription
joinMerges rows of two tables by matching values of specified columns.

Parse Operators

OperatorDescription
parseExtracts structured data from a string column using a pattern with named captures.
parse-whereExtracts structured data from a string column and filters out rows where the pattern does not match.

Logging Operators

OperatorDescription
fieldstatsAnalyzes dynamic column values to discover field paths and their statistics, returning a table with AttributePath, Type, Cardinality, Frequency, Hint, and HintExhaustive columns.
otel-log-statsSingle-pass OTEL log exploration: discovers attributes and computes top values with severity breakdown (error/warn/info/debug counts).

Other Operators

OperatorDescription
annotateAdds type annotations to dynamic columns, enabling forward-flow type inference and zero-copy access when runtime type matches annotation.
forkExecutes multiple independent pipelines from a single source, producing multiple result tables.
getschemaReturns a table with column names and types from the input table schema.
invokeInvokes a tabular function with the piped input as the first (tabular) argument.
mv-applyApplies a subquery to each record and returns the union of results.
mv-expandExpands multi-value dynamic arrays or property bags into multiple rows, duplicating other columns.
rangeGenerates a single-column table of values in an arithmetic sequence.
renderRenders results using a specified visualization type.
unionCombines rows from two or more tables into a single result set.

On this page