Tables
rerun.blueprint.table
Configure catalog table layouts, columns, and segment previews.
⚠️ The rerun.blueprint.table namespace is unstable and may change significantly.
CardLayout
dataclass
Display table records as cards.
| PARAMETER | DESCRIPTION |
|---|---|
title
|
Physical Arrow column name to use for card titles. If unset or not found in the table, uses the first visible string field.
TYPE:
|
link
|
Physical Arrow column name containing the target to open when a card is activated.
If unset or not found in the table, uses the first visible field with a
TYPE:
|
fields
|
Fields to configure, in display order, with each source listed at most once.
Listed fields are visible unless |
Column
dataclass
Configure a source column's appearance and behavior in one layout.
| PARAMETER | DESCRIPTION |
|---|---|
source
|
Physical Arrow column name, not a display label.
TYPE:
|
name
|
Display label, overriding
TYPE:
|
editable
|
Allow editing; disabled by default.
Requires write permission on a remote table with a column marked by
TYPE:
|
column_type
|
The component the column's values are shown as.
Takes a component class like
TYPE:
|
visible
|
Override visibility in this layout.
Configured columns are visible by default.
Set to
TYPE:
|
Filter
dataclass
A SQL expression that selects the rows of a table.
Build filters for one column with col, which writes the SQL
the Viewer shows as an editable filter in the filter bar.
Any other SQL expression also filters the table, and the Viewer shows it as SQL text.
A filter has no truth value, so not, and and or raise a TypeError.
| PARAMETER | DESCRIPTION |
|---|---|
sql
|
A SQL expression that evaluates to a boolean, in the generic SQL dialect of DataFusion.
Column names are double-quoted, e.g.
TYPE:
|
FilterColumn
Bases: _ValueFilters
The column a Filter applies to.
Create it with col.
Comparisons such as col("score") >= 3 and the methods of this class return a Filter.
Every filter is one the Viewer shows as an editable filter in its filter bar, when the column has
the type the filter is for:
- numbers:
eq,ne,lt,le,gtandge, or the operators==,!=,<,<=,>and>= - booleans:
is_trueandis_false, and for nullable columns alsois_null,is_not_true,is_not_falseandis_not_null - strings:
str.contains,str.does_not_contain,str.starts_withandstr.ends_with - timestamps:
before,after,betweenand the relative ranges such astoday, and the negated ranges such asnot_betweenandnot_today
The negated filters select the rows where the filter is false or null.
col doesn't know the type of the column, so nothing stops a filter for another type,
such as col("score").str.contains("1") on a number column, or col("tags") >= 3 on a list column.
The Viewer shows such a filter as SQL text.
If the SQL doesn't work on the column, the Viewer shows the error on that filter and doesn't apply it.
For a list column, use the same filters on list.
list
property
list: ListFilters
The values of a list column, e.g. col("tags").list.str.contains("pick").
str
property
str: StringFilters
The filters of a string column, e.g. col("task").str.contains("pick").
after
Select rows with a timestamp at or after timestamp.
A datetime without a time zone is in UTC.
before
Select rows with a timestamp before timestamp.
A datetime without a time zone is in UTC.
between
Select rows with a timestamp at or after start and before end.
A datetime without a time zone is in UTC.
eq
def eq(value: Number) -> Filter
Select rows where the value equals value. Same as col(…) == value.
ge
def ge(value: Number) -> Filter
Select rows where the value is at least value. Same as col(…) >= value.
gt
def gt(value: Number) -> Filter
Select rows where the value is greater than value. Same as col(…) > value.
is_not_null
def is_not_null() -> Filter
Select rows where the value is not null.
For a list column, this selects non-empty lists without nulls.
is_null
def is_null() -> Filter
Select rows where the value is null.
For a list column, this selects null rows, empty lists, and lists that contain a null.
last_week
def last_week() -> Filter
Select rows with a timestamp last week, in the time zone of the Viewer's query session.
le
def le(value: Number) -> Filter
Select rows where the value is at most value. Same as col(…) <= value.
lt
def lt(value: Number) -> Filter
Select rows where the value is less than value. Same as col(…) < value.
ne
def ne(value: Number) -> Filter
Select rows where the value is not value, or is null. Same as col(…) != value.
not_between
Select rows the between filter does not select.
not_last_24_hours
def not_last_24_hours() -> Filter
Select rows the last_24_hours filter does not select.
this_week
def this_week() -> Filter
Select rows with a timestamp this week, in the time zone of the Viewer's query session.
today
def today() -> Filter
Select rows with a timestamp today, in the time zone of the Viewer's query session.
yesterday
def yesterday() -> Filter
Select rows with a timestamp yesterday, in the time zone of the Viewer's query session.
ListFilters
Bases: _ValueFilters
The filters of a list column.
Get them with FilterColumn.list,
e.g. col("scores").list >= 3 or col("tags").list.str.contains("pick").
They are the filters of FilterColumn, and a row is
selected when the filter holds for any value of its list.
The negated filters, such as ne, select the rows where no value matches.
str
property
str: StringFilters
The filters of a string column, e.g. col("task").str.contains("pick").
after
Select rows with a timestamp at or after timestamp.
A datetime without a time zone is in UTC.
before
Select rows with a timestamp before timestamp.
A datetime without a time zone is in UTC.
between
Select rows with a timestamp at or after start and before end.
A datetime without a time zone is in UTC.
eq
def eq(value: Number) -> Filter
Select rows where the value equals value. Same as col(…) == value.
ge
def ge(value: Number) -> Filter
Select rows where the value is at least value. Same as col(…) >= value.
gt
def gt(value: Number) -> Filter
Select rows where the value is greater than value. Same as col(…) > value.
is_not_null
def is_not_null() -> Filter
Select rows where the value is not null.
For a list column, this selects non-empty lists without nulls.
is_null
def is_null() -> Filter
Select rows where the value is null.
For a list column, this selects null rows, empty lists, and lists that contain a null.
last_week
def last_week() -> Filter
Select rows with a timestamp last week, in the time zone of the Viewer's query session.
le
def le(value: Number) -> Filter
Select rows where the value is at most value. Same as col(…) <= value.
lt
def lt(value: Number) -> Filter
Select rows where the value is less than value. Same as col(…) < value.
ne
def ne(value: Number) -> Filter
Select rows where the value is not value, or is null. Same as col(…) != value.
not_between
Select rows the between filter does not select.
not_last_24_hours
def not_last_24_hours() -> Filter
Select rows the last_24_hours filter does not select.
this_week
def this_week() -> Filter
Select rows with a timestamp this week, in the time zone of the Viewer's query session.
today
def today() -> Filter
Select rows with a timestamp today, in the time zone of the Viewer's query session.
yesterday
def yesterday() -> Filter
Select rows with a timestamp yesterday, in the time zone of the Viewer's query session.
PreviewCell
dataclass
Show a recording reference using one or more embedded views.
Preview timing is shared by all preview columns through PreviewsConfig.
PreviewsConfig
Bases: Archetype
Archetype: Shared configuration for every preview cell in a table blueprint.
This archetype is stored at the entity /table alongside archetypes.TableBlueprint.
⚠️ This type is unstable and may change significantly in a way that the data won't be backwards compatible.
__init__
def __init__(
*,
timeline: Utf8Like | None = None,
play_state: PlayStateLike | None = None,
playback_speed: Float64Like | None = None,
start_point: Float64Like | None = None,
) -> None
Create a new instance of the PreviewsConfig archetype.
| PARAMETER | DESCRIPTION |
|---|---|
timeline
|
The timeline used by every preview cell. If left empty a timeline is automatically picked, preferring custom over built-in.
TYPE:
|
play_state
|
Whether every preview cell plays. A single preview can still be played or paused on its own. Defaults to paused, and following plays like playing.
TYPE:
|
playback_speed
|
Playback speed of every preview cell. Defaults to 1.0.
TYPE:
|
start_point
|
Where every preview cell starts, as a fraction of the recording's time range. 0.0 is the start and 1.0 the end. Defaults to 0.5.
TYPE:
|
from_fields
classmethod
def from_fields(
*,
clear_unset: bool = False,
timeline: Utf8Like | None = None,
play_state: PlayStateLike | None = None,
playback_speed: Float64Like | None = None,
start_point: Float64Like | None = None,
) -> PreviewsConfig
Update only some specific fields of a PreviewsConfig.
| PARAMETER | DESCRIPTION |
|---|---|
clear_unset
|
If true, all unspecified fields will be explicitly cleared.
TYPE:
|
timeline
|
The timeline used by every preview cell. If left empty a timeline is automatically picked, preferring custom over built-in.
TYPE:
|
play_state
|
Whether every preview cell plays. A single preview can still be played or paused on its own. Defaults to paused, and following plays like playing.
TYPE:
|
playback_speed
|
Playback speed of every preview cell. Defaults to 1.0.
TYPE:
|
start_point
|
Where every preview cell starts, as a fraction of the recording's time range. 0.0 is the start and 1.0 the end. Defaults to 0.5.
TYPE:
|
SortBy
Encoding: The column and direction a table's rows are sorted by.
⚠️ This type is unstable and may change significantly in a way that the data won't be backwards compatible.
__init__
def __init__(
column: Utf8Like,
*,
direction: SortDirectionLike | None = None,
) -> None
Create a new instance of the SortBy encoding.
| PARAMETER | DESCRIPTION |
|---|---|
column
|
The name of the column the rows are sorted by. Same semantics as
TYPE:
|
direction
|
The direction the rows are sorted in. If not set, the viewer sorts ascending.
TYPE:
|
StringFilters
The filters of a string column.
Get them with FilterColumn.str, e.g. col("task").str.contains("pick").
The text is matched as plain text, ignoring case, not as a regular expression.
contains
Select rows where the value contains text, ignoring case.
does_not_contain
Select rows where the value does not contain text, ignoring case, or is null.
For a list column, this selects rows where no value of the list contains text.
ends_with
Select rows where the value ends with text, ignoring case.
TableBlueprint
dataclass
Configure layouts and segment previews for a catalog table.
This configures a table, not a Viewer viewport Blueprint.
Save it as an .rbl file and register its server-accessible URI with
TableEntry.register_blueprint(uri) or DatasetEntry.register_blueprint(uri, segment_table=True).
See Configure table layouts and segment previews for the full workflow.
| PARAMETER | DESCRIPTION |
|---|---|
table_layout
|
Row-and-column layout, available by default.
TYPE:
|
card_layout
|
Card layout, disabled unless configured.
TYPE:
|
default_layout
|
Initial layout:
TYPE:
|
column_display_mode
|
Column-name formatting in both layouts; defaults to compact formatting.
Explicit
TYPE:
|
previews_config
|
Timeline, play state, and playback speed shared by every
TYPE:
|
filters
|
|
sort_by
|
Source column the rows are sorted by, with an optional direction.
Without a direction the viewer sorts ascending.
Use |
save
TableLayout
dataclass
Display table records as rows and columns.
| PARAMETER | DESCRIPTION |
|---|---|
columns
|
Columns to configure, in display order, with each source listed at most once.
Listed columns appear first and are visible unless |
col
def col(name: str) -> FilterColumn
Start a filter on the column name.
import rerun.blueprint as rrb
from rerun.blueprint.table import col
rrb.TableBlueprint(
filters=[
col("score") >= 3,
col("success").is_true(),
col("task").str.contains("pick"),
col("created").last_week(),
col("tags").list.does_not_contain("broken"),
],
)
For a list column, filter its values with list.
| PARAMETER | DESCRIPTION |
|---|---|
name
|
Physical Arrow column name.
TYPE:
|