Struct perspective_client::Table

source ·
pub struct Table { /* private fields */ }
Expand description

Table is Perspective’s columnar data frame, analogous to a Pandas DataFrame or Apache Arrow. Table supports appending data, in-place updates, removal by index, and notifications on update.

A Table contains columns, each of which have a unique name, are strongly and consistently typed, and contains rows of data conforming to the column’s type. Each column in a Table must have the same number of rows, though not every row must contain data; null-values are used to indicate missing values in the dataset.

The columns of a Table are immutable after creation, which means their names and data types cannot be changed after the Table has been created. Columns cannot be added or deleted after creation, but a View can be used to select an arbitrary set of columns from the Table.

Implementations§

source§

impl Table

source

pub fn get_index(&self) -> Option<String>

Returns the name of the index column for the table.

§Examples

JavaScript:

const table = await client.table("x,y\n1,2\n3,4", { index: "x" });
const index = table.get_index(); // "x"

Python:

table = await async_client.table("x,y\n1,2\n3,4", index="x");
index = table.get_index() # "x"

Rust:

let options = TableInitOptions {index: Some("x".to_string()), ..default() };
let table = client.table("x,y\n1,2\n3,4", options).await;
let tables = client.open_table("table_one").await;
source

pub fn get_limit(&self) -> Option<u32>

Returns the user-specified row limit for this table.

source

pub async fn clear(&self) -> ClientResult<()>

Removes all the rows in the Table, but preserves everything else including the schema, index, and any callbacks or registered View instances.

Calling Table::clear, like Table::update and Table::remove, will trigger an update event to any registered listeners via View::on_update.

source

pub async fn delete(&self) -> ClientResult<()>

Delete this Table and cleans up associated resources, assuming it has no View instances registered to it (which must be deleted first).

Tables do not stop consuming resources or processing updates when they are garbage collected in their host language - you must call this method to reclaim these.

source

pub async fn columns(&self) -> ClientResult<Vec<String>>

Returns the column names of this Table in “natural” order (the ordering implied by the input format).

[```]javascript const table = await worker.table(“x,y\n1,2”); const columns = await table.columns();

// Prints [["x", "y"]] console.log(columns); [```]

source

pub async fn size(&self) -> ClientResult<usize>

Returns the number of rows in a Table.

source

pub async fn schema(&self) -> ClientResult<HashMap<String, ColumnType>>

Returns a table’s Schema, a mapping of column names to column types.

The mapping of a Table’s column names to data types is referred to as a Schema. Each column has a unique name and a data type, one of:

  • ["boolean"] - A boolean type
  • ["date"] - A timesonze-agnostic date type (month/day/year)
  • ["datetime"] - A millisecond-precision datetime type in the UTC timezone
  • ["float"] - A 64 bit float
  • ["integer"] - A signed 32 bit integer (the integer type supported by JavaScript)
  • ["string"] - A String data type (encoded internally as a dictionary)

Note that all Table columns are nullable, regardless of the data type.

source

pub async fn make_port(&self) -> ClientResult<i32>

Create a unique channel ID on this Table, which allows View::on_update callback calls to be associated with the Table::update which caused them.

source

pub async fn on_delete( &self, on_delete: Box<dyn Fn() + Send + Sync + 'static> ) -> ClientResult<u32>

Register a callback which is called exactly once, when this Table is deleted with the Table::delete method.

Table::on_delete resolves when the subscription message is sent, not when the delete event occurs.

source

pub async fn remove_delete(&self, callback_id: u32) -> ClientResult<()>

Removes a listener with a given ID, as returned by a previous call to Table::on_delete.

source

pub async fn remove(&self, input: TableData) -> ClientResult<()>

Removes rows from this Table with the index column values supplied. If the Table doesn’t have an index column, this operation is inert

  • TODO This operations should be an error, not inert, when lacking an index.

Removes propagate to any View::on_update callbacks for Views derived from this Table.

§Arguments
  • indices - A list of index column values for rows that should be removed.
§Examples
tbl = Table({"a": [1, 2, 3]}, index="a")
tbl.remove([2, 3])
source

pub async fn replace(&self, input: TableData) -> ClientResult<()>

Replace all rows in this Table with the input data, coerced to this Table’s existing Schema.

source

pub async fn update( &self, input: TableData, options: UpdateOptions ) -> ClientResult<()>

Updates the rows of this table. Updated rows are pushed down to any derived View objects.

§Arguments
  • input - The input data for this table. tables are immutable after creation, so this method cannot be called with a schema.
  • options - XXX
source

pub async fn validate_expressions( &self, expressions: Expressions ) -> ClientResult<ValidateExpressionsData>

Validates the given expressions.

§Examples

Python:

(XXX: does this need to be awaited)

table = await async_client.validate_expressions({"computed": '"Quantity" + 4'})
source

pub async fn view(&self, config: Option<ViewConfigUpdate>) -> ClientResult<View>

Create a new View from this table with a specified configuration.

Trait Implementations§

source§

impl Clone for Table

source§

fn clone(&self) -> Table

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

Auto Trait Implementations§

§

impl Freeze for Table

§

impl !RefUnwindSafe for Table

§

impl Send for Table

§

impl Sync for Table

§

impl Unpin for Table

§

impl !UnwindSafe for Table

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> 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<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

impl<T> Instrument for T

source§

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

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

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> 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<V, T> VZip<V> for T
where V: MultiLane<T>,

source§

fn vzip(self) -> V

source§

impl<T> WithSubscriber for T

source§

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

fn with_current_subscriber(self) -> WithDispatch<Self>

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