Skip to main content

Profile

Struct Profile 

Source
pub struct Profile {
    pub name: Option<String>,
    /* private fields */
}
Expand description

A profile of rows. See the module docs.

Fields§

§name: Option<String>

What was profiled (a file name), for the heading.

Implementations§

Source§

impl Profile

Source

pub fn from_json_lines( reader: impl BufRead, options: ProfileOptions, ) -> Result<Self, DataError>

A nested profile of JSON Lines from reader, streamed: a line that is not JSON is counted and skipped (malformed), while a read error or a line longer than jsonl::MAX_LINE fails. See JsonProfiler.

Source§

impl Profile

Source

pub fn of(rows: &Rows) -> Self

A profile of rows in memory, with the default options.

Source

pub fn from_source( source: impl RowSource, options: ProfileOptions, ) -> Result<Self, DataError>

Profile every row of source, stopping at the first that cannot be read.

Source

pub fn with_name(self, name: impl Into<String>) -> Self

Name what was profiled, for the heading.

Source

pub fn note(&mut self, note: impl Into<String>)

Add a note shown under the heading (rows cut to fit, keys seen late).

Source

pub fn rows(&self) -> u64

Every row read.

Source

pub fn sample_size(&self) -> usize

The rows the types, statistics and distributions describe.

Source

pub fn sampled(&self) -> bool

Whether the sample is fewer rows than were read; for a nested profile, whether any path kept fewer of its values than it had (then sample_size is the most values a path keeps).

Source

pub fn columns(&self) -> &[ColumnProfile]

One entry per column, in order.

Source

pub fn column(&self, name: &str) -> Option<&ColumnProfile>

The column called name.

Source

pub fn missing(&self) -> &MissingMap

Where the nulls are.

Source

pub fn notes(&self) -> &[String]

The notes, in order.

Source

pub fn is_nested(&self) -> bool

Whether this is a nested profile of JSON paths (JsonProfiler): its columns are paths, each with its presence and type mix.

Source

pub fn paths(&self) -> Option<&PathSummary>

A nested profile’s limits, and the paths past its cap; None for a profile of rows.

Source

pub fn malformed(&self) -> u64

Lines skipped because they were not JSON (a nested profile only).

Source

pub fn malformed_lines(&self) -> &[usize]

The first of them by line number (at most MAX_MALFORMED_LINES).

Source

pub fn style_rules(self, rules: StyleRules) -> Self

Style the table of columns by value (rich_ext’s table::rules). A rule names a heading (table_headers) and compares the model’s value, not the cell’s text: nulls, absent and distinct are counts, mean a number, the rest text.

use rich::Console;
use rich_data::profile::Profile;
use rich_data::Rows;
use rich_ext::table::{StyleRule, StyleRules};

let mut rows = Rows::new(["a", "b"]);
rows.push(["1".into(), "".into()]);
let rules = StyleRules::new().rule(StyleRule::parse("nulls>0:row:bold red").unwrap());
let profile = Profile::of(&rows).style_rules(rules);
let console = Console::builder().width(60).force_terminal(true).build();
let out = console.render_export(&profile.to_table());
assert!(out.contains("\x1b[1;31mb"), "{out:?}");
Source

pub fn rules(&self) -> &StyleRules

The style rules set with style_rules.

Source

pub fn table_headers(&self) -> &'static [&'static str]

The headings of the table of columns, which style rules name: column, type, nulls, distinct, min, max and mean; for a nested profile path, types (the mix, null among them), absent, distinct, min, max and mean.

Source

pub fn to_json(&self) -> Value

The profile as JSON: rows, sample, sampled, columns, missing, and name and notes when set. A nested profile adds paths (its depth, max_paths, whether it was capped and the paths dropped), malformed and malformed_lines when lines were skipped, and per column present, absent, values, types and mixed.

Source

pub fn heading(&self) -> String

The heading: the name, the rows (and the sample, when smaller) and the columns.

Source

pub fn to_table(&self) -> Table

The table of columns: type, nulls, distinct, min, max and mean (the median and quartiles are in the model and under each numeric column’s heading).

A nested profile’s table has each path’s type mix (str 90% · null 10%, with ! before the mix of a path holding more than one type besides null) and the records that lack it (absent), in place of the inferred type and the nulls (the mix has their share).

Source

pub fn missing_heatmap(&self) -> Option<Heatmap>

The missing-value map as a heatmap: a row per bucket, a column per column, each cell the percentage of the bucket’s cells that are null. None when nothing is null.

A nested profile counts a record as missing a path when it lacks the path or holds only null there, and maps only the paths something is missing from.

Trait Implementations§

Source§

impl Clone for Profile

Source§

fn clone(&self) -> Self

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

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

Performs copy-assignment from source. Read more
Source§

impl Debug for Profile

Source§

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

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

impl<'de> Deserialize<'de> for Profile

Source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
Source§

impl PartialEq for Profile

Source§

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

Equality operator ==. Read more
1.0.0 (const: unstable) · Source§

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

Inequality operator !=. Read more
Source§

impl Renderable for Profile

Source§

fn measure(&self, console: &Console, options: &ConsoleOptions) -> Measurement

As wide as its widest line at the width given.

Source§

fn rich_render( &self, console: &Console, options: &ConsoleOptions, ) -> Vec<Segment>

Source§

fn fit_to_measurement(&self) -> bool

Whether a top-level Console::print shrinks this renderable to its measured width. Upstream renders every top-level renderable at the full console width, so the default is false; an extension may opt in.
Source§

fn vertical(&self) -> Option<VerticalAlign>

The vertical alignment a Table cell holding this renderable uses in place of its column’s. Upstream reads getattr(renderable, "vertical", None); Align sets it.
Source§

fn print_end_line(&self, _options: &ConsoleOptions) -> bool

Whether a top-level print ends this renderable’s last line. This port’s renderables separate lines, where upstream’s end each line with "\n", so a print adds the final line break. A renderable whose upstream output stops without one (Screen, LiveRender, a Rule whose end has no newline) returns false, and the next output continues its last line. options are the print’s options.
Source§

impl Serialize for Profile

Source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where __S: Serializer,

Serialize this value into the given Serde serializer. Read more
Source§

impl StructuralPartialEq for Profile

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> 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<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
where ST: ?Sized, DT: ?Sized,

Source§

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

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> DeserializeOwned for T
where T: for<'de> Deserialize<'de>,

Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

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> Read<Exclusive, BecauseExclusive> for T
where T: ?Sized,

Source§

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

Source§

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

Source§

type Error = !

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

fn try_from(value: U) -> Result<T, !>

Performs the conversion.
Source§

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

Source§

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.