Struct re_viewer::external::re_chunk_store::QueryExpression

source ·
pub struct QueryExpression {
    pub view_contents: Option<BTreeMap<EntityPath, Option<BTreeSet<ComponentName>>>>,
    pub include_semantically_empty_columns: bool,
    pub include_indicator_columns: bool,
    pub include_tombstone_columns: bool,
    pub filtered_index: Option<Timeline>,
    pub filtered_index_range: Option<ResolvedTimeRange>,
    pub filtered_index_values: Option<BTreeSet<TimeInt>>,
    pub using_index_values: Option<BTreeSet<TimeInt>>,
    pub filtered_is_not_null: Option<ComponentColumnSelector>,
    pub sparse_fill_strategy: SparseFillStrategy,
    pub selection: Option<Vec<ColumnSelector>>,
}
Expand description

Describes a complete query for Rerun’s dataframe API.

§Terminology: view vs. selection vs. filtering vs. sampling

  • The view contents specify which subset of the database (i.e., which columns) the query runs on, expressed as a set of EntityPaths and their associated ComponentNames.

  • The filters filter out rows of data from the view contents. A filter cannot possibly introduce new rows, it can only remove existing ones from the view contents.

  • The samplers sample rows of data from the view contents at user-specified values. Samplers don’t necessarily return existing rows: they might introduce new ones if the sampled value isn’t present in the view contents in the first place.

  • The selection applies last and samples columns of data from the filtered/sampled view contents. Selecting a column that isn’t present in the view contents results in an empty column in the final dataframe (null array).

A very rough mental model, in SQL terms:

SELECT <Self::selection> FROM <Self::view_contents> WHERE <Self::filtered_*>

Fields§

§view_contents: Option<BTreeMap<EntityPath, Option<BTreeSet<ComponentName>>>>

The subset of the database that the query will run on: a set of EntityPaths and their associated ComponentNames.

Defaults to None, which means: everything.

Example (pseudo-code):

view_contents = {
  "world/points": [rr.Position3D, rr.Radius],
  "metrics": [rr.Scalar]
}
§include_semantically_empty_columns: bool

Whether the view_contents should ignore semantically empty columns.

A semantically empty column is a column that either contains no data at all, or where all values are either nulls or empty arrays ([]).

view_contents: QueryExpression::view_contents

§include_indicator_columns: bool

Whether the view_contents should ignore columns corresponding to indicator components.

Indicator components are marker components, generally automatically inserted by Rerun, that helps keep track of the original context in which a piece of data was logged/sent.

view_contents: QueryExpression::view_contents

§include_tombstone_columns: bool

Whether the view_contents should ignore columns corresponding to Clear-related components.

view_contents: QueryExpression::view_contents Clear: re_types_core::archetypes::Clear

§filtered_index: Option<Timeline>

The index used to filter out rows from the view contents.

Only rows where at least 1 column contains non-null data at that index will be kept in the final dataset.

If left unspecified, the results will only contain static data.

Examples: Some(Timeline("frame")), None (only static data).

§filtered_index_range: Option<ResolvedTimeRange>

The range of index values used to filter out rows from the view contents.

Only rows where at least 1 of the view-contents contains non-null data within that range will be kept in the final dataset.

Example: ResolvedTimeRange(10, 20).

§filtered_index_values: Option<BTreeSet<TimeInt>>

The specific index values used to filter out rows from the view contents.

Only rows where at least 1 column contains non-null data at these specific values will be kept in the final dataset.

Example: [TimeInt(12), TimeInt(14)].

§using_index_values: Option<BTreeSet<TimeInt>>

The specific index values used to sample rows from the view contents.

The final dataset will contain one row per sampled index value, regardless of whether data existed for that index value in the view contents. The semantics of the query are consistent with all other settings: the results will be sorted on the filtered_index, and only contain unique index values.

Example: [TimeInt(12), TimeInt(14)].

§filtered_is_not_null: Option<ComponentColumnSelector>

The component column used to filter out rows from the view contents.

Only rows where this column contains non-null data be kept in the final dataset.

Example: ComponentColumnSelector("rerun.components.Position3D").

§sparse_fill_strategy: SparseFillStrategy

Specifies how null values should be filled in the returned dataframe.

Defaults to SparseFillStrategy::None.

§selection: Option<Vec<ColumnSelector>>

The specific columns to sample from the final view contents.

The order of the samples will be respected in the final result.

Defaults to None, which means: everything.

Example: [ColumnSelector(Time("log_time")), ColumnSelector(Component("rerun.components.Position3D"))].

Trait Implementations§

source§

impl Clone for QueryExpression

source§

fn clone(&self) -> QueryExpression

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for QueryExpression

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

Formats the value using the given formatter. Read more
source§

impl Default for QueryExpression

source§

fn default() -> QueryExpression

Returns the “default value” for a type. Read more
source§

impl Hash for QueryExpression

source§

fn hash<__H>(&self, state: &mut __H)
where __H: Hasher,

Feeds this value into the given Hasher. Read more
1.3.0 · source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where H: Hasher, Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
source§

impl PartialEq for QueryExpression

source§

fn eq(&self, other: &QueryExpression) -> bool

This method tests for self and other values to be equal, and is used by ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

This method tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
source§

impl TryFrom<Query> for QueryExpression

§

type Error = TypeConversionError

The type returned in the event of a conversion error.
source§

fn try_from( value: Query ) -> Result<QueryExpression, <QueryExpression as TryFrom<Query>>::Error>

Performs the conversion.
source§

impl Eq for QueryExpression

source§

impl StructuralPartialEq for QueryExpression

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Az for T

source§

fn az<Dst>(self) -> Dst
where T: Cast<Dst>,

Casts the value.
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<Src, Dst> CastFrom<Src> for Dst
where Src: Cast<Dst>,

source§

fn cast_from(src: Src) -> Dst

Casts the value.
source§

impl<T> CheckedAs for T

source§

fn checked_as<Dst>(self) -> Option<Dst>
where T: CheckedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> CheckedCastFrom<Src> for Dst
where Src: CheckedCast<Dst>,

source§

fn checked_cast_from(src: Src) -> Option<Dst>

Casts the value.
§

impl<T> Downcast<T> for T

§

fn downcast(&self) -> &T

§

impl<T> Downcast for T
where T: Any,

§

fn into_any(self: Box<T>) -> Box<dyn Any>

Convert 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>

Convert 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)

Convert &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)

Convert &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
where T: Any + Send + Sync,

§

fn into_any_arc(self: Arc<T>) -> Arc<dyn Any + Sync + Send>

Convert Arc<Trait> (where Trait: Downcast) to Arc<Any>. Arc<Any> can then be further downcast into Arc<ConcreteType> where ConcreteType implements Trait.
source§

impl<T> DynClone for T
where T: Clone,

§

impl<Q, K> Equivalent<K> for Q
where Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,

§

fn equivalent(&self, key: &K) -> bool

Checks if this value is equivalent to the given key. Read more
§

impl<Q, K> Equivalent<K> for Q
where Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,

§

fn equivalent(&self, key: &K) -> bool

Compare self to key and return true if they are equal.
source§

impl<Q, K> Equivalent<K> for Q
where Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,

source§

fn equivalent(&self, key: &K) -> bool

Compare self to key and return true if they are equal.
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

§

impl<T> FromRef<T> for T
where T: Clone,

§

fn from_ref(input: &T) -> T

Converts to this type from a reference to the input type.
§

impl<T> Instrument for T

§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided [Span], returning an Instrumented wrapper. Read more
§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
source§

impl<T, U> Into<U> for T
where U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

source§

impl<T> IntoEither for T

source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts 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 more
source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts 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 more
source§

impl<T> IntoRequest<T> for T

source§

fn into_request(self) -> Request<T>

Wrap the input message T in a tonic::Request
source§

impl<Src, Dst> LosslessTryInto<Dst> for Src
where Dst: LosslessTryFrom<Src>,

source§

fn lossless_try_into(self) -> Option<Dst>

Performs the conversion.
source§

impl<Src, Dst> LossyInto<Dst> for Src
where Dst: LossyFrom<Src>,

source§

fn lossy_into(self) -> Dst

Performs the conversion.
§

impl<T> NoneValue for T
where T: Default,

§

type NoneType = T

§

fn null_value() -> T

The none-equivalent value.
source§

impl<T> OverflowingAs for T

source§

fn overflowing_as<Dst>(self) -> (Dst, bool)
where T: OverflowingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> OverflowingCastFrom<Src> for Dst
where Src: OverflowingCast<Dst>,

source§

fn overflowing_cast_from(src: Src) -> (Dst, bool)

Casts the value.
§

impl<T> Pointable for T

§

const ALIGN: usize = _

The alignment of pointer.
§

type Init = T

The type for initializers.
§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
source§

impl<T> Same for T

§

type Output = T

Should always be Self
source§

impl<T> SaturatingAs for T

source§

fn saturating_as<Dst>(self) -> Dst
where T: SaturatingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> SaturatingCastFrom<Src> for Dst
where Src: SaturatingCast<Dst>,

source§

fn saturating_cast_from(src: Src) -> Dst

Casts the value.
§

impl<T> To for T
where T: ?Sized,

§

fn to<T>(self) -> T
where Self: Into<T>,

Converts to T by calling Into<T>::into.
§

fn try_to<T>(self) -> Result<T, Self::Error>
where Self: TryInto<T>,

Tries to convert to T by calling TryInto<T>::try_into.
source§

impl<T> ToOwned for T
where T: Clone,

§

type Owned = T

The resulting type after obtaining ownership.
source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
source§

impl<T> UnwrappedAs for T

source§

fn unwrapped_as<Dst>(self) -> Dst
where T: UnwrappedCast<Dst>,

Casts the value.
source§

impl<Src, Dst> UnwrappedCastFrom<Src> for Dst
where Src: UnwrappedCast<Dst>,

source§

fn unwrapped_cast_from(src: Src) -> Dst

Casts the value.
§

impl<T> Upcast<T> for T

§

fn upcast(&self) -> Option<&T>

§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

§

fn vzip(self) -> V

§

impl<T> WithSubscriber for T

§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a [WithDispatch] wrapper. Read more
§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a [WithDispatch] wrapper. Read more
source§

impl<T> WrappingAs for T

source§

fn wrapping_as<Dst>(self) -> Dst
where T: WrappingCast<Dst>,

Casts the value.
source§

impl<Src, Dst> WrappingCastFrom<Src> for Dst
where Src: WrappingCast<Dst>,

source§

fn wrapping_cast_from(src: Src) -> Dst

Casts the value.
§

impl<T> Allocation for T
where T: RefUnwindSafe + Send + Sync,

§

impl<T> Ungil for T
where T: Send,

§

impl<T> WasmNotSend for T
where T: Send,

§

impl<T> WasmNotSendSync for T
where T: WasmNotSend + WasmNotSync,

§

impl<T> WasmNotSync for T
where T: Sync,