Files
rerun-io--rerun/docs/snippets/all/concepts/query-and-transform/dataframe_query_example.py
T
2026-07-13 13:05:14 +08:00

52 lines
1.3 KiB
Python

"""Query and display the first 10 rows of a recording."""
import atexit
import math
import os
import tempfile
from datafusion import col
import rerun as rr
# should be a cross-platform way to generate a rrd path.
RRD_PATH = tempfile.mktemp(suffix=".rrd")
atexit.register(
lambda: os.unlink(RRD_PATH) if os.path.exists(RRD_PATH) else None
)
# region: setup
# create some data
times = list(range(64))
scalars = [math.sin(t / 10.0) for t in times]
# log the data to a temporary recording
with rr.RecordingStream("rerun_example_dataframe_query") as rec:
rec.save(RRD_PATH)
rec.send_columns(
"/data",
indexes=[rr.TimeColumn("step", sequence=times)],
columns=rr.Scalars.columns(scalars=scalars),
)
# endregion: setup
# region: query
# load the demo recording in a temporary catalog
with rr.server.Server(datasets={"dataset": [RRD_PATH]}) as server:
# obtain a dataset from the catalog
dataset = server.client().get_dataset("dataset")
# (optional) filter interesting data
dataset_view = dataset.filter_contents("/data")
# obtain a DataFusion dataframe
df = dataset_view.reader(index="step")
# (optional) filter rows using DataFusion expressions
df = df.filter(col("/data:Scalars:scalars")[0] > 0.95)
# execute the query
print(df) # or convert to Pandas, Polars, PyArrow, etc.
# endregion: query