pub struct VirtualDataSlice { /* private fields */ }Expand description
A columnar data slice returned from a virtual server view query.
This struct represents a rectangular slice of data from a view, stored
internally as Arrow builders during population and frozen into a
RecordBatch on first consumption.
Implementations§
Source§impl VirtualDataSlice
impl VirtualDataSlice
pub fn new(config: ViewConfig) -> Self
Sourcepub fn from_arrow_ipc(&mut self, ipc: &[u8]) -> Result<(), Box<dyn Error>>
pub fn from_arrow_ipc(&mut self, ipc: &[u8]) -> Result<(), Box<dyn Error>>
Loads data from Arrow IPC file format bytes, with automatic post-processing based on the view configuration.
When group_by is active, extracts __GROUPING_ID__ and
__ROW_PATH_N__ columns to build self.row_path, then removes
__GROUPING_ID__ from the output RecordBatch. The
__ROW_PATH_N__ columns are kept in the frozen batch so
downstream Arrow IPC consumers (with_typed_arrays, used by
viewer-charts to drive its categorical/numeric axis resolvers
and tree-hierarchy walkers) see them inline — matching the
native perspective-server’s to_arrow output when
emit_legacy_row_path_names: false.
When split_by is active, renames data columns by replacing _
with | (the DuckDB PIVOT separator).
Also coerces non-standard Arrow types (e.g. Decimal128, Int64)
to Perspective-compatible types.
Sourcepub fn render_to_columns_json(
&mut self,
style: RowPathStyle,
) -> Result<String, Box<dyn Error>>
pub fn render_to_columns_json( &mut self, style: RowPathStyle, ) -> Result<String, Box<dyn Error>>
Serializes the data to a column-oriented JSON string.
style selects between the legacy __ROW_PATH__ sidecar
(Sidecar, used by to_columns) and the native per-level
__ROW_PATH_N__ columns (PerLevel, currently unused — reserved
for the future deprecation of __ROW_PATH__). See
RowPathStyle for context.
Sourcepub fn set_col<T: SetVirtualDataColumn>(
&mut self,
name: &str,
grouping_id: Option<usize>,
index: usize,
value: T,
) -> Result<(), Box<dyn Error>>
pub fn set_col<T: SetVirtualDataColumn>( &mut self, name: &str, grouping_id: Option<usize>, index: usize, value: T, ) -> Result<(), Box<dyn Error>>
Sets a value in a column at the specified row index.
If group_by_index is Some, the value is added to the __ROW_PATH__
column as part of the row’s group-by path. Otherwise, the value is
inserted into the named column.
Creates the column if it does not already exist.
Trait Implementations§
Auto Trait Implementations§
impl Freeze for VirtualDataSlice
impl !RefUnwindSafe for VirtualDataSlice
impl Send for VirtualDataSlice
impl Sync for VirtualDataSlice
impl Unpin for VirtualDataSlice
impl UnsafeUnpin for VirtualDataSlice
impl !UnwindSafe for VirtualDataSlice
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> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§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 more