Struct rerun_bindings::dataframe::PyRecordingView
source · pub struct PyRecordingView {
pub(crate) recording: PyRecordingHandle,
pub(crate) query_expression: QueryExpression,
}
Expand description
A view of a recording restricted to a given index, containing a specific set of entities and components.
See [Recording.view(…)
][rerun.dataframe.Recording.view] for details on how to create a RecordingView
.
Note: RecordingView
APIs never mutate the underlying view. Instead, they
always return new views with the requested modifications applied.
The view will only contain a single row for each unique value of the index
that is associated with a component column that was included in the view.
Component columns that are not included via the view contents will not
impact the rows that make up the view. If the same entity / component pair
was logged to a given index multiple times, only the most recent row will be
included in the view, as determined by the row_id
column. This will
generally be the last value logged, as row_ids are guaranteed to be
monotonically increasing when data is sent from a single process.
Fields§
§recording: PyRecordingHandle
§query_expression: QueryExpression
Implementations§
source§impl PyRecordingView
impl PyRecordingView
fn select_args( args: &Bound<'_, PyTuple>, columns: Option<Vec<AnyColumn>>, ) -> PyResult<Option<Vec<ColumnSelector>>>
source§impl PyRecordingView
impl PyRecordingView
A view of a recording restricted to a given index, containing a specific set of entities and components.
Can only be created by calling view(...)
on a Recording
.
The only type of index currently supported is the name of a timeline.
The view will only contain a single row for each unique value of the index. If the same entity / component pair
was logged to a given index multiple times, only the most recent row will be included in the view, as determined
by the row_id
column. This will generally be the last value logged, as row_ids are guaranteed to be monotonically
increasing when data is sent from a single process.
sourcefn schema(&self, py: Python<'_>) -> PyResult<PySchema>
fn schema(&self, py: Python<'_>) -> PyResult<PySchema>
The schema describing all the columns available in the view.
This schema will only contain the columns that are included in the view via the view contents.
sourcefn select(
&self,
py: Python<'_>,
args: &Bound<'_, PyTuple>,
columns: Option<Vec<AnyColumn>>,
) -> PyResult<PyArrowType<Box<dyn RecordBatchReader + Send>>>
fn select( &self, py: Python<'_>, args: &Bound<'_, PyTuple>, columns: Option<Vec<AnyColumn>>, ) -> PyResult<PyArrowType<Box<dyn RecordBatchReader + Send>>>
Select the columns from the view.
If no columns are provided, all available columns will be included in the output.
The selected columns do not change the rows that are included in the
view. The rows are determined by the index values and the components
that were included in the view contents, or can be overridden with
[.using_index_values()
][rerun.dataframe.RecordingView.using_index_values].
If a column was not provided with data for a given row, it will be
null
in the output.
The output is a [pyarrow.RecordBatchReader
][] that can be used to read
out the data.
§Parameters
*args : AnyColumn The columns to select. columns : Optional[SequenceAnyColumn], optional Alternatively the columns to select can be provided as a sequence.
§Returns
pa.RecordBatchReader A reader that can be used to read out the selected data.
sourcefn select_static(
&self,
py: Python<'_>,
args: &Bound<'_, PyTuple>,
columns: Option<Vec<AnyColumn>>,
) -> PyResult<PyArrowType<Box<dyn RecordBatchReader + Send>>>
fn select_static( &self, py: Python<'_>, args: &Bound<'_, PyTuple>, columns: Option<Vec<AnyColumn>>, ) -> PyResult<PyArrowType<Box<dyn RecordBatchReader + Send>>>
Select only the static columns from the view.
Because static data has no associated index values it does not cause a row to be generated in the output. If your view only contains static data this method allows you to select it without needing to provide index values.
This method will always return a single row.
Any non-static columns that are included in the selection will generate a warning and produce empty columns.
§Parameters
*args : AnyColumn The columns to select. columns : Optional[SequenceAnyColumn], optional Alternatively the columns to select can be provided as a sequence.
§Returns
pa.RecordBatchReader A reader that can be used to read out the selected data.
sourcefn filter_range_sequence(&self, start: i64, end: i64) -> PyResult<Self>
fn filter_range_sequence(&self, start: i64, end: i64) -> PyResult<Self>
Filter the view to only include data between the given index sequence numbers.
This range is inclusive and will contain both the value at the start and the value at the end.
The view must be of a sequential index type to use this method.
§Parameters
start : int The inclusive start of the range. end : int The inclusive end of the range.
§Returns
RecordingView A new view containing only the data within the specified range.
The original view will not be modified.
sourcefn filter_range_seconds(&self, start: f64, end: f64) -> PyResult<Self>
fn filter_range_seconds(&self, start: f64, end: f64) -> PyResult<Self>
Filter the view to only include data between the given index values expressed as seconds.
This range is inclusive and will contain both the value at the start and the value at the end.
The view must be of a temporal index type to use this method.
§Parameters
start : int The inclusive start of the range. end : int The inclusive end of the range.
§Returns
RecordingView A new view containing only the data within the specified range.
The original view will not be modified.
sourcefn filter_range_nanos(&self, start: i64, end: i64) -> PyResult<Self>
fn filter_range_nanos(&self, start: i64, end: i64) -> PyResult<Self>
Filter the view to only include data between the given index values expressed as seconds.
This range is inclusive and will contain both the value at the start and the value at the end.
The view must be of a temporal index type to use this method.
§Parameters
start : int The inclusive start of the range. end : int The inclusive end of the range.
§Returns
RecordingView A new view containing only the data within the specified range.
The original view will not be modified.
sourcefn filter_index_values(&self, values: IndexValuesLike<'_>) -> PyResult<Self>
fn filter_index_values(&self, values: IndexValuesLike<'_>) -> PyResult<Self>
Filter the view to only include data at the provided index values.
The index values returned will be the intersection between the provided values and the original index values.
This requires index values to be a precise match. Index values in Rerun are represented as i64 sequence counts or nanoseconds. This API does not expose an interface in floating point seconds, as the numerical conversion would risk false mismatches.
§Parameters
values : IndexValuesLike The index values to filter by.
§Returns
RecordingView A new view containing only the data at the specified index values.
The original view will not be modified.
sourcefn filter_is_not_null(&self, column: AnyComponentColumn) -> PyResult<Self>
fn filter_is_not_null(&self, column: AnyComponentColumn) -> PyResult<Self>
Filter the view to only include rows where the given component column is not null.
This corresponds to rows for index values where this component was provided to Rerun explicitly
via .log()
or .send_columns()
.
§Parameters
column : AnyComponentColumn The component column to filter by.
§Returns
RecordingView A new view containing only the data where the specified component column is not null.
The original view will not be modified.
sourcefn using_index_values(&self, values: IndexValuesLike<'_>) -> PyResult<Self>
fn using_index_values(&self, values: IndexValuesLike<'_>) -> PyResult<Self>
Replace the index in the view with the provided values.
The output view will always have the same number of rows as the provided values, even if
those rows are empty. Use with [.fill_latest_at()
][rerun.dataframe.RecordingView.fill_latest_at]
to populate these rows with the most recent data.
This requires index values to be a precise match. Index values in Rerun are represented as i64 sequence counts or nanoseconds. This API does not expose an interface in floating point seconds, as the numerical conversion would risk false mismatches.
§Parameters
values : IndexValuesLike The index values to use.
§Returns
RecordingView A new view containing the provided index values.
The original view will not be modified.
sourcefn fill_latest_at(&self) -> Self
fn fill_latest_at(&self) -> Self
Populate any null values in a row with the latest valid data according to the index.
§Returns
RecordingView A new view with the null values filled in.
The original view will not be modified.
Trait Implementations§
source§impl Clone for PyRecordingView
impl Clone for PyRecordingView
source§fn clone(&self) -> PyRecordingView
fn clone(&self) -> PyRecordingView
1.0.0 · source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read moresource§impl IntoPy<Py<PyAny>> for PyRecordingView
impl IntoPy<Py<PyAny>> for PyRecordingView
source§impl PyClassImpl for PyRecordingView
impl PyClassImpl for PyRecordingView
source§const IS_BASETYPE: bool = false
const IS_BASETYPE: bool = false
source§const IS_SUBCLASS: bool = false
const IS_SUBCLASS: bool = false
source§const IS_MAPPING: bool = false
const IS_MAPPING: bool = false
source§const IS_SEQUENCE: bool = false
const IS_SEQUENCE: bool = false
§type ThreadChecker = SendablePyClass<PyRecordingView>
type ThreadChecker = SendablePyClass<PyRecordingView>
§type PyClassMutability = <<PyAny as PyClassBaseType>::PyClassMutability as PyClassMutability>::MutableChild
type PyClassMutability = <<PyAny as PyClassBaseType>::PyClassMutability as PyClassMutability>::MutableChild
§type BaseNativeType = PyAny
type BaseNativeType = PyAny
PyAny
by default, and when you declare
#[pyclass(extends=PyDict)]
, it’s PyDict
.fn items_iter() -> PyClassItemsIter
fn lazy_type_object() -> &'static LazyTypeObject<Self>
fn dict_offset() -> Option<isize>
fn weaklist_offset() -> Option<isize>
source§impl<'a, 'py> PyFunctionArgument<'a, 'py> for &'a PyRecordingView
impl<'a, 'py> PyFunctionArgument<'a, 'py> for &'a PyRecordingView
source§impl<'a, 'py> PyFunctionArgument<'a, 'py> for &'a mut PyRecordingView
impl<'a, 'py> PyFunctionArgument<'a, 'py> for &'a mut PyRecordingView
source§impl PyMethods<PyRecordingView> for PyClassImplCollector<PyRecordingView>
impl PyMethods<PyRecordingView> for PyClassImplCollector<PyRecordingView>
fn py_methods(self) -> &'static PyClassItems
source§impl PyTypeInfo for PyRecordingView
impl PyTypeInfo for PyRecordingView
source§fn type_object_raw(py: Python<'_>) -> *mut PyTypeObject
fn type_object_raw(py: Python<'_>) -> *mut PyTypeObject
§fn type_object_bound(py: Python<'_>) -> Bound<'_, PyType>
fn type_object_bound(py: Python<'_>) -> Bound<'_, PyType>
§fn is_type_of_bound(object: &Bound<'_, PyAny>) -> bool
fn is_type_of_bound(object: &Bound<'_, PyAny>) -> bool
object
is an instance of this type or a subclass of this type.§fn is_exact_type_of_bound(object: &Bound<'_, PyAny>) -> bool
fn is_exact_type_of_bound(object: &Bound<'_, PyAny>) -> bool
object
is an instance of this type.impl DerefToPyAny for PyRecordingView
Auto Trait Implementations§
impl Freeze for PyRecordingView
impl !RefUnwindSafe for PyRecordingView
impl Send for PyRecordingView
impl Sync for PyRecordingView
impl Unpin for PyRecordingView
impl !UnwindSafe for PyRecordingView
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
source§impl<T> CheckedAs for T
impl<T> CheckedAs for T
source§fn checked_as<Dst>(self) -> Option<Dst>where
T: CheckedCast<Dst>,
fn checked_as<Dst>(self) -> Option<Dst>where
T: CheckedCast<Dst>,
source§impl<Src, Dst> CheckedCastFrom<Src> for Dstwhere
Src: CheckedCast<Dst>,
impl<Src, Dst> CheckedCastFrom<Src> for Dstwhere
Src: CheckedCast<Dst>,
source§fn checked_cast_from(src: Src) -> Option<Dst>
fn checked_cast_from(src: Src) -> Option<Dst>
source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
source§default unsafe fn clone_to_uninit(&self, dst: *mut T)
default unsafe fn clone_to_uninit(&self, dst: *mut T)
clone_to_uninit
)§impl<T> Conv for T
impl<T> Conv for T
§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
Box<dyn Trait>
(where Trait: Downcast
) to Box<dyn Any>
. Box<dyn Any>
can
then be further downcast
into Box<ConcreteType>
where ConcreteType
implements Trait
.§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Rc<Trait>
(where Trait: Downcast
) to Rc<Any>
. Rc<Any>
can then be
further downcast
into Rc<ConcreteType>
where ConcreteType
implements Trait
.§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
&Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
generate &Any
’s vtable from &Trait
’s.§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
&mut Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
generate &mut Any
’s vtable from &mut Trait
’s.§impl<T> DowncastSync for T
impl<T> DowncastSync for T
§impl<T> FromPyObject<'_> for Twhere
T: PyClass + Clone,
impl<T> FromPyObject<'_> for Twhere
T: PyClass + Clone,
§fn extract_bound(obj: &Bound<'_, PyAny>) -> Result<T, PyErr>
fn extract_bound(obj: &Bound<'_, PyAny>) -> Result<T, PyErr>
§impl<'py, T> FromPyObjectBound<'_, 'py> for Twhere
T: FromPyObject<'py>,
impl<'py, T> FromPyObjectBound<'_, 'py> for Twhere
T: FromPyObject<'py>,
§fn from_py_object_bound(ob: Borrowed<'_, 'py, PyAny>) -> Result<T, PyErr>
fn from_py_object_bound(ob: Borrowed<'_, 'py, PyAny>) -> Result<T, PyErr>
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
source§impl<T> IntoEither for T
impl<T> IntoEither for T
source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self
into a Left
variant of Either<Self, Self>
if into_left
is true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read moresource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self
into a Left
variant of Either<Self, Self>
if into_left(&self)
returns true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read moresource§impl<T> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
source§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
T
in a tonic::Request
source§impl<Src, Dst> LosslessTryInto<Dst> for Srcwhere
Dst: LosslessTryFrom<Src>,
impl<Src, Dst> LosslessTryInto<Dst> for Srcwhere
Dst: LosslessTryFrom<Src>,
source§fn lossless_try_into(self) -> Option<Dst>
fn lossless_try_into(self) -> Option<Dst>
source§impl<Src, Dst> LossyInto<Dst> for Srcwhere
Dst: LossyFrom<Src>,
impl<Src, Dst> LossyInto<Dst> for Srcwhere
Dst: LossyFrom<Src>,
source§fn lossy_into(self) -> Dst
fn lossy_into(self) -> Dst
source§impl<T> OverflowingAs for T
impl<T> OverflowingAs for T
source§fn overflowing_as<Dst>(self) -> (Dst, bool)where
T: OverflowingCast<Dst>,
fn overflowing_as<Dst>(self) -> (Dst, bool)where
T: OverflowingCast<Dst>,
source§impl<Src, Dst> OverflowingCastFrom<Src> for Dstwhere
Src: OverflowingCast<Dst>,
impl<Src, Dst> OverflowingCastFrom<Src> for Dstwhere
Src: OverflowingCast<Dst>,
source§fn overflowing_cast_from(src: Src) -> (Dst, bool)
fn overflowing_cast_from(src: Src) -> (Dst, bool)
§impl<T> Pipe for Twhere
T: ?Sized,
impl<T> Pipe for Twhere
T: ?Sized,
§fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
§fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
self
and passes that borrow into the pipe function. Read more§fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
self
and passes that borrow into the pipe function. Read more§fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
§fn pipe_borrow_mut<'a, B, R>(
&'a mut self,
func: impl FnOnce(&'a mut B) -> R,
) -> R
fn pipe_borrow_mut<'a, B, R>( &'a mut self, func: impl FnOnce(&'a mut B) -> R, ) -> R
§fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
self
, then passes self.as_ref()
into the pipe function.§fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
self
, then passes self.as_mut()
into the pipe
function.§fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
self
, then passes self.deref()
into the pipe function.§impl<T> Pointable for T
impl<T> Pointable for T
§impl<T> PyErrArguments for T
impl<T> PyErrArguments for T
§impl<T> PyTypeCheck for Twhere
T: PyTypeInfo,
impl<T> PyTypeCheck for Twhere
T: PyTypeInfo,
source§impl<T> SaturatingAs for T
impl<T> SaturatingAs for T
source§fn saturating_as<Dst>(self) -> Dstwhere
T: SaturatingCast<Dst>,
fn saturating_as<Dst>(self) -> Dstwhere
T: SaturatingCast<Dst>,
source§impl<Src, Dst> SaturatingCastFrom<Src> for Dstwhere
Src: SaturatingCast<Dst>,
impl<Src, Dst> SaturatingCastFrom<Src> for Dstwhere
Src: SaturatingCast<Dst>,
source§fn saturating_cast_from(src: Src) -> Dst
fn saturating_cast_from(src: Src) -> Dst
§impl<T> Tap for T
impl<T> Tap for T
§fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
Borrow<B>
of a value. Read more§fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
BorrowMut<B>
of a value. Read more§fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
AsRef<R>
view of a value. Read more§fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
AsMut<R>
view of a value. Read more§fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
Deref::Target
of a value. Read more§fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
Deref::Target
of a value. Read more§fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
.tap()
only in debug builds, and is erased in release builds.§fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
.tap_mut()
only in debug builds, and is erased in release
builds.§fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
.tap_borrow()
only in debug builds, and is erased in release
builds.§fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
.tap_borrow_mut()
only in debug builds, and is erased in release
builds.§fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
.tap_ref()
only in debug builds, and is erased in release
builds.§fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
.tap_ref_mut()
only in debug builds, and is erased in release
builds.§fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
.tap_deref()
only in debug builds, and is erased in release
builds.