diff --git a/diffly/cli.py b/diffly/cli.py index 7177e58..b1b7148 100644 --- a/diffly/cli.py +++ b/diffly/cli.py @@ -12,18 +12,11 @@ from ._compat import typer from ._utils import ABS_TOL_DEFAULT, ABS_TOL_TEMPORAL_DEFAULT, REL_TOL_DEFAULT -from .metrics import Metric, MetricFn from .metrics.change import DEFAULT_CHANGE_METRICS from .metrics.data import DEFAULT_DATA_METRICS app = typer.Typer() -#: All metric presets selectable via ``--metric``, combining the change and data sets. -AVAILABLE_METRICS: dict[str, MetricFn | Metric] = { - **DEFAULT_CHANGE_METRICS, - **DEFAULT_DATA_METRICS, -} - @app.command() def main( @@ -143,12 +136,21 @@ def main( list[str], typer.Option(hidden=True), ] = [], - metric: Annotated[ + data_metric: Annotated[ list[str], typer.Option( help=( - "Metric presets to display per column. Repeatable. " - f"Available: {', '.join(AVAILABLE_METRICS)}." + "Data metric presets to display in the Data Inspection section. " + f"Repeatable. Available: {', '.join(DEFAULT_DATA_METRICS)}." + ) + ), + ] = [], + change_metric: Annotated[ + list[str], + typer.Option( + help=( + "Change metric presets to display as extra columns in the Columns " + f"table. Repeatable. Available: {', '.join(DEFAULT_CHANGE_METRICS)}." ) ), ] = [], @@ -161,12 +163,20 @@ def main( ) hidden_column = [*hidden_column, *hidden_columns] - for name in metric: - if name not in AVAILABLE_METRICS: + for name in data_metric: + if name not in DEFAULT_DATA_METRICS: + raise typer.BadParameter( + f"Unknown data metric: {name!r}. " + f"Available: {', '.join(DEFAULT_DATA_METRICS)}." + ) + for name in change_metric: + if name not in DEFAULT_CHANGE_METRICS: raise typer.BadParameter( - f"Unknown metric: {name!r}. Available: {', '.join(AVAILABLE_METRICS)}." + f"Unknown change metric: {name!r}. " + f"Available: {', '.join(DEFAULT_CHANGE_METRICS)}." ) - metrics = {name: AVAILABLE_METRICS[name] for name in metric} + data_metrics = {name: DEFAULT_DATA_METRICS[name] for name in data_metric} + change_metrics = {name: DEFAULT_CHANGE_METRICS[name] for name in change_metric} comparison = compare_frames( pl.scan_parquet(left), @@ -185,7 +195,8 @@ def main( right_name=right_name, slim=slim, hidden_columns=hidden_column, - metrics=metrics, + data_metrics=data_metrics, + change_metrics=change_metrics, ) if output_json: typer.echo(summary.to_json()) diff --git a/diffly/comparison.py b/diffly/comparison.py index 6976b9c..28e36f0 100644 --- a/diffly/comparison.py +++ b/diffly/comparison.py @@ -25,7 +25,8 @@ lazy_len, make_and_validate_mapping, ) -from .metrics import Metric, MetricFn, _make_numeric_metric +from .metrics.change import ChangeMetric, ChangeMetricFn +from .metrics.data import DataMetric, DataMetricFn if TYPE_CHECKING: # pragma: no cover # NOTE: We cannot import at runtime as we're otherwise running into circular @@ -920,7 +921,8 @@ def summary( right_name: str = Side.RIGHT, slim: bool = False, hidden_columns: list[str] | None = None, - metrics: Mapping[str, MetricFn | Metric] | None = None, + data_metrics: Mapping[str, DataMetricFn | DataMetric] | None = None, + change_metrics: Mapping[str, ChangeMetricFn | ChangeMetric] | None = None, ) -> Summary: """Generate a summary of all aspects of the comparison. @@ -950,18 +952,30 @@ def summary( advanced users who are familiar with the summary format. hidden_columns: Columns for which no values are printed, e.g. because they contain sensitive information. - metrics: Optional mapping from display label to a metric. A value may be a - callable ``(left_expr, right_expr) -> pl.Expr`` or a - :class:`~diffly.metrics.Metric`. Each callable receives two - :class:`polars.Expr` referring to the left and right values of a single - column across all joined rows, and must return a scalar aggregation - expression. Bare callables are only computed for numerical columns; wrap - one in a :class:`~diffly.metrics.Metric` with a column selector to target - other column types (e.g. ``Metric(fn, selector=cs.all())``). - See :doc:`/api/metrics` for the full list of presets and the - :data:`~diffly.metrics.MetricFn` type. When ``None`` (default), no metrics - are computed; presets are not applied automatically. Prefer short labels — - the summary has a fixed width and many or long labels degrade rendering. + data_metrics: Optional mapping from display label to a data metric, + describing each dataset individually and rendered in the "Data + Inspection" section. A value may be a + :class:`~diffly.metrics.data.DataMetric` or a bare callable taking a + single column expression, which is wrapped in a + :class:`~diffly.metrics.data.DataMetric` applying to all columns. To + target other column types, construct the metric explicitly with a + column selector (e.g. ``DataMetric(fn, selector=cs.numeric())``). + See :doc:`/api/metrics` for the full list of presets. When ``None`` + (default), no metrics are computed; presets are not applied + automatically. Prefer short labels — the summary has a fixed width and + many or long labels degrade rendering. + change_metrics: Optional mapping from display label to a change metric, + quantifying the change between the two sides and rendered as extra + columns in the "Columns" table. A value may be a + :class:`~diffly.metrics.change.ChangeMetric` or a bare callable taking a + pair of column expressions, which is wrapped in a + :class:`~diffly.metrics.change.ChangeMetric` applying to numerical + columns. To target other column types, construct the metric explicitly + with a column selector (e.g. ``ChangeMetric(fn, selector=cs.numeric())``). + See :doc:`/api/metrics` for the full list of presets. When ``None`` + (default), no metrics are computed; presets are not applied + automatically. Prefer short labels — the summary has a fixed width and + many or long labels degrade rendering. Returns: A summary which can be printed or written to a file. @@ -977,12 +991,14 @@ def summary( # NOTE: We're importing here to prevent circular imports from .summary import Summary - resolved_metrics = ( - { - label: v if isinstance(v, Metric) else _make_numeric_metric(v) - for label, v in metrics.items() - } - if metrics is not None + resolved_data_metrics = ( + {label: _resolve_data_metric(v) for label, v in data_metrics.items()} + if data_metrics is not None + else None + ) + resolved_change_metrics = ( + {label: _resolve_change_metric(v) for label, v in change_metrics.items()} + if change_metrics is not None else None ) @@ -996,7 +1012,8 @@ def summary( right_name=right_name, slim=slim, hidden_columns=hidden_columns, - metrics=resolved_metrics, + data_metrics=resolved_data_metrics, + change_metrics=resolved_change_metrics, ) # ----------------------------------- UTILITIES ----------------------------------- # @@ -1239,3 +1256,11 @@ def _list_length_exprs( for e in _list_length_exprs(expr.struct[field.name], field.dtype) ] return [] + + +def _resolve_data_metric(v: DataMetricFn | DataMetric) -> DataMetric: + return v if isinstance(v, DataMetric) else DataMetric(fn=v) + + +def _resolve_change_metric(v: ChangeMetricFn | ChangeMetric) -> ChangeMetric: + return v if isinstance(v, ChangeMetric) else ChangeMetric(fn=v) diff --git a/diffly/metrics/__init__.py b/diffly/metrics/__init__.py index a3a165b..df5359a 100644 --- a/diffly/metrics/__init__.py +++ b/diffly/metrics/__init__.py @@ -1,50 +1,17 @@ # Copyright (c) QuantCo 2025-2026 # SPDX-License-Identifier: BSD-3-Clause - """Metrics computed per column when generating a summary. Two families are provided: -- Metrics in :mod:`~diffly.metrics.change` describe the change between numeric - columns itself by aggregating over ``right - left``. -- Metrics in :mod:`~diffly.metrics.data` describe the left and right datasets - individually, explaining how a change affects the data. +- :class:`~diffly.metrics.change.ChangeMetric`s in :mod:`~diffly.metrics.change` describe the change between + columns itself by aggregating over a combination of the columns (e.g., ``right - left``). +- :class:`~diffly.metrics.data.DataMetric`s in :mod:`~diffly.metrics.data` describe the left and right + datasets individually, explaining how a change affects the data. """ from __future__ import annotations from . import change, data -from ._common import Metric, MetricFn -from .change import ( - _make_numeric_metric, - max, - mean, - mean_absolute_deviation, - mean_relative_deviation, - median, - min, - quantile, - std, -) - -DEFAULT_METRICS: dict[str, MetricFn | Metric] = { - **change.DEFAULT_CHANGE_METRICS, -} -"""The default preset metrics, consisting of the change default set.""" -__all__ = [ - "DEFAULT_METRICS", - "Metric", - "MetricFn", - "change", - "data", - "max", - "mean", - "mean_absolute_deviation", - "mean_relative_deviation", - "median", - "min", - "quantile", - "std", - "_make_numeric_metric", -] +__all__ = ["change", "data"] diff --git a/diffly/metrics/_common.py b/diffly/metrics/_common.py deleted file mode 100644 index 5ba7c38..0000000 --- a/diffly/metrics/_common.py +++ /dev/null @@ -1,27 +0,0 @@ -# Copyright (c) QuantCo 2025-2026 -# SPDX-License-Identifier: BSD-3-Clause - -from __future__ import annotations - -from collections.abc import Callable -from dataclasses import dataclass - -import polars as pl -import polars.selectors as cs - - -@dataclass(frozen=True) -class Metric: - """A metric function paired with a column-applicability selector.""" - - fn: MetricFn - selector: cs.Selector - - -MetricFn = Callable[[pl.Expr, pl.Expr], pl.Expr] -"""A metric function maps ``(left_expr, right_expr)`` to a scalar aggregation -expression. - -The expressions refer to the left-side and right-side values of a single column across -all joined rows. -""" diff --git a/diffly/metrics/change.py b/diffly/metrics/change.py index f4965f1..0fa46d8 100644 --- a/diffly/metrics/change.py +++ b/diffly/metrics/change.py @@ -1,21 +1,37 @@ # Copyright (c) QuantCo 2025-2026 # SPDX-License-Identifier: BSD-3-Clause -"""Metrics describing the change between numeric columns. - -These aggregate over ``right - left`` to characterize the change itself. -""" - from __future__ import annotations +from collections.abc import Callable +from dataclasses import dataclass, field + import polars as pl import polars.selectors as cs -from ._common import Metric, MetricFn +ChangeMetricFn = Callable[[pl.Expr, pl.Expr], pl.Expr] +"""A `ChangeMetricFn` maps a pair of column expressions to a scalar aggregation +expression.""" + + +@dataclass(frozen=True) +class ChangeMetric: + """A metric quantifying the *change* in a column between the two sides of a + comparison. + + Change metrics are rendered as extra columns in the "Columns" table, alongside the + match rate. + """ + + fn: ChangeMetricFn + """Aggregates over ``right - left`` (e.g. the mean delta) to describe the change + itself.""" + + selector: cs.Selector = field(default_factory=cs.numeric) + """Selects the columns the metric applies to; defaults to numeric columns.""" -def _make_numeric_metric(fn: MetricFn) -> Metric: - return Metric(fn=fn, selector=cs.numeric()) +# ---------------------------------- CHANGE METRICS ---------------------------------- # def mean(left: pl.Expr, right: pl.Expr) -> pl.Expr: @@ -54,7 +70,7 @@ def mean_relative_deviation(left: pl.Expr, right: pl.Expr) -> pl.Expr: return ((right - left) / left).abs().mean() -def quantile(q: float) -> MetricFn: +def quantile(q: float) -> ChangeMetricFn: """Factory returning a metric that computes the ``q``-quantile of ``right - left``.""" if not 0 <= q <= 1: @@ -66,13 +82,13 @@ def _quantile(left: pl.Expr, right: pl.Expr) -> pl.Expr: return _quantile -DEFAULT_CHANGE_METRICS: dict[str, MetricFn] = { - "Mean": mean, - "Median": median, - "Min": min, - "Max": max, - "Std": std, - "Mean absolute deviation": mean_absolute_deviation, - "Mean relative deviation": mean_relative_deviation, +DEFAULT_CHANGE_METRICS: dict[str, ChangeMetric] = { + "Mean diff": ChangeMetric(fn=mean), + "Median diff": ChangeMetric(fn=median), + "Min diff": ChangeMetric(fn=min), + "Max diff": ChangeMetric(fn=max), + "Std diff": ChangeMetric(fn=std), + "Mean absolute diff": ChangeMetric(fn=mean_absolute_deviation), + "Mean relative diff": ChangeMetric(fn=mean_relative_deviation), } """Preset metrics describing the change between numeric columns.""" diff --git a/diffly/metrics/data.py b/diffly/metrics/data.py index 066a06b..c3babd5 100644 --- a/diffly/metrics/data.py +++ b/diffly/metrics/data.py @@ -1,75 +1,60 @@ # Copyright (c) QuantCo 2025-2026 # SPDX-License-Identifier: BSD-3-Clause -"""Metrics describing the left and right datasets individually. - -These characterize each side of a change so you can understand how the change affects -the data, rather than describing the change itself. -""" - from __future__ import annotations from collections.abc import Callable +from dataclasses import dataclass, field +from typing import Any import polars as pl import polars.selectors as cs -from ._common import Metric, MetricFn +DataMetricFn = Callable[[pl.Expr], pl.Expr] +"""A data metric maps a single column expression to a scalar aggregation expression.""" -def null_fraction_change(left: pl.Expr, right: pl.Expr) -> pl.Expr: - """Change in the fraction of null entries, rendered as `` -> ()``. +@dataclass(frozen=True) +class DataMetric: + """A metric describing each dataset *individually*. - ``old`` and ``new`` are the null percentages of the left and right side, and - ``delta`` is their signed difference (``+`` when the right side has proportionally - more nulls, ``-`` when it has fewer). This metric function can be applied to columns - of any type. + Data metrics are rendered in a dedicated "Data Inspection" section, showing the left + and right value side by side, followed by their signed delta for numeric values. """ - return _render_change( - left.is_null().mean(), - right.is_null().mean(), - lambda value, signed: _percentage_string( - value, signed=signed, percent_sign=not signed - ), - ) + fn: DataMetricFn + """Applied to the left and right side separately, characterizing the data rather + than the change between the sides.""" -DEFAULT_DATA_METRICS: dict[str, MetricFn | Metric] = { - "Null%": Metric(fn=null_fraction_change, selector=cs.all()), -} -"""Preset metrics describing the left and right datasets individually.""" + selector: cs.Selector = field(default_factory=cs.all) + """Selects the columns the metric applies to; defaults to all columns.""" + + formatter: Callable[[Any], str] | None = None + """Formats a single left/right value for display. + + Falls back to the default numeric precision when unset. + """ + delta_formatter: Callable[[Any], str] | None = None + """Formats the magnitude of the delta, which is rendered with an explicit sign. -# ------------------------------------------------------------------------------------ # -# UTILITY METHODS # -# ------------------------------------------------------------------------------------ # + Falls back to ``formatter`` when ``None``. + """ -def _percentage_string( - fraction: pl.Expr, *, signed: bool = False, percent_sign: bool = True -) -> pl.Expr: - """Format a fraction as a percentage string, optionally with an explicit sign.""" - pct = (fraction * 100).round(2) - body = pl.format("{}%", pct) if percent_sign else pl.format("{}", pct) - if signed: - return pl.when(pct >= 0).then(pl.format("+{}", body)).otherwise(body) - return body +# ----------------------------------- DATA METRICS ----------------------------------- # -def _render_change( - old: pl.Expr, - new: pl.Expr, - format_value: Callable[[pl.Expr, bool], pl.Expr], -) -> pl.Expr: - """Render a change as `` -> ()``. +def null_fraction(col: pl.Expr) -> pl.Expr: + """Fraction of null entries in a column.""" + return col.is_null().mean() - ``format_value(value, signed)`` formats a value for display; ``old`` and ``new`` are - rendered unsigned and the delta ``new - old`` is rendered signed (with an explicit - ``+`` prefix for positive values). - """ - return pl.format( - "{} -> {} ({})", - format_value(old, False), - format_value(new, False), - format_value(new - old, True), - ) + +DEFAULT_DATA_METRICS: dict[str, DataMetric] = { + "Null%": DataMetric( + fn=null_fraction, + formatter=lambda value: f"{round(value * 100, 2)}%", + delta_formatter=lambda value: f"{round(value * 100, 2)}", + ), +} +"""Preset metrics describing the left and right datasets individually.""" diff --git a/diffly/summary.py b/diffly/summary.py index ac3dda7..c96235e 100644 --- a/diffly/summary.py +++ b/diffly/summary.py @@ -6,7 +6,7 @@ import dataclasses import io import json -from collections.abc import Mapping +from collections.abc import Callable, Mapping from dataclasses import dataclass from datetime import date, datetime, timedelta from decimal import Decimal @@ -23,7 +23,8 @@ from rich.text import Text from ._utils import Side, capitalize_first -from .metrics import Metric +from .metrics.change import ChangeMetric +from .metrics.data import DataMetric if TYPE_CHECKING: # pragma: no cover from .comparison import DataFrameComparison @@ -61,7 +62,8 @@ def __init__( right_name: str, slim: bool, hidden_columns: list[str] | None, - metrics: Mapping[str, Metric] | None, + data_metrics: Mapping[str, DataMetric] | None, + change_metrics: Mapping[str, ChangeMetric] | None, ): self.slim = slim self._data = _compute_summary_data( @@ -74,7 +76,8 @@ def __init__( right_name=right_name, slim=slim, hidden_columns=hidden_columns, - metrics=metrics, + data_metrics=data_metrics, + change_metrics=change_metrics, ) def format(self, pretty: bool | None = None) -> str: @@ -131,9 +134,11 @@ def to_json(self, **kwargs: Any) -> str: "name": "value", "match_rate": 0.667, "n_total_changes": 1, - "changes": [{"old": 1.0, "new": 2.0, "count": 1, "sample_pk": [1]}] + "changes": [{"old": 1.0, "new": 2.0, "count": 1, "sample_pk": [1]}], + "change_metrics": null } ], + "data_inspection": null, "sample_rows_left_only": [], "sample_rows_right_only": [] } @@ -179,6 +184,7 @@ def _print_diff(self, console: Console) -> None: self._print_schemas(console) self._print_rows(console) self._print_columns(console) + self._print_data_inspection(console) self._print_sample_rows_only_one_side(console, side=Side.LEFT) self._print_sample_rows_only_one_side(console, side=Side.RIGHT) @@ -571,15 +577,14 @@ def _section_columns(self) -> RenderableType: elif not columns: display_items.append(Text("All columns match perfectly.", style="italic")) else: - metric_labels = self._data._metric_labels - matches = Table(show_header=bool(metric_labels)) + matches = Table(show_header=bool(self._data._change_metric_labels)) matches.add_column( "Column", max_width=COLUMN_SECTION_COLUMN_WIDTH, overflow=OVERFLOW, ) matches.add_column("Match Rate", justify="right") - for label in metric_labels: + for label in self._data._change_metric_labels: matches.add_column(label, justify="right") has_top_changes_column = any( c.changes is not None for c in columns if c.match_rate < 1 @@ -592,8 +597,10 @@ def _section_columns(self) -> RenderableType: Text(col.name, style="cyan"), f"{_format_fraction_as_percentage(col.match_rate)}", ] - for label in metric_labels: - value = col.metrics.get(label) if col.metrics else None + for label in self._data._change_metric_labels: + value = ( + col.change_metrics.get(label) if col.change_metrics else None + ) row_items.append(_format_metric_value(value)) if col.changes is not None: change_lines = [] @@ -632,6 +639,41 @@ def _section_columns(self) -> RenderableType: return Group(*display_items) + # ------------------------------- DATA INSPECTION -------------------------------- # + + def _print_data_inspection(self, console: Console) -> None: + if not self._data.data_inspection or not self._data._data_metrics: + return + _print_section( + console, + "Data Inspection", + self._section_data_inspection(), + ) + + def _section_data_inspection(self) -> RenderableType: + assert self._data.data_inspection is not None + + table = Table() + table.add_column( + "Column", + max_width=COLUMN_SECTION_COLUMN_WIDTH, + overflow=OVERFLOW, + ) + for label in self._data._data_metrics: + table.add_column(label, justify="right", overflow=OVERFLOW) + for col in self._data.data_inspection: + row_items: list[RenderableType] = [Text(col.name, style="cyan")] + for label in self._data._data_metrics: + result = col.data_metrics.get(label) + metric = self._data._data_metrics[label] + row_items.append( + _format_data_metric_result( + result, metric.formatter, metric.delta_formatter + ) + ) + table.add_row(*row_items) + return table + # ------------------------------ ROWS ONLY ONE SIDE ------------------------------ # def _print_sample_rows_only_one_side(self, console: Console, side: Side) -> None: @@ -709,13 +751,27 @@ class SummaryDataColumnChange: sample_pk: tuple[Any, ...] | None +@dataclass +class DataMetricResult: + """A data metric evaluated on each side of the comparison.""" + + left: Any + right: Any + + @dataclass class SummaryDataColumn: name: str match_rate: float n_total_changes: int changes: list[SummaryDataColumnChange] | None - metrics: dict[str, Any] | None + change_metrics: dict[str, Any] | None + + +@dataclass +class SummaryDataInspectionColumn: + name: str + data_metrics: dict[str, DataMetricResult] @dataclass @@ -727,13 +783,15 @@ class SummaryData: schemas: SummaryDataSchemas | None rows: SummaryDataRows | None columns: list[SummaryDataColumn] | None + data_inspection: list[SummaryDataInspectionColumn] | None sample_rows_left_only: list[tuple[Any, ...]] | None sample_rows_right_only: list[tuple[Any, ...]] | None _is_empty: bool _other_common_columns: list[str] _truncated_left_name: str _truncated_right_name: str - _metric_labels: list[str] + _change_metric_labels: list[str] + _data_metrics: dict[str, DataMetric] def to_dict(self) -> dict[str, Any]: def _convert(obj: Any) -> Any: @@ -772,7 +830,8 @@ def _compute_summary_data( right_name: str, slim: bool, hidden_columns: list[str] | None, - metrics: Mapping[str, Metric] | None, + data_metrics: Mapping[str, DataMetric] | None, + change_metrics: Mapping[str, ChangeMetric] | None, ) -> SummaryData: from .comparison import DataFrameComparison @@ -830,18 +889,21 @@ def _validate_primary_key_hidden_columns() -> None: schemas=None, rows=None, columns=None, + data_inspection=None, sample_rows_left_only=None, sample_rows_right_only=None, _is_empty=is_empty, _other_common_columns=comp._other_common_columns, _truncated_left_name=truncated_left, _truncated_right_name=truncated_right, - _metric_labels=[], + _change_metric_labels=[], + _data_metrics={}, ) - metrics_resolved: dict[str, Metric] = dict(metrics or {}) - metrics_by_column = _compute_column_metrics(comp, metrics_resolved) - metric_labels = list(metrics_resolved.keys()) + change_metrics = dict(change_metrics or {}) + data_metrics = dict(data_metrics or {}) + change_metrics_by_column = _compute_change_metrics(comp, change_metrics) + change_metric_labels = list(change_metrics) schemas = _compute_schemas(comp, slim) rows = _compute_rows(comp, slim) @@ -851,8 +913,9 @@ def _validate_primary_key_hidden_columns() -> None: show_perfect_column_matches, top_k_changes_by_column, show_sample_primary_key_per_change, - metrics_by_column, + change_metrics_by_column, ) + data_inspection = _compute_data_inspection(comp, data_metrics, hidden_columns) sample_rows_left_only, sample_rows_right_only = _compute_sample_rows( comp, sample_k_rows_only ) @@ -865,13 +928,15 @@ def _validate_primary_key_hidden_columns() -> None: schemas=schemas, rows=rows, columns=columns, + data_inspection=data_inspection, sample_rows_left_only=sample_rows_left_only, sample_rows_right_only=sample_rows_right_only, _is_empty=is_empty, _other_common_columns=comp._other_common_columns, _truncated_left_name=truncated_left, _truncated_right_name=truncated_right, - _metric_labels=metric_labels, + _change_metric_labels=change_metric_labels, + _data_metrics=data_metrics, ) @@ -933,28 +998,38 @@ def _compute_rows(comp: DataFrameComparison, slim: bool) -> SummaryDataRows | No ) -def _compute_column_metrics( - comp: DataFrameComparison, - metrics: Mapping[str, Metric], -) -> dict[str, dict[str, Any]]: - if comp.primary_key is None or comp.num_rows_joined() == 0: - return {} +def _select_metric_columns( + comp: DataFrameComparison, selector: cs.Selector +) -> set[str]: + left = set(cs.expand_selector(comp.left_schema, selector)) + right = set(cs.expand_selector(comp.right_schema, selector)) + return (left & right) & set(comp._other_common_columns) - def select_columns(selector: cs.Selector) -> set[str]: - left = set(cs.expand_selector(comp.left_schema, selector)) - right = set(cs.expand_selector(comp.right_schema, selector)) - return (left & right) & set(comp._other_common_columns) - metric_to_columns = { - label: select_columns(m.selector) for label, m in metrics.items() +def _metric_target_columns( + comp: DataFrameComparison, metrics: Mapping[str, ChangeMetric | DataMetric] +) -> dict[str, set[str]]: + """Map each metric label to the columns it applies to.""" + return { + label: _select_metric_columns(comp, m.selector) for label, m in metrics.items() } - all_columns = sorted(set().union(*metric_to_columns.values())) - if not all_columns: + +def _compute_change_metrics( + comp: DataFrameComparison, + metrics: Mapping[str, ChangeMetric], +) -> dict[str, dict[str, Any]]: + """Compute change metrics over the joined (matched) rows only. + + Change metrics compare matched rows and therefore require a primary key and at least + one joined row. + """ + if comp.primary_key is None or comp.num_rows_joined() == 0: + return {} + metric_to_columns = _metric_target_columns(comp, metrics) + if not any(metric_to_columns.values()): return {} - out: dict[str, dict[str, Any]] = {c: {} for c in all_columns} - joined = comp.joined(lazy=True) agg_exprs = [ metric.fn( pl.col(f"{column}_{Side.LEFT}"), @@ -963,20 +1038,50 @@ def select_columns(selector: cs.Selector) -> set[str]: for label, metric in metrics.items() for column in sorted(metric_to_columns[label]) ] - row = joined.select(agg_exprs).collect().row(0, named=True) - for label, columns in metric_to_columns.items(): - for column in columns: + + row = comp.joined(lazy=True).select(agg_exprs).collect().row(0, named=True) + out: dict[str, dict[str, Any]] = { + c: {} for c in set().union(*metric_to_columns.values()) + } + for label in metrics: + for column in metric_to_columns[label]: out[column][label] = row[f"{label}__{column}"] return out +def _compute_data_metrics( + comp: DataFrameComparison, + metrics: Mapping[str, DataMetric], + metric_to_columns: dict[str, set[str]], +) -> dict[str, dict[str, Any]]: + """Compute data metrics over the entire left and right columns, including rows that + are not part of the join.""" + agg_exprs: list[pl.Expr] = [] + for label, metric in metrics.items(): + for column in sorted(metric_to_columns[label]): + agg_exprs.append(metric.fn(pl.col(column)).alias(f"{label}__{column}")) + + left_row = comp.left.select(agg_exprs).collect().row(0, named=True) + right_row = comp.right.select(agg_exprs).collect().row(0, named=True) + out: dict[str, dict[str, Any]] = { + c: {} for c in set().union(*metric_to_columns.values()) + } + for label in metrics: + for column in metric_to_columns[label]: + out[column][label] = DataMetricResult( + left=left_row[f"{label}__{column}"], + right=right_row[f"{label}__{column}"], + ) + return out + + def _compute_columns( comp: DataFrameComparison, slim: bool, show_perfect_column_matches: bool, top_k_changes_by_column: dict[str, int], show_sample_primary_key_per_change: bool, - metrics_by_column: dict[str, dict[str, Any]], + change_metrics_by_column: dict[str, dict[str, Any]], ) -> list[SummaryDataColumn] | None: # NOTE: We can only compute column matches if there are primary key columns and at # least one joined row. @@ -1023,12 +1128,36 @@ def _compute_columns( match_rate=rate, n_total_changes=n_total_changes, changes=changes, - metrics=metrics_by_column.get(col_name), + change_metrics=change_metrics_by_column.get(col_name), ) ) return columns +def _compute_data_inspection( + comp: DataFrameComparison, + metrics: Mapping[str, DataMetric], + hidden_columns: list[str], +) -> list[SummaryDataInspectionColumn] | None: + # NOTE: Data metrics describe each side individually and do not need a join, but we + # still require the columns to be present on both sides so left/right values are + # comparable. + hidden = set(hidden_columns) + metric_to_columns = { + label: columns - hidden + for label, columns in _metric_target_columns(comp, metrics).items() + } + if not any(metric_to_columns.values()): + return None + data_metrics_by_column = _compute_data_metrics(comp, metrics, metric_to_columns) + return [ + SummaryDataInspectionColumn( + name=col_name, data_metrics=data_metrics_by_column[col_name] + ) + for col_name in sorted(data_metrics_by_column) + ] + + def _compute_sample_rows( comp: DataFrameComparison, sample_k_rows_only: int ) -> tuple[list[tuple[Any, ...]] | None, list[tuple[Any, ...]] | None]: @@ -1141,5 +1270,41 @@ def _format_metric_value(value: Any) -> str: return _format_value(value, float_format=".4g") +def _format_data_metric_result( + result: DataMetricResult | None, + formatter: Callable[[Any], str] | None, + delta_formatter: Callable[[Any], str] | None, +) -> str: + """Format a data metric's left/right pair as `` -> ``. + + Numeric values additionally show the signed delta ``()``; non-numeric + values omit it. ``formatter`` formats a left/right value and ``delta_formatter`` the + delta magnitude (rendered with an explicit sign); either falling back to ``.4g`` + precision for floats when unset. + """ + if result is None: + return "" + + def _fmt(v: Any, fn: Callable[[Any], str] | None) -> str: + if v is None: + return "None" + if fn is not None: + return fn(v) + if isinstance(v, float): + return format(v, ".4g") + return str(v) + + text = f"{_fmt(result.left, formatter)} -> {_fmt(result.right, formatter)}" + if _is_numeric(result.left) and _is_numeric(result.right): + delta = result.right - result.left + sign = "+" if delta >= 0 else "-" + text += f" ({sign}{_fmt(abs(delta), delta_formatter or formatter)})" + return _yellow(text) + + +def _is_numeric(value: Any) -> bool: + return isinstance(value, (int, float)) and not isinstance(value, bool) + + def _trim_whitespaces(s: str) -> str: return "\n".join(line.rstrip() for line in s.splitlines()) diff --git a/diffly/testing.py b/diffly/testing.py index 9a36458..337d5e4 100644 --- a/diffly/testing.py +++ b/diffly/testing.py @@ -19,7 +19,8 @@ from ._compat import dy from .comparison import DataFrameComparison, compare_frames -from .metrics import Metric, MetricFn +from .metrics.change import ChangeMetric, ChangeMetricFn +from .metrics.data import DataMetric, DataMetricFn def assert_collection_equal( @@ -40,7 +41,8 @@ def assert_collection_equal( right_name: str = Side.RIGHT, slim: bool = False, hidden_columns: list[str] | None = None, - metrics: Mapping[str, MetricFn | Metric] | None = None, + data_metrics: Mapping[str, DataMetricFn | DataMetric] | None = None, + change_metrics: Mapping[str, ChangeMetricFn | ChangeMetric] | None = None, ) -> None: """Assert that two :mod:`dataframely` collections are equal. @@ -84,12 +86,18 @@ def assert_collection_equal( advanced users who are familiar with the summary format. hidden_columns: Columns for which no values are printed, e.g. because they contain sensitive information. - metrics: Optional mapping from display label to a metric callable - ``(left_expr, right_expr) -> pl.Expr`` or a :class:`~diffly.metrics.Metric`. - Bare callables are only computed for numerical columns; wrap one in a - :class:`~diffly.metrics.Metric` with a column selector to target other column - types. See :mod:`diffly.metrics` for presets. When ``None`` (default), no - metrics are computed; presets are not applied automatically. + data_metrics: Optional mapping from display label to a + :class:`~diffly.metrics.data.DataMetric` or a bare callable taking a single + column expression, describing each dataset individually. To target other + column types, construct the metric explicitly with a column selector. + See :mod:`diffly.metrics` for presets. When ``None`` (default), no data + metrics are computed. + change_metrics: Optional mapping from display label to a + :class:`~diffly.metrics.change.ChangeMetric` or a bare callable taking a + pair of column expressions, quantifying the change between the two sides. To + target other column types, construct the metric explicitly with a column + selector. See :mod:`diffly.metrics` for presets. When ``None`` (default), no + change metrics are computed. Raises: AssertionError: If the collections are not equal. @@ -146,7 +154,8 @@ def assert_collection_equal( right_name=right_name, slim=slim, hidden_columns=hidden_columns, - metrics=metrics, + data_metrics=data_metrics, + change_metrics=change_metrics, ) ) }""" @@ -176,7 +185,8 @@ def assert_frame_equal( right_name: str = Side.RIGHT, slim: bool = False, hidden_columns: list[str] | None = None, - metrics: Mapping[str, MetricFn | Metric] | None = None, + data_metrics: Mapping[str, DataMetricFn | DataMetric] | None = None, + change_metrics: Mapping[str, ChangeMetricFn | ChangeMetric] | None = None, ) -> None: """Assert that two :mod:`polars` data frames are equal. @@ -227,12 +237,18 @@ def assert_frame_equal( advanced users who are familiar with the summary format. hidden_columns: Columns for which no values are printed, e.g. because they contain sensitive information. - metrics: Optional mapping from display label to a metric callable - ``(left_expr, right_expr) -> pl.Expr`` or a :class:`~diffly.metrics.Metric`. - Bare callables are only computed for numerical columns; wrap one in a - :class:`~diffly.metrics.Metric` with a column selector to target other column - types. See :mod:`diffly.metrics` for presets. When ``None`` (default), no - metrics are computed; presets are not applied automatically. + data_metrics: Optional mapping from display label to a + :class:`~diffly.metrics.data.DataMetric` or a bare callable taking a single + column expression, describing each dataset individually. To target other + column types, construct the metric explicitly with a column selector. + See :mod:`diffly.metrics` for presets. When ``None`` (default), no data + metrics are computed. + change_metrics: Optional mapping from display label to a + :class:`~diffly.metrics.change.ChangeMetric` or a bare callable taking a + pair of column expressions, quantifying the change between the two sides. To + target other column types, construct the metric explicitly with a column + selector. See :mod:`diffly.metrics` for presets. When ``None`` (default), no + change metrics are computed. Raises: AssertionError: If the data frames are not equal. @@ -278,7 +294,8 @@ def assert_frame_equal( right_name=right_name, slim=slim, hidden_columns=hidden_columns, - metrics=metrics, + data_metrics=data_metrics, + change_metrics=change_metrics, ) text = textwrap.indent(str(summary), " " * 2) raise AssertionError(f"Data frames are not equal:\n\n{text}") diff --git a/docs/api/index.rst b/docs/api/index.rst index e0a44a9..e9a0d32 100644 --- a/docs/api/index.rst +++ b/docs/api/index.rst @@ -27,7 +27,8 @@ API Reference :link: metrics :link-type: doc - Built-in metric presets and the ``MetricFn`` callable for ``summary(metrics=...)``. + Built-in metric presets and the metric types for + ``summary(data_metrics=..., change_metrics=...)``. .. grid-item-card:: Testing :link: testing diff --git a/docs/api/metrics.rst b/docs/api/metrics.rst index 84c8f82..ce9f7fd 100644 --- a/docs/api/metrics.rst +++ b/docs/api/metrics.rst @@ -5,32 +5,29 @@ Metrics .. currentmodule:: diffly.metrics Metrics are scalar aggregations computed per column when generating a -:meth:`~diffly.comparison.DataFrameComparison.summary`. Pass them via the -``metrics`` argument as a mapping from display label to a :data:`MetricFn` -callable. :mod:`diffly.metrics` ships a set of presets; you can also supply -your own callable ``(left_expr, right_expr) -> pl.Expr``. - -A bare callable is only computed for numerical columns. To target a different -set of columns, wrap it in a :class:`Metric` with a column selector, e.g. -``Metric(fn, selector=cs.all())``, ``Metric(fn, selector=cs.boolean())``, or -``Metric(fn, selector=cs.by_name("my_column_name"))``. - -Presets come in two families, each with its own module and default set: - -- :mod:`diffly.metrics.change` describes the *change* between numeric columns by - aggregating over ``right - left``. -- :mod:`diffly.metrics.data` describes the left and right datasets *individually*, - so you can see how a change affects the data. - -The change default set is exposed as :data:`DEFAULT_METRICS`. - -.. autodata:: MetricFn - :no-value: - -.. autoclass:: Metric - -.. autodata:: DEFAULT_METRICS - :no-value: +:meth:`~diffly.comparison.DataFrameComparison.summary`. There are two families, +each passed via its own argument: + +- A :class:`~diffly.metrics.change.ChangeMetric`, passed via the ``change_metrics`` + argument, describes the *change* between the two sides. Its callable takes + ``(left_expr, right_expr)`` and aggregates over the difference (e.g. the mean + delta). It is rendered as a column in the "Columns" table. +- A :class:`~diffly.metrics.data.DataMetric`, passed via the ``data_metrics`` + argument, describes each dataset *individually*. Its callable takes a single + column expression and is evaluated on the left and right side separately (e.g. the + fraction of null entries). It is rendered in the "Data Inspection" section, showing + the left and right value side by side. + +Each argument is a mapping from display label to a metric. A bare callable is +wrapped in the metric of the corresponding family: ``change_metrics`` callables +become a :class:`~diffly.metrics.change.ChangeMetric` (computed for numerical +columns only), ``data_metrics`` callables become a +:class:`~diffly.metrics.data.DataMetric` (computed for all columns). To target a +different set of columns, construct the metric explicitly with a column selector, +e.g. ``ChangeMetric(fn, selector=cs.all())`` or ``DataMetric(fn, selector=cs.boolean())``. + +The preset default sets are :data:`~diffly.metrics.change.DEFAULT_CHANGE_METRICS` +and :data:`~diffly.metrics.data.DEFAULT_DATA_METRICS`. Change metrics ============== @@ -40,6 +37,11 @@ Change metrics Metrics that describe the change between numeric columns by aggregating over ``right - left``. +.. autodata:: ChangeMetricFn + :no-value: + +.. autoclass:: ChangeMetric + .. autosummary:: :toctree: _gen/ @@ -63,10 +65,15 @@ Data metrics Metrics that describe the left and right datasets individually, so you can understand how a change affects the data. +.. autodata:: DataMetricFn + :no-value: + +.. autoclass:: DataMetric + .. autosummary:: :toctree: _gen/ - null_fraction_change + null_fraction .. autodata:: DEFAULT_DATA_METRICS :no-value: diff --git a/docs/guides/features/summary.ipynb b/docs/guides/features/summary.ipynb index bec4877..dcf19c4 100644 --- a/docs/guides/features/summary.ipynb +++ b/docs/guides/features/summary.ipynb @@ -534,9 +534,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### Numerical metrics\n", + "### Change metrics\n", "\n", - "Use `metrics` to display per-column aggregations over `right - left` for numerical columns. Pass a mapping from display label to a callable; the built-in presets live in `diffly.metrics`. You can also pass your own callable taking two Polars expressions (left and right) and returning a scalar aggregation." + "Use `change_metrics` to display per-column aggregations over `right - left` for numerical columns. Pass a mapping from display label to a callable; the built-in presets live in `diffly.metrics.change`. You can also pass your own callable taking two Polars expressions (left and right) and returning a scalar aggregation." ] }, { @@ -550,10 +550,36 @@ "print(\n", " comparison.summary(\n", " top_k_column_changes=3,\n", - " metrics={\n", - " \"Mean\": metrics.mean,\n", - " \"Mean relative deviation\": metrics.mean_relative_deviation,\n", - " \"Max absolute deviation\": lambda l, r: (r - l).abs().max(),\n", + " change_metrics={\n", + " \"Mean diff\": metrics.change.mean,\n", + " \"Mean relative diff\": metrics.change.mean_relative_deviation,\n", + " \"Max absolute diff\": lambda left, right: (right - left).abs().max(),\n", + " },\n", + " )\n", + ")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Data metrics\n", + "\n", + "Use `data_metrics` to display per-column metrics of the individual data sets (left and right). Pass a mapping from display label to a callable; the built-in presets live in `diffly.metrics.data`. You can also pass your own callable taking a Polars expression (the column) and returning a scalar value." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from diffly import metrics\n", + "\n", + "print(\n", + " comparison.summary(\n", + " data_metrics={\n", + " \"Null%\": metrics.data.null_fraction,\n", " },\n", " )\n", ")" diff --git a/pixi.lock b/pixi.lock index 184fd51..0a6bc50 100644 --- a/pixi.lock +++ b/pixi.lock @@ -2068,7 +2068,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/cfgv-3.5.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/distlib-0.4.3-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/docformatter-1.7.8-pyhc364b38_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/docformatter-1.7.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.29.5-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.19-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-9.0.0-pyhcf101f3_0.conda @@ -2085,6 +2085,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.4.1-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.16.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025c-hc9c84f9_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/untokenize-0.1.1-pyhcf101f3_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-21.5.1-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-4.1.0-pyhcf101f3_0.conda linux-aarch64: @@ -2140,7 +2141,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/cfgv-3.5.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/distlib-0.4.3-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/docformatter-1.7.8-pyhc364b38_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/docformatter-1.7.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.29.5-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.19-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-9.0.0-pyhcf101f3_0.conda @@ -2157,6 +2158,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.4.1-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.16.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025c-hc9c84f9_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/untokenize-0.1.1-pyhcf101f3_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-21.5.1-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-4.1.0-pyhcf101f3_0.conda osx-64: @@ -2164,7 +2166,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/cfgv-3.5.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/distlib-0.4.3-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/docformatter-1.7.8-pyhc364b38_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/docformatter-1.7.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.29.5-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.19-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-9.0.0-pyhcf101f3_0.conda @@ -2181,6 +2183,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.4.1-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.16.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025c-hc9c84f9_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/untokenize-0.1.1-pyhcf101f3_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-21.5.1-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-4.1.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/_openmp_mutex-4.5-7_kmp_llvm.conda @@ -2232,7 +2235,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/cfgv-3.5.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/distlib-0.4.3-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/docformatter-1.7.8-pyhc364b38_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/docformatter-1.7.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.29.5-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.19-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-9.0.0-pyhcf101f3_0.conda @@ -2249,6 +2252,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.4.1-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.16.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025c-hc9c84f9_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/untokenize-0.1.1-pyhcf101f3_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-21.5.1-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-4.1.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/_openmp_mutex-4.5-7_kmp_llvm.conda @@ -2301,7 +2305,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/cfgv-3.5.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/distlib-0.4.3-pyhcf101f3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/docformatter-1.7.8-pyhc364b38_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/docformatter-1.7.7-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.29.5-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.19-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-9.0.0-pyhcf101f3_0.conda @@ -2318,6 +2322,7 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.4.1-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.16.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025c-hc9c84f9_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/untokenize-0.1.1-pyhcf101f3_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-21.5.1-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-4.1.0-pyhcf101f3_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/bzip2-1.0.8-h0ad9c76_9.conda @@ -7366,18 +7371,18 @@ packages: run_exports: {} size: 303705 timestamp: 1781320269259 -- conda: https://conda.anaconda.org/conda-forge/noarch/docformatter-1.7.8-pyhc364b38_0.conda - sha256: 3e57149faca76593a869d91242dd166a9cc816cb7f01e3b39bda90e44407818e - md5: 2207be19c7b2f72e46e9d4049cb4cabc +- conda: https://conda.anaconda.org/conda-forge/noarch/docformatter-1.7.7-pyhd8ed1ab_0.conda + sha256: 290a1d9935947c72d90781efad59d7be36fc3e6c9ce4bf5d5478804ce9070006 + md5: b1e2509c25d36f7b19ceb42193120071 depends: - charset-normalizer >=3.0.0 - - python >=3.10 - - python + - python >=3.9 + - untokenize >=0.1.1 license: MIT license_family: MIT run_exports: {} - size: 41556 - timestamp: 1777489364203 + size: 30130 + timestamp: 1746994987190 - conda: https://conda.anaconda.org/conda-forge/noarch/docutils-0.22.4-pyhd8ed1ab_0.conda sha256: 0d605569a77350fb681f9ed8d357cc71649b59a304099dc9d09fbeec5e84a65e md5: d6bd3cd217e62bbd7efe67ff224cd667 @@ -9526,6 +9531,17 @@ packages: run_exports: {} size: 119135 timestamp: 1767016325805 +- conda: https://conda.anaconda.org/conda-forge/noarch/untokenize-0.1.1-pyhcf101f3_3.conda + sha256: 557f4cef95e3f239d9b7c2e75b32840f0fe1b2c62a9832da76bb51ae3d080687 + md5: 5ab2494adac58ab85da2e8e4ed0fa057 + depends: + - python >=3.10 + - python + license: MIT + license_family: MIT + run_exports: {} + size: 11029 + timestamp: 1767727736121 - conda: https://conda.anaconda.org/conda-forge/noarch/uri-template-1.3.0-pyhd8ed1ab_1.conda sha256: e0eb6c8daf892b3056f08416a96d68b0a358b7c46b99c8a50481b22631a4dfc0 md5: e7cb0f5745e4c5035a460248334af7eb diff --git a/pixi.toml b/pixi.toml index aa10b3d..b359b8c 100644 --- a/pixi.toml +++ b/pixi.toml @@ -49,7 +49,7 @@ build-wheel = "python -m build --no-isolation ." check-wheel = "twine check dist/*" [feature.lint.dependencies] -docformatter = "*" +docformatter = "<1.7.8" insert-license-header = "*" pre-commit = "*" pre-commit-hooks = "*" diff --git a/tests/cli/test_cli.py b/tests/cli/test_cli.py index a6720c7..4d2ea47 100644 --- a/tests/cli/test_cli.py +++ b/tests/cli/test_cli.py @@ -80,7 +80,19 @@ def test_cli_hidden_columns_alias_warns(tmp_path: Path) -> None: assert result.exit_code == 0 -def test_cli_unknown_metric(tmp_path: Path) -> None: +@pytest.mark.parametrize( + "flag, name, expected", + [ + ("--change-metric", "bogus", "Unknown change metric"), + ("--data-metric", "bogus", "Unknown data metric"), + # A valid preset from the wrong family is rejected by the family-specific flag. + ("--change-metric", "Null%", "Unknown change metric"), + ("--data-metric", "Mean diff", "Unknown data metric"), + ], +) +def test_cli_unknown_metric( + tmp_path: Path, flag: str, name: str, expected: str +) -> None: left = pl.DataFrame({"id": [1, 2], "x": [1.0, 2.0]}) right = pl.DataFrame({"id": [1, 2], "x": [1.0, 3.0]}) left.write_parquet(tmp_path / "left.parquet") @@ -93,17 +105,21 @@ def test_cli_unknown_metric(tmp_path: Path) -> None: str(tmp_path / "right.parquet"), "--primary-key", "id", - "--metric", - "bogus", + flag, + name, ], ) assert result.exit_code != 0 - assert "Unknown metric" in result.output + assert expected in result.output -@pytest.mark.parametrize("metric_name", ["Mean", "Null%"]) -def test_cli_metric_from_both_defaults(tmp_path: Path, metric_name: str) -> None: - # Both change ("mean") and data ("Null%") presets are selectable via --metric. +@pytest.mark.parametrize( + "flag, metric_name", [("--change-metric", "Mean diff"), ("--data-metric", "Null%")] +) +def test_cli_metric_from_both_defaults( + tmp_path: Path, flag: str, metric_name: str +) -> None: + # Change presets are selectable via --change-metric, data presets via --data-metric. left = pl.DataFrame({"id": [1, 2], "x": [1.0, None]}) right = pl.DataFrame({"id": [1, 2], "x": [1.0, 3.0]}) left.write_parquet(tmp_path / "left.parquet") @@ -116,7 +132,7 @@ def test_cli_metric_from_both_defaults(tmp_path: Path, metric_name: str) -> None str(tmp_path / "right.parquet"), "--primary-key", "id", - "--metric", + flag, metric_name, ], ) diff --git a/tests/summary/fixtures/metrics_custom/test_metrics_custom.py b/tests/summary/fixtures/metrics_custom/test_metrics_custom.py index 61d257d..c51fbab 100644 --- a/tests/summary/fixtures/metrics_custom/test_metrics_custom.py +++ b/tests/summary/fixtures/metrics_custom/test_metrics_custom.py @@ -29,9 +29,9 @@ def test_generate() -> None: comp = compare_frames(left, right, primary_key=["id"]) generate_summaries( comp, - metrics={ - "mean_delta": metrics.mean, - "p95_delta": metrics.quantile(0.95), + change_metrics={ + "mean_delta": metrics.change.mean, + "p95_delta": metrics.change.quantile(0.95), "max_abs_delta": lambda left, right: (right - left).abs().max(), }, ) diff --git a/tests/summary/fixtures/metrics_data_no_pk/gen/pretty_False_perfect_False_top_False_slim_False_sample_rows_False_sample_pk_False.txt b/tests/summary/fixtures/metrics_data_no_pk/gen/pretty_False_perfect_False_top_False_slim_False_sample_rows_False_sample_pk_False.txt new file mode 100644 index 0000000..b6a38d4 --- /dev/null +++ b/tests/summary/fixtures/metrics_data_no_pk/gen/pretty_False_perfect_False_top_False_slim_False_sample_rows_False_sample_pk_False.txt @@ -0,0 +1,23 @@ +┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓ +┃ Diffly Summary ┃ +┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛ + Attention: the data frames do not match exactly, but as no primary key columns are + provided, the row and column matches cannot be computed. + + Schemas + ▔▔▔▔▔▔▔ + Schemas match exactly (column count: 3). + + Rows + ▔▔▔▔ + The number of rows matches exactly (row count: 5). + + Data Inspection + ▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔ + ┏━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━┳━━━━━━━━┓ + ┃ Column ┃ Null% ┃ Distinct ┃ Max ┃ + ┡━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━╇━━━━━━━━┩ + │ id │ 0.0% -> 0.0% (+0.0) │ 5 -> 5 (+0) │ │ + │ price │ 20.0% -> 0.0% (-20.0) │ 5 -> 5 (+0) │ │ + │ status │ 0.0% -> 40.0% (+40.0) │ 5 -> 4 (-1) │ e -> x │ + └────────┴───────────────────────┴─────────────┴────────┘ diff --git a/tests/summary/fixtures/metrics_data_no_pk/gen/pretty_False_perfect_False_top_False_slim_False_sample_rows_True_sample_pk_False.txt b/tests/summary/fixtures/metrics_data_no_pk/gen/pretty_False_perfect_False_top_False_slim_False_sample_rows_True_sample_pk_False.txt new file mode 100644 index 0000000..b6a38d4 --- /dev/null +++ b/tests/summary/fixtures/metrics_data_no_pk/gen/pretty_False_perfect_False_top_False_slim_False_sample_rows_True_sample_pk_False.txt @@ -0,0 +1,23 @@ +┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓ +┃ Diffly Summary ┃ +┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛ + Attention: the data frames do not match exactly, but as no primary key columns are + provided, the row and column matches cannot be computed. + + Schemas + ▔▔▔▔▔▔▔ + Schemas match exactly (column count: 3). + + Rows + ▔▔▔▔ + The number of rows matches exactly (row count: 5). + + Data Inspection + ▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔ + ┏━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━┳━━━━━━━━┓ + ┃ Column ┃ Null% ┃ Distinct ┃ Max ┃ + ┡━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━╇━━━━━━━━┩ + │ id │ 0.0% -> 0.0% (+0.0) │ 5 -> 5 (+0) │ │ + │ price │ 20.0% -> 0.0% (-20.0) │ 5 -> 5 (+0) │ │ + │ status │ 0.0% -> 40.0% (+40.0) │ 5 -> 4 (-1) │ e -> x │ + └────────┴───────────────────────┴─────────────┴────────┘ diff --git a/tests/summary/fixtures/metrics_data_no_pk/gen/pretty_False_perfect_False_top_False_slim_True_sample_rows_False_sample_pk_False.txt b/tests/summary/fixtures/metrics_data_no_pk/gen/pretty_False_perfect_False_top_False_slim_True_sample_rows_False_sample_pk_False.txt new file mode 100644 index 0000000..288a3cf --- /dev/null +++ b/tests/summary/fixtures/metrics_data_no_pk/gen/pretty_False_perfect_False_top_False_slim_True_sample_rows_False_sample_pk_False.txt @@ -0,0 +1,12 @@ + Attention: the data frames do not match exactly, but as no primary key columns are + provided, the row and column matches cannot be computed. + + Data Inspection + ▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔ + ┏━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━┳━━━━━━━━┓ + ┃ Column ┃ Null% ┃ Distinct ┃ Max ┃ + ┡━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━╇━━━━━━━━┩ + │ id │ 0.0% -> 0.0% (+0.0) │ 5 -> 5 (+0) │ │ + │ price │ 20.0% -> 0.0% (-20.0) │ 5 -> 5 (+0) │ │ + │ status │ 0.0% -> 40.0% (+40.0) │ 5 -> 4 (-1) │ e -> x │ + └────────┴───────────────────────┴─────────────┴────────┘ diff --git a/tests/summary/fixtures/metrics_data_no_pk/gen/pretty_False_perfect_False_top_False_slim_True_sample_rows_True_sample_pk_False.txt b/tests/summary/fixtures/metrics_data_no_pk/gen/pretty_False_perfect_False_top_False_slim_True_sample_rows_True_sample_pk_False.txt new file mode 100644 index 0000000..288a3cf --- /dev/null +++ b/tests/summary/fixtures/metrics_data_no_pk/gen/pretty_False_perfect_False_top_False_slim_True_sample_rows_True_sample_pk_False.txt @@ -0,0 +1,12 @@ + Attention: the data frames do not match exactly, but as no primary key columns are + provided, the row and column matches cannot be computed. + + Data Inspection + ▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔ + ┏━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━┳━━━━━━━━┓ + ┃ Column ┃ Null% ┃ Distinct ┃ Max ┃ + ┡━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━╇━━━━━━━━┩ + │ id │ 0.0% -> 0.0% (+0.0) │ 5 -> 5 (+0) │ │ + │ price │ 20.0% -> 0.0% (-20.0) │ 5 -> 5 (+0) │ │ + │ status │ 0.0% -> 40.0% (+40.0) │ 5 -> 4 (-1) │ e -> x │ + └────────┴───────────────────────┴─────────────┴────────┘ diff --git a/tests/summary/fixtures/metrics_data_no_pk/gen/pretty_False_perfect_False_top_True_slim_False_sample_rows_False_sample_pk_False.txt b/tests/summary/fixtures/metrics_data_no_pk/gen/pretty_False_perfect_False_top_True_slim_False_sample_rows_False_sample_pk_False.txt new file mode 100644 index 0000000..b6a38d4 --- /dev/null +++ b/tests/summary/fixtures/metrics_data_no_pk/gen/pretty_False_perfect_False_top_True_slim_False_sample_rows_False_sample_pk_False.txt @@ -0,0 +1,23 @@ +┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓ +┃ Diffly Summary ┃ +┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛ + Attention: the data frames do not match exactly, but as no primary key columns are + provided, the row and column matches cannot be computed. + + Schemas + ▔▔▔▔▔▔▔ + Schemas match exactly (column count: 3). + + Rows + ▔▔▔▔ + The number of rows matches exactly (row count: 5). + + Data Inspection + ▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔ + ┏━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━┳━━━━━━━━┓ + ┃ Column ┃ Null% ┃ Distinct ┃ Max ┃ + ┡━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━╇━━━━━━━━┩ + │ id │ 0.0% -> 0.0% (+0.0) │ 5 -> 5 (+0) │ │ + │ price │ 20.0% -> 0.0% (-20.0) │ 5 -> 5 (+0) │ │ + │ status │ 0.0% -> 40.0% (+40.0) │ 5 -> 4 (-1) │ e -> x │ + └────────┴───────────────────────┴─────────────┴────────┘ diff --git a/tests/summary/fixtures/metrics_data_no_pk/gen/pretty_False_perfect_False_top_True_slim_False_sample_rows_True_sample_pk_True.txt b/tests/summary/fixtures/metrics_data_no_pk/gen/pretty_False_perfect_False_top_True_slim_False_sample_rows_True_sample_pk_True.txt new file mode 100644 index 0000000..b6a38d4 --- /dev/null +++ b/tests/summary/fixtures/metrics_data_no_pk/gen/pretty_False_perfect_False_top_True_slim_False_sample_rows_True_sample_pk_True.txt @@ -0,0 +1,23 @@ +┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓ +┃ Diffly Summary ┃ +┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛ + Attention: the data frames do not match exactly, but as no primary key columns are + provided, the row and column matches cannot be computed. + + Schemas + ▔▔▔▔▔▔▔ + Schemas match exactly (column count: 3). + + Rows + ▔▔▔▔ + The number of rows matches exactly (row count: 5). + + Data Inspection + ▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔ + ┏━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━┳━━━━━━━━┓ + ┃ Column ┃ Null% ┃ Distinct ┃ Max ┃ + ┡━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━╇━━━━━━━━┩ + │ id │ 0.0% -> 0.0% (+0.0) │ 5 -> 5 (+0) │ │ + │ price │ 20.0% -> 0.0% (-20.0) │ 5 -> 5 (+0) │ │ + │ status │ 0.0% -> 40.0% (+40.0) │ 5 -> 4 (-1) │ e -> x │ + └────────┴───────────────────────┴─────────────┴────────┘ diff --git a/tests/summary/fixtures/metrics_data_no_pk/gen/pretty_False_perfect_False_top_True_slim_True_sample_rows_False_sample_pk_False.txt b/tests/summary/fixtures/metrics_data_no_pk/gen/pretty_False_perfect_False_top_True_slim_True_sample_rows_False_sample_pk_False.txt new file mode 100644 index 0000000..288a3cf --- /dev/null +++ b/tests/summary/fixtures/metrics_data_no_pk/gen/pretty_False_perfect_False_top_True_slim_True_sample_rows_False_sample_pk_False.txt @@ -0,0 +1,12 @@ + Attention: the data frames do not match exactly, but as no primary key columns are + provided, the row and column matches cannot be computed. + + Data Inspection + ▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔ + ┏━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━┳━━━━━━━━┓ + ┃ Column ┃ Null% ┃ Distinct ┃ Max ┃ + ┡━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━╇━━━━━━━━┩ + │ id │ 0.0% -> 0.0% (+0.0) │ 5 -> 5 (+0) │ │ + │ price │ 20.0% -> 0.0% (-20.0) │ 5 -> 5 (+0) │ │ + │ status │ 0.0% -> 40.0% (+40.0) │ 5 -> 4 (-1) │ e -> x │ + └────────┴───────────────────────┴─────────────┴────────┘ diff --git a/tests/summary/fixtures/metrics_data_no_pk/gen/pretty_False_perfect_False_top_True_slim_True_sample_rows_True_sample_pk_True.txt b/tests/summary/fixtures/metrics_data_no_pk/gen/pretty_False_perfect_False_top_True_slim_True_sample_rows_True_sample_pk_True.txt new file mode 100644 index 0000000..288a3cf --- /dev/null +++ b/tests/summary/fixtures/metrics_data_no_pk/gen/pretty_False_perfect_False_top_True_slim_True_sample_rows_True_sample_pk_True.txt @@ -0,0 +1,12 @@ + Attention: the data frames do not match exactly, but as no primary key columns are + provided, the row and column matches cannot be computed. + + Data Inspection + ▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔ + ┏━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━┳━━━━━━━━┓ + ┃ Column ┃ Null% ┃ Distinct ┃ Max ┃ + ┡━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━╇━━━━━━━━┩ + │ id │ 0.0% -> 0.0% (+0.0) │ 5 -> 5 (+0) │ │ + │ price │ 20.0% -> 0.0% (-20.0) │ 5 -> 5 (+0) │ │ + │ status │ 0.0% -> 40.0% (+40.0) │ 5 -> 4 (-1) │ e -> x │ + └────────┴───────────────────────┴─────────────┴────────┘ diff --git a/tests/summary/fixtures/metrics_data_no_pk/gen/pretty_False_perfect_True_top_False_slim_False_sample_rows_False_sample_pk_False.txt b/tests/summary/fixtures/metrics_data_no_pk/gen/pretty_False_perfect_True_top_False_slim_False_sample_rows_False_sample_pk_False.txt new file mode 100644 index 0000000..b6a38d4 --- /dev/null +++ b/tests/summary/fixtures/metrics_data_no_pk/gen/pretty_False_perfect_True_top_False_slim_False_sample_rows_False_sample_pk_False.txt @@ -0,0 +1,23 @@ +┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓ +┃ Diffly Summary ┃ +┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛ + Attention: the data frames do not match exactly, but as no primary key columns are + provided, the row and column matches cannot be computed. + + Schemas + ▔▔▔▔▔▔▔ + Schemas match exactly (column count: 3). + + Rows + ▔▔▔▔ + The number of rows matches exactly (row count: 5). + + Data Inspection + ▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔ + ┏━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━┳━━━━━━━━┓ + ┃ Column ┃ Null% ┃ Distinct ┃ Max ┃ + ┡━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━╇━━━━━━━━┩ + │ id │ 0.0% -> 0.0% (+0.0) │ 5 -> 5 (+0) │ │ + │ price │ 20.0% -> 0.0% (-20.0) │ 5 -> 5 (+0) │ │ + │ status │ 0.0% -> 40.0% (+40.0) │ 5 -> 4 (-1) │ e -> x │ + └────────┴───────────────────────┴─────────────┴────────┘ diff --git a/tests/summary/fixtures/metrics_data_no_pk/gen/pretty_False_perfect_True_top_False_slim_False_sample_rows_True_sample_pk_False.txt b/tests/summary/fixtures/metrics_data_no_pk/gen/pretty_False_perfect_True_top_False_slim_False_sample_rows_True_sample_pk_False.txt new file mode 100644 index 0000000..b6a38d4 --- /dev/null +++ b/tests/summary/fixtures/metrics_data_no_pk/gen/pretty_False_perfect_True_top_False_slim_False_sample_rows_True_sample_pk_False.txt @@ -0,0 +1,23 @@ +┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓ +┃ Diffly Summary ┃ +┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛ + Attention: the data frames do not match exactly, but as no primary key columns are + provided, the row and column matches cannot be computed. + + Schemas + ▔▔▔▔▔▔▔ + Schemas match exactly (column count: 3). + + Rows + ▔▔▔▔ + The number of rows matches exactly (row count: 5). + + Data Inspection + ▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔ + ┏━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━┳━━━━━━━━┓ + ┃ Column ┃ Null% ┃ Distinct ┃ Max ┃ + ┡━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━╇━━━━━━━━┩ + │ id │ 0.0% -> 0.0% (+0.0) │ 5 -> 5 (+0) │ │ + │ price │ 20.0% -> 0.0% (-20.0) │ 5 -> 5 (+0) │ │ + │ status │ 0.0% -> 40.0% (+40.0) │ 5 -> 4 (-1) │ e -> x │ + └────────┴───────────────────────┴─────────────┴────────┘ diff --git a/tests/summary/fixtures/metrics_data_no_pk/gen/pretty_False_perfect_True_top_False_slim_True_sample_rows_False_sample_pk_False.txt b/tests/summary/fixtures/metrics_data_no_pk/gen/pretty_False_perfect_True_top_False_slim_True_sample_rows_False_sample_pk_False.txt new file mode 100644 index 0000000..288a3cf --- /dev/null +++ b/tests/summary/fixtures/metrics_data_no_pk/gen/pretty_False_perfect_True_top_False_slim_True_sample_rows_False_sample_pk_False.txt @@ -0,0 +1,12 @@ + Attention: the data frames do not match exactly, but as no primary key columns are + provided, the row and column matches cannot be computed. + + Data Inspection + ▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔ + ┏━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━┳━━━━━━━━┓ + ┃ Column ┃ Null% ┃ Distinct ┃ Max ┃ + ┡━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━╇━━━━━━━━┩ + │ id │ 0.0% -> 0.0% (+0.0) │ 5 -> 5 (+0) │ │ + │ price │ 20.0% -> 0.0% (-20.0) │ 5 -> 5 (+0) │ │ + │ status │ 0.0% -> 40.0% (+40.0) │ 5 -> 4 (-1) │ e -> x │ + └────────┴───────────────────────┴─────────────┴────────┘ diff --git a/tests/summary/fixtures/metrics_data_no_pk/gen/pretty_False_perfect_True_top_False_slim_True_sample_rows_True_sample_pk_False.txt b/tests/summary/fixtures/metrics_data_no_pk/gen/pretty_False_perfect_True_top_False_slim_True_sample_rows_True_sample_pk_False.txt new file mode 100644 index 0000000..288a3cf --- /dev/null +++ b/tests/summary/fixtures/metrics_data_no_pk/gen/pretty_False_perfect_True_top_False_slim_True_sample_rows_True_sample_pk_False.txt @@ -0,0 +1,12 @@ + Attention: the data frames do not match exactly, but as no primary key columns are + provided, the row and column matches cannot be computed. + + Data Inspection + ▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔ + ┏━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━┳━━━━━━━━┓ + ┃ Column ┃ Null% ┃ Distinct ┃ Max ┃ + ┡━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━╇━━━━━━━━┩ + │ id │ 0.0% -> 0.0% (+0.0) │ 5 -> 5 (+0) │ │ + │ price │ 20.0% -> 0.0% (-20.0) │ 5 -> 5 (+0) │ │ + │ status │ 0.0% -> 40.0% (+40.0) │ 5 -> 4 (-1) │ e -> x │ + └────────┴───────────────────────┴─────────────┴────────┘ diff --git a/tests/summary/fixtures/metrics_data_no_pk/gen/pretty_False_perfect_True_top_True_slim_False_sample_rows_False_sample_pk_False.txt b/tests/summary/fixtures/metrics_data_no_pk/gen/pretty_False_perfect_True_top_True_slim_False_sample_rows_False_sample_pk_False.txt new file mode 100644 index 0000000..b6a38d4 --- /dev/null +++ b/tests/summary/fixtures/metrics_data_no_pk/gen/pretty_False_perfect_True_top_True_slim_False_sample_rows_False_sample_pk_False.txt @@ -0,0 +1,23 @@ +┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓ +┃ Diffly Summary ┃ +┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛ + Attention: the data frames do not match exactly, but as no primary key columns are + provided, the row and column matches cannot be computed. + + Schemas + ▔▔▔▔▔▔▔ + Schemas match exactly (column count: 3). + + Rows + ▔▔▔▔ + The number of rows matches exactly (row count: 5). + + Data Inspection + ▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔ + ┏━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━┳━━━━━━━━┓ + ┃ Column ┃ Null% ┃ Distinct ┃ Max ┃ + ┡━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━╇━━━━━━━━┩ + │ id │ 0.0% -> 0.0% (+0.0) │ 5 -> 5 (+0) │ │ + │ price │ 20.0% -> 0.0% (-20.0) │ 5 -> 5 (+0) │ │ + │ status │ 0.0% -> 40.0% (+40.0) │ 5 -> 4 (-1) │ e -> x │ + └────────┴───────────────────────┴─────────────┴────────┘ diff --git a/tests/summary/fixtures/metrics_data_no_pk/gen/pretty_False_perfect_True_top_True_slim_False_sample_rows_True_sample_pk_True.txt b/tests/summary/fixtures/metrics_data_no_pk/gen/pretty_False_perfect_True_top_True_slim_False_sample_rows_True_sample_pk_True.txt new file mode 100644 index 0000000..b6a38d4 --- /dev/null +++ b/tests/summary/fixtures/metrics_data_no_pk/gen/pretty_False_perfect_True_top_True_slim_False_sample_rows_True_sample_pk_True.txt @@ -0,0 +1,23 @@ +┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓ +┃ Diffly Summary ┃ +┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛ + Attention: the data frames do not match exactly, but as no primary key columns are + provided, the row and column matches cannot be computed. + + Schemas + ▔▔▔▔▔▔▔ + Schemas match exactly (column count: 3). + + Rows + ▔▔▔▔ + The number of rows matches exactly (row count: 5). + + Data Inspection + ▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔ + ┏━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━┳━━━━━━━━┓ + ┃ Column ┃ Null% ┃ Distinct ┃ Max ┃ + ┡━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━╇━━━━━━━━┩ + │ id │ 0.0% -> 0.0% (+0.0) │ 5 -> 5 (+0) │ │ + │ price │ 20.0% -> 0.0% (-20.0) │ 5 -> 5 (+0) │ │ + │ status │ 0.0% -> 40.0% (+40.0) │ 5 -> 4 (-1) │ e -> x │ + └────────┴───────────────────────┴─────────────┴────────┘ diff --git a/tests/summary/fixtures/metrics_data_no_pk/gen/pretty_False_perfect_True_top_True_slim_True_sample_rows_False_sample_pk_False.txt b/tests/summary/fixtures/metrics_data_no_pk/gen/pretty_False_perfect_True_top_True_slim_True_sample_rows_False_sample_pk_False.txt new file mode 100644 index 0000000..288a3cf --- /dev/null +++ b/tests/summary/fixtures/metrics_data_no_pk/gen/pretty_False_perfect_True_top_True_slim_True_sample_rows_False_sample_pk_False.txt @@ -0,0 +1,12 @@ + Attention: the data frames do not match exactly, but as no primary key columns are + provided, the row and column matches cannot be computed. + + Data Inspection + ▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔ + ┏━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━┳━━━━━━━━┓ + ┃ Column ┃ Null% ┃ Distinct ┃ Max ┃ + ┡━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━╇━━━━━━━━┩ + │ id │ 0.0% -> 0.0% (+0.0) │ 5 -> 5 (+0) │ │ + │ price │ 20.0% -> 0.0% (-20.0) │ 5 -> 5 (+0) │ │ + │ status │ 0.0% -> 40.0% (+40.0) │ 5 -> 4 (-1) │ e -> x │ + └────────┴───────────────────────┴─────────────┴────────┘ diff --git a/tests/summary/fixtures/metrics_data_no_pk/gen/pretty_False_perfect_True_top_True_slim_True_sample_rows_True_sample_pk_True.txt b/tests/summary/fixtures/metrics_data_no_pk/gen/pretty_False_perfect_True_top_True_slim_True_sample_rows_True_sample_pk_True.txt new file mode 100644 index 0000000..288a3cf --- /dev/null +++ b/tests/summary/fixtures/metrics_data_no_pk/gen/pretty_False_perfect_True_top_True_slim_True_sample_rows_True_sample_pk_True.txt @@ -0,0 +1,12 @@ + Attention: the data frames do not match exactly, but as no primary key columns are + provided, the row and column matches cannot be computed. + + Data Inspection + ▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔ + ┏━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━┳━━━━━━━━┓ + ┃ Column ┃ Null% ┃ Distinct ┃ Max ┃ + ┡━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━╇━━━━━━━━┩ + │ id │ 0.0% -> 0.0% (+0.0) │ 5 -> 5 (+0) │ │ + │ price │ 20.0% -> 0.0% (-20.0) │ 5 -> 5 (+0) │ │ + │ status │ 0.0% -> 40.0% (+40.0) │ 5 -> 4 (-1) │ e -> x │ + └────────┴───────────────────────┴─────────────┴────────┘ diff --git a/tests/summary/fixtures/metrics_data_no_pk/gen/pretty_True_perfect_False_top_False_slim_False_sample_rows_False_sample_pk_False.txt b/tests/summary/fixtures/metrics_data_no_pk/gen/pretty_True_perfect_False_top_False_slim_False_sample_rows_False_sample_pk_False.txt new file mode 100644 index 0000000..1016d10 --- /dev/null +++ b/tests/summary/fixtures/metrics_data_no_pk/gen/pretty_True_perfect_False_top_False_slim_False_sample_rows_False_sample_pk_False.txt @@ -0,0 +1,23 @@ +┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓ +┃  Diffly Summary  ┃ +┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛ + Attention: the data frames do not match exactly, but as no primary key columns are  + provided, the row and column matches cannot be computed. + + Schemas + ▔▔▔▔▔▔▔ + Schemas match exactly (column count: 3). + + Rows + ▔▔▔▔ + The number of rows matches exactly (row count: 5). + + Data Inspection + ▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔ + ┏━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━┳━━━━━━━━┓ + ┃ Column ┃  Null% ┃  Distinct ┃  Max ┃ + ┡━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━╇━━━━━━━━┩ + │ id  │ 0.0% -> 0.0% (+0.0) │ 5 -> 5 (+0) │ │ + │ price  │ 20.0% -> 0.0% (-20.0) │ 5 -> 5 (+0) │ │ + │ status │ 0.0% -> 40.0% (+40.0) │ 5 -> 4 (-1) │ e -> x │ + └────────┴───────────────────────┴─────────────┴────────┘ diff --git a/tests/summary/fixtures/metrics_data_no_pk/gen/pretty_True_perfect_False_top_False_slim_False_sample_rows_True_sample_pk_False.txt b/tests/summary/fixtures/metrics_data_no_pk/gen/pretty_True_perfect_False_top_False_slim_False_sample_rows_True_sample_pk_False.txt new file mode 100644 index 0000000..1016d10 --- /dev/null +++ b/tests/summary/fixtures/metrics_data_no_pk/gen/pretty_True_perfect_False_top_False_slim_False_sample_rows_True_sample_pk_False.txt @@ -0,0 +1,23 @@ +┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓ +┃  Diffly Summary  ┃ +┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛ + Attention: the data frames do not match exactly, but as no primary key columns are  + provided, the row and column matches cannot be computed. + + Schemas + ▔▔▔▔▔▔▔ + Schemas match exactly (column count: 3). + + Rows + ▔▔▔▔ + The number of rows matches exactly (row count: 5). + + Data Inspection + ▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔ + ┏━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━┳━━━━━━━━┓ + ┃ Column ┃  Null% ┃  Distinct ┃  Max ┃ + ┡━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━╇━━━━━━━━┩ + │ id  │ 0.0% -> 0.0% (+0.0) │ 5 -> 5 (+0) │ │ + │ price  │ 20.0% -> 0.0% (-20.0) │ 5 -> 5 (+0) │ │ + │ status │ 0.0% -> 40.0% (+40.0) │ 5 -> 4 (-1) │ e -> x │ + └────────┴───────────────────────┴─────────────┴────────┘ diff --git a/tests/summary/fixtures/metrics_data_no_pk/gen/pretty_True_perfect_False_top_False_slim_True_sample_rows_False_sample_pk_False.txt b/tests/summary/fixtures/metrics_data_no_pk/gen/pretty_True_perfect_False_top_False_slim_True_sample_rows_False_sample_pk_False.txt new file mode 100644 index 0000000..036091a --- /dev/null +++ b/tests/summary/fixtures/metrics_data_no_pk/gen/pretty_True_perfect_False_top_False_slim_True_sample_rows_False_sample_pk_False.txt @@ -0,0 +1,12 @@ + Attention: the data frames do not match exactly, but as no primary key columns are  + provided, the row and column matches cannot be computed. + + Data Inspection + ▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔ + ┏━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━┳━━━━━━━━┓ + ┃ Column ┃  Null% ┃  Distinct ┃  Max ┃ + ┡━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━╇━━━━━━━━┩ + │ id  │ 0.0% -> 0.0% (+0.0) │ 5 -> 5 (+0) │ │ + │ price  │ 20.0% -> 0.0% (-20.0) │ 5 -> 5 (+0) │ │ + │ status │ 0.0% -> 40.0% (+40.0) │ 5 -> 4 (-1) │ e -> x │ + └────────┴───────────────────────┴─────────────┴────────┘ diff --git a/tests/summary/fixtures/metrics_data_no_pk/gen/pretty_True_perfect_False_top_False_slim_True_sample_rows_True_sample_pk_False.txt b/tests/summary/fixtures/metrics_data_no_pk/gen/pretty_True_perfect_False_top_False_slim_True_sample_rows_True_sample_pk_False.txt new file mode 100644 index 0000000..036091a --- /dev/null +++ b/tests/summary/fixtures/metrics_data_no_pk/gen/pretty_True_perfect_False_top_False_slim_True_sample_rows_True_sample_pk_False.txt @@ -0,0 +1,12 @@ + Attention: the data frames do not match exactly, but as no primary key columns are  + provided, the row and column matches cannot be computed. + + Data Inspection + ▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔ + ┏━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━┳━━━━━━━━┓ + ┃ Column ┃  Null% ┃  Distinct ┃  Max ┃ + ┡━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━╇━━━━━━━━┩ + │ id  │ 0.0% -> 0.0% (+0.0) │ 5 -> 5 (+0) │ │ + │ price  │ 20.0% -> 0.0% (-20.0) │ 5 -> 5 (+0) │ │ + │ status │ 0.0% -> 40.0% (+40.0) │ 5 -> 4 (-1) │ e -> x │ + └────────┴───────────────────────┴─────────────┴────────┘ diff --git a/tests/summary/fixtures/metrics_data_no_pk/gen/pretty_True_perfect_False_top_True_slim_False_sample_rows_False_sample_pk_False.txt b/tests/summary/fixtures/metrics_data_no_pk/gen/pretty_True_perfect_False_top_True_slim_False_sample_rows_False_sample_pk_False.txt new file mode 100644 index 0000000..1016d10 --- /dev/null +++ b/tests/summary/fixtures/metrics_data_no_pk/gen/pretty_True_perfect_False_top_True_slim_False_sample_rows_False_sample_pk_False.txt @@ -0,0 +1,23 @@ +┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓ +┃  Diffly Summary  ┃ +┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛ + Attention: the data frames do not match exactly, but as no primary key columns are  + provided, the row and column matches cannot be computed. + + Schemas + ▔▔▔▔▔▔▔ + Schemas match exactly (column count: 3). + + Rows + ▔▔▔▔ + The number of rows matches exactly (row count: 5). + + Data Inspection + ▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔ + ┏━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━┳━━━━━━━━┓ + ┃ Column ┃  Null% ┃  Distinct ┃  Max ┃ + ┡━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━╇━━━━━━━━┩ + │ id  │ 0.0% -> 0.0% (+0.0) │ 5 -> 5 (+0) │ │ + │ price  │ 20.0% -> 0.0% (-20.0) │ 5 -> 5 (+0) │ │ + │ status │ 0.0% -> 40.0% (+40.0) │ 5 -> 4 (-1) │ e -> x │ + └────────┴───────────────────────┴─────────────┴────────┘ diff --git a/tests/summary/fixtures/metrics_data_no_pk/gen/pretty_True_perfect_False_top_True_slim_False_sample_rows_True_sample_pk_True.txt b/tests/summary/fixtures/metrics_data_no_pk/gen/pretty_True_perfect_False_top_True_slim_False_sample_rows_True_sample_pk_True.txt new file mode 100644 index 0000000..1016d10 --- /dev/null +++ b/tests/summary/fixtures/metrics_data_no_pk/gen/pretty_True_perfect_False_top_True_slim_False_sample_rows_True_sample_pk_True.txt @@ -0,0 +1,23 @@ +┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓ +┃  Diffly Summary  ┃ +┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛ + Attention: the data frames do not match exactly, but as no primary key columns are  + provided, the row and column matches cannot be computed. + + Schemas + ▔▔▔▔▔▔▔ + Schemas match exactly (column count: 3). + + Rows + ▔▔▔▔ + The number of rows matches exactly (row count: 5). + + Data Inspection + ▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔ + ┏━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━┳━━━━━━━━┓ + ┃ Column ┃  Null% ┃  Distinct ┃  Max ┃ + ┡━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━╇━━━━━━━━┩ + │ id  │ 0.0% -> 0.0% (+0.0) │ 5 -> 5 (+0) │ │ + │ price  │ 20.0% -> 0.0% (-20.0) │ 5 -> 5 (+0) │ │ + │ status │ 0.0% -> 40.0% (+40.0) │ 5 -> 4 (-1) │ e -> x │ + └────────┴───────────────────────┴─────────────┴────────┘ diff --git a/tests/summary/fixtures/metrics_data_no_pk/gen/pretty_True_perfect_False_top_True_slim_True_sample_rows_False_sample_pk_False.txt b/tests/summary/fixtures/metrics_data_no_pk/gen/pretty_True_perfect_False_top_True_slim_True_sample_rows_False_sample_pk_False.txt new file mode 100644 index 0000000..036091a --- /dev/null +++ b/tests/summary/fixtures/metrics_data_no_pk/gen/pretty_True_perfect_False_top_True_slim_True_sample_rows_False_sample_pk_False.txt @@ -0,0 +1,12 @@ + Attention: the data frames do not match exactly, but as no primary key columns are  + provided, the row and column matches cannot be computed. + + Data Inspection + ▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔ + ┏━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━┳━━━━━━━━┓ + ┃ Column ┃  Null% ┃  Distinct ┃  Max ┃ + ┡━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━╇━━━━━━━━┩ + │ id  │ 0.0% -> 0.0% (+0.0) │ 5 -> 5 (+0) │ │ + │ price  │ 20.0% -> 0.0% (-20.0) │ 5 -> 5 (+0) │ │ + │ status │ 0.0% -> 40.0% (+40.0) │ 5 -> 4 (-1) │ e -> x │ + └────────┴───────────────────────┴─────────────┴────────┘ diff --git a/tests/summary/fixtures/metrics_data_no_pk/gen/pretty_True_perfect_False_top_True_slim_True_sample_rows_True_sample_pk_True.txt b/tests/summary/fixtures/metrics_data_no_pk/gen/pretty_True_perfect_False_top_True_slim_True_sample_rows_True_sample_pk_True.txt new file mode 100644 index 0000000..036091a --- /dev/null +++ b/tests/summary/fixtures/metrics_data_no_pk/gen/pretty_True_perfect_False_top_True_slim_True_sample_rows_True_sample_pk_True.txt @@ -0,0 +1,12 @@ + Attention: the data frames do not match exactly, but as no primary key columns are  + provided, the row and column matches cannot be computed. + + Data Inspection + ▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔ + ┏━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━┳━━━━━━━━┓ + ┃ Column ┃  Null% ┃  Distinct ┃  Max ┃ + ┡━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━╇━━━━━━━━┩ + │ id  │ 0.0% -> 0.0% (+0.0) │ 5 -> 5 (+0) │ │ + │ price  │ 20.0% -> 0.0% (-20.0) │ 5 -> 5 (+0) │ │ + │ status │ 0.0% -> 40.0% (+40.0) │ 5 -> 4 (-1) │ e -> x │ + └────────┴───────────────────────┴─────────────┴────────┘ diff --git a/tests/summary/fixtures/metrics_data_no_pk/gen/pretty_True_perfect_True_top_False_slim_False_sample_rows_False_sample_pk_False.txt b/tests/summary/fixtures/metrics_data_no_pk/gen/pretty_True_perfect_True_top_False_slim_False_sample_rows_False_sample_pk_False.txt new file mode 100644 index 0000000..1016d10 --- /dev/null +++ b/tests/summary/fixtures/metrics_data_no_pk/gen/pretty_True_perfect_True_top_False_slim_False_sample_rows_False_sample_pk_False.txt @@ -0,0 +1,23 @@ +┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓ +┃  Diffly Summary  ┃ +┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛ + Attention: the data frames do not match exactly, but as no primary key columns are  + provided, the row and column matches cannot be computed. + + Schemas + ▔▔▔▔▔▔▔ + Schemas match exactly (column count: 3). + + Rows + ▔▔▔▔ + The number of rows matches exactly (row count: 5). + + Data Inspection + ▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔ + ┏━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━┳━━━━━━━━┓ + ┃ Column ┃  Null% ┃  Distinct ┃  Max ┃ + ┡━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━╇━━━━━━━━┩ + │ id  │ 0.0% -> 0.0% (+0.0) │ 5 -> 5 (+0) │ │ + │ price  │ 20.0% -> 0.0% (-20.0) │ 5 -> 5 (+0) │ │ + │ status │ 0.0% -> 40.0% (+40.0) │ 5 -> 4 (-1) │ e -> x │ + └────────┴───────────────────────┴─────────────┴────────┘ diff --git a/tests/summary/fixtures/metrics_data_no_pk/gen/pretty_True_perfect_True_top_False_slim_False_sample_rows_True_sample_pk_False.txt b/tests/summary/fixtures/metrics_data_no_pk/gen/pretty_True_perfect_True_top_False_slim_False_sample_rows_True_sample_pk_False.txt new file mode 100644 index 0000000..1016d10 --- /dev/null +++ b/tests/summary/fixtures/metrics_data_no_pk/gen/pretty_True_perfect_True_top_False_slim_False_sample_rows_True_sample_pk_False.txt @@ -0,0 +1,23 @@ +┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓ +┃  Diffly Summary  ┃ +┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛ + Attention: the data frames do not match exactly, but as no primary key columns are  + provided, the row and column matches cannot be computed. + + Schemas + ▔▔▔▔▔▔▔ + Schemas match exactly (column count: 3). + + Rows + ▔▔▔▔ + The number of rows matches exactly (row count: 5). + + Data Inspection + ▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔ + ┏━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━┳━━━━━━━━┓ + ┃ Column ┃  Null% ┃  Distinct ┃  Max ┃ + ┡━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━╇━━━━━━━━┩ + │ id  │ 0.0% -> 0.0% (+0.0) │ 5 -> 5 (+0) │ │ + │ price  │ 20.0% -> 0.0% (-20.0) │ 5 -> 5 (+0) │ │ + │ status │ 0.0% -> 40.0% (+40.0) │ 5 -> 4 (-1) │ e -> x │ + └────────┴───────────────────────┴─────────────┴────────┘ diff --git a/tests/summary/fixtures/metrics_data_no_pk/gen/pretty_True_perfect_True_top_False_slim_True_sample_rows_False_sample_pk_False.txt b/tests/summary/fixtures/metrics_data_no_pk/gen/pretty_True_perfect_True_top_False_slim_True_sample_rows_False_sample_pk_False.txt new file mode 100644 index 0000000..036091a --- /dev/null +++ b/tests/summary/fixtures/metrics_data_no_pk/gen/pretty_True_perfect_True_top_False_slim_True_sample_rows_False_sample_pk_False.txt @@ -0,0 +1,12 @@ + Attention: the data frames do not match exactly, but as no primary key columns are  + provided, the row and column matches cannot be computed. + + Data Inspection + ▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔ + ┏━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━┳━━━━━━━━┓ + ┃ Column ┃  Null% ┃  Distinct ┃  Max ┃ + ┡━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━╇━━━━━━━━┩ + │ id  │ 0.0% -> 0.0% (+0.0) │ 5 -> 5 (+0) │ │ + │ price  │ 20.0% -> 0.0% (-20.0) │ 5 -> 5 (+0) │ │ + │ status │ 0.0% -> 40.0% (+40.0) │ 5 -> 4 (-1) │ e -> x │ + └────────┴───────────────────────┴─────────────┴────────┘ diff --git a/tests/summary/fixtures/metrics_data_no_pk/gen/pretty_True_perfect_True_top_False_slim_True_sample_rows_True_sample_pk_False.txt b/tests/summary/fixtures/metrics_data_no_pk/gen/pretty_True_perfect_True_top_False_slim_True_sample_rows_True_sample_pk_False.txt new file mode 100644 index 0000000..036091a --- /dev/null +++ b/tests/summary/fixtures/metrics_data_no_pk/gen/pretty_True_perfect_True_top_False_slim_True_sample_rows_True_sample_pk_False.txt @@ -0,0 +1,12 @@ + Attention: the data frames do not match exactly, but as no primary key columns are  + provided, the row and column matches cannot be computed. + + Data Inspection + ▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔ + ┏━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━┳━━━━━━━━┓ + ┃ Column ┃  Null% ┃  Distinct ┃  Max ┃ + ┡━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━╇━━━━━━━━┩ + │ id  │ 0.0% -> 0.0% (+0.0) │ 5 -> 5 (+0) │ │ + │ price  │ 20.0% -> 0.0% (-20.0) │ 5 -> 5 (+0) │ │ + │ status │ 0.0% -> 40.0% (+40.0) │ 5 -> 4 (-1) │ e -> x │ + └────────┴───────────────────────┴─────────────┴────────┘ diff --git a/tests/summary/fixtures/metrics_data_no_pk/gen/pretty_True_perfect_True_top_True_slim_False_sample_rows_False_sample_pk_False.txt b/tests/summary/fixtures/metrics_data_no_pk/gen/pretty_True_perfect_True_top_True_slim_False_sample_rows_False_sample_pk_False.txt new file mode 100644 index 0000000..1016d10 --- /dev/null +++ b/tests/summary/fixtures/metrics_data_no_pk/gen/pretty_True_perfect_True_top_True_slim_False_sample_rows_False_sample_pk_False.txt @@ -0,0 +1,23 @@ +┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓ +┃  Diffly Summary  ┃ +┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛ + Attention: the data frames do not match exactly, but as no primary key columns are  + provided, the row and column matches cannot be computed. + + Schemas + ▔▔▔▔▔▔▔ + Schemas match exactly (column count: 3). + + Rows + ▔▔▔▔ + The number of rows matches exactly (row count: 5). + + Data Inspection + ▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔ + ┏━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━┳━━━━━━━━┓ + ┃ Column ┃  Null% ┃  Distinct ┃  Max ┃ + ┡━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━╇━━━━━━━━┩ + │ id  │ 0.0% -> 0.0% (+0.0) │ 5 -> 5 (+0) │ │ + │ price  │ 20.0% -> 0.0% (-20.0) │ 5 -> 5 (+0) │ │ + │ status │ 0.0% -> 40.0% (+40.0) │ 5 -> 4 (-1) │ e -> x │ + └────────┴───────────────────────┴─────────────┴────────┘ diff --git a/tests/summary/fixtures/metrics_data_no_pk/gen/pretty_True_perfect_True_top_True_slim_False_sample_rows_True_sample_pk_True.txt b/tests/summary/fixtures/metrics_data_no_pk/gen/pretty_True_perfect_True_top_True_slim_False_sample_rows_True_sample_pk_True.txt new file mode 100644 index 0000000..1016d10 --- /dev/null +++ b/tests/summary/fixtures/metrics_data_no_pk/gen/pretty_True_perfect_True_top_True_slim_False_sample_rows_True_sample_pk_True.txt @@ -0,0 +1,23 @@ +┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓ +┃  Diffly Summary  ┃ +┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛ + Attention: the data frames do not match exactly, but as no primary key columns are  + provided, the row and column matches cannot be computed. + + Schemas + ▔▔▔▔▔▔▔ + Schemas match exactly (column count: 3). + + Rows + ▔▔▔▔ + The number of rows matches exactly (row count: 5). + + Data Inspection + ▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔ + ┏━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━┳━━━━━━━━┓ + ┃ Column ┃  Null% ┃  Distinct ┃  Max ┃ + ┡━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━╇━━━━━━━━┩ + │ id  │ 0.0% -> 0.0% (+0.0) │ 5 -> 5 (+0) │ │ + │ price  │ 20.0% -> 0.0% (-20.0) │ 5 -> 5 (+0) │ │ + │ status │ 0.0% -> 40.0% (+40.0) │ 5 -> 4 (-1) │ e -> x │ + └────────┴───────────────────────┴─────────────┴────────┘ diff --git a/tests/summary/fixtures/metrics_data_no_pk/gen/pretty_True_perfect_True_top_True_slim_True_sample_rows_False_sample_pk_False.txt b/tests/summary/fixtures/metrics_data_no_pk/gen/pretty_True_perfect_True_top_True_slim_True_sample_rows_False_sample_pk_False.txt new file mode 100644 index 0000000..036091a --- /dev/null +++ b/tests/summary/fixtures/metrics_data_no_pk/gen/pretty_True_perfect_True_top_True_slim_True_sample_rows_False_sample_pk_False.txt @@ -0,0 +1,12 @@ + Attention: the data frames do not match exactly, but as no primary key columns are  + provided, the row and column matches cannot be computed. + + Data Inspection + ▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔ + ┏━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━┳━━━━━━━━┓ + ┃ Column ┃  Null% ┃  Distinct ┃  Max ┃ + ┡━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━╇━━━━━━━━┩ + │ id  │ 0.0% -> 0.0% (+0.0) │ 5 -> 5 (+0) │ │ + │ price  │ 20.0% -> 0.0% (-20.0) │ 5 -> 5 (+0) │ │ + │ status │ 0.0% -> 40.0% (+40.0) │ 5 -> 4 (-1) │ e -> x │ + └────────┴───────────────────────┴─────────────┴────────┘ diff --git a/tests/summary/fixtures/metrics_data_no_pk/gen/pretty_True_perfect_True_top_True_slim_True_sample_rows_True_sample_pk_True.txt b/tests/summary/fixtures/metrics_data_no_pk/gen/pretty_True_perfect_True_top_True_slim_True_sample_rows_True_sample_pk_True.txt new file mode 100644 index 0000000..036091a --- /dev/null +++ b/tests/summary/fixtures/metrics_data_no_pk/gen/pretty_True_perfect_True_top_True_slim_True_sample_rows_True_sample_pk_True.txt @@ -0,0 +1,12 @@ + Attention: the data frames do not match exactly, but as no primary key columns are  + provided, the row and column matches cannot be computed. + + Data Inspection + ▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔ + ┏━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━┳━━━━━━━━┓ + ┃ Column ┃  Null% ┃  Distinct ┃  Max ┃ + ┡━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━╇━━━━━━━━┩ + │ id  │ 0.0% -> 0.0% (+0.0) │ 5 -> 5 (+0) │ │ + │ price  │ 20.0% -> 0.0% (-20.0) │ 5 -> 5 (+0) │ │ + │ status │ 0.0% -> 40.0% (+40.0) │ 5 -> 4 (-1) │ e -> x │ + └────────┴───────────────────────┴─────────────┴────────┘ diff --git a/tests/summary/fixtures/metrics_data_no_pk/test_metrics_data_no_pk.py b/tests/summary/fixtures/metrics_data_no_pk/test_metrics_data_no_pk.py new file mode 100644 index 0000000..e43f2f4 --- /dev/null +++ b/tests/summary/fixtures/metrics_data_no_pk/test_metrics_data_no_pk.py @@ -0,0 +1,39 @@ +# Copyright (c) QuantCo 2025-2026 +# SPDX-License-Identifier: BSD-3-Clause + +import polars as pl +import polars.selectors as cs +import pytest + +from diffly import compare_frames +from diffly.metrics.data import DEFAULT_DATA_METRICS, DataMetric +from tests.utils import generate_summaries + + +@pytest.mark.generate +def test_generate() -> None: + # No primary key: row and column matches cannot be computed, but data metrics still + # characterize each side individually and are shown in the Data Inspection section. + left = pl.DataFrame( + { + "id": [1, 2, 3, 4, 5], + "price": [10.0, 20.0, None, 40.0, 50.0], + "status": ["a", "b", "c", "d", "e"], + } + ) + right = pl.DataFrame( + { + "id": [1, 2, 3, 4, 6], + "price": [10.0, 21.0, 30.0, 42.0, 50.0], + "status": ["a", None, "x", None, "e"], + } + ) + comp = compare_frames(left, right) + generate_summaries( + comp, + data_metrics={ + "Null%": DEFAULT_DATA_METRICS["Null%"], + "Distinct": DataMetric(fn=lambda col: col.n_unique()), + "Max": DataMetric(fn=lambda col: col.max(), selector=cs.string()), + }, + ) diff --git a/tests/summary/fixtures/metrics_long_labels/gen/pretty_False_perfect_False_top_False_slim_False_sample_rows_False_sample_pk_False.txt b/tests/summary/fixtures/metrics_long_labels/gen/pretty_False_perfect_False_top_False_slim_False_sample_rows_False_sample_pk_False.txt index 1677141..356dcaf 100644 --- a/tests/summary/fixtures/metrics_long_labels/gen/pretty_False_perfect_False_top_False_slim_False_sample_rows_False_sample_pk_False.txt +++ b/tests/summary/fixtures/metrics_long_labels/gen/pretty_False_perfect_False_top_False_slim_False_sample_rows_False_sample_pk_False.txt @@ -20,12 +20,12 @@ Columns ▔▔▔▔▔▔▔ - ┏━━━━━━━━┳━━━━━━━━┳━━━━━━━━┳━━━━━━━━┳━━━━━━━━━┳━━━━━━━━┳━━━━━━━━━┳━━━━━━━━┳━━━━━━━━━┓ - ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ Mean ┃ Mean ┃ - ┃ ┃ Match ┃ Mean ┃ Median ┃ Minimum ┃ Maxim… ┃ Standa… ┃ Absol… ┃ Relati… ┃ - ┃ Column ┃ Rate ┃ Delta ┃ Delta ┃ Delta ┃ Delta ┃ Deviat… ┃ Devia… ┃ Deviat… ┃ - ┡━━━━━━━━╇━━━━━━━━╇━━━━━━━━╇━━━━━━━━╇━━━━━━━━━╇━━━━━━━━╇━━━━━━━━━╇━━━━━━━━╇━━━━━━━━━┩ - │ price │ 60.00% │ 0.6 │ 0 │ 0 │ 2 │ 0.8944 │ 0.6 │ 0.02 │ - │ qty │ 80.00% │ 0.2 │ 0 │ 0 │ 1 │ 0.4472 │ 0.2 │ 0.05 │ - │ status │ 80.00% │ │ │ │ │ │ │ │ - └────────┴────────┴────────┴────────┴─────────┴────────┴─────────┴────────┴─────────┘ + ┏━━━━━━━━┳━━━━━━━━┳━━━━━━━━┳━━━━━━━━━┳━━━━━━━━┳━━━━━━━━━┳━━━━━━━━┳━━━━━━━━━┳━━━━━━━━┓ + ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ Mean ┃ Mean ┃ + ┃ ┃ Match ┃ Mean ┃ Median ┃ Minim… ┃ Maximum ┃ Stand… ┃ Absolu… ┃ Relat… ┃ + ┃ Column ┃ Rate ┃ Diff ┃ Diff ┃ Diff ┃ Diff ┃ Diff ┃ Diff ┃ Diff ┃ + ┡━━━━━━━━╇━━━━━━━━╇━━━━━━━━╇━━━━━━━━━╇━━━━━━━━╇━━━━━━━━━╇━━━━━━━━╇━━━━━━━━━╇━━━━━━━━┩ + │ price │ 60.00% │ 0.6 │ 0 │ 0 │ 2 │ 0.8944 │ 0.6 │ 0.02 │ + │ qty │ 80.00% │ 0.2 │ 0 │ 0 │ 1 │ 0.4472 │ 0.2 │ 0.05 │ + │ status │ 80.00% │ │ │ │ │ │ │ │ + └────────┴────────┴────────┴─────────┴────────┴─────────┴────────┴─────────┴────────┘ diff --git a/tests/summary/fixtures/metrics_long_labels/gen/pretty_False_perfect_False_top_False_slim_False_sample_rows_True_sample_pk_False.txt b/tests/summary/fixtures/metrics_long_labels/gen/pretty_False_perfect_False_top_False_slim_False_sample_rows_True_sample_pk_False.txt index 1677141..356dcaf 100644 --- a/tests/summary/fixtures/metrics_long_labels/gen/pretty_False_perfect_False_top_False_slim_False_sample_rows_True_sample_pk_False.txt +++ b/tests/summary/fixtures/metrics_long_labels/gen/pretty_False_perfect_False_top_False_slim_False_sample_rows_True_sample_pk_False.txt @@ -20,12 +20,12 @@ Columns ▔▔▔▔▔▔▔ - ┏━━━━━━━━┳━━━━━━━━┳━━━━━━━━┳━━━━━━━━┳━━━━━━━━━┳━━━━━━━━┳━━━━━━━━━┳━━━━━━━━┳━━━━━━━━━┓ - ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ Mean ┃ Mean ┃ - ┃ ┃ Match ┃ Mean ┃ Median ┃ Minimum ┃ Maxim… ┃ Standa… ┃ Absol… ┃ Relati… ┃ - ┃ Column ┃ Rate ┃ Delta ┃ Delta ┃ Delta ┃ Delta ┃ Deviat… ┃ Devia… ┃ Deviat… ┃ - ┡━━━━━━━━╇━━━━━━━━╇━━━━━━━━╇━━━━━━━━╇━━━━━━━━━╇━━━━━━━━╇━━━━━━━━━╇━━━━━━━━╇━━━━━━━━━┩ - │ price │ 60.00% │ 0.6 │ 0 │ 0 │ 2 │ 0.8944 │ 0.6 │ 0.02 │ - │ qty │ 80.00% │ 0.2 │ 0 │ 0 │ 1 │ 0.4472 │ 0.2 │ 0.05 │ - │ status │ 80.00% │ │ │ │ │ │ │ │ - └────────┴────────┴────────┴────────┴─────────┴────────┴─────────┴────────┴─────────┘ + ┏━━━━━━━━┳━━━━━━━━┳━━━━━━━━┳━━━━━━━━━┳━━━━━━━━┳━━━━━━━━━┳━━━━━━━━┳━━━━━━━━━┳━━━━━━━━┓ + ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ Mean ┃ Mean ┃ + ┃ ┃ Match ┃ Mean ┃ Median ┃ Minim… ┃ Maximum ┃ Stand… ┃ Absolu… ┃ Relat… ┃ + ┃ Column ┃ Rate ┃ Diff ┃ Diff ┃ Diff ┃ Diff ┃ Diff ┃ Diff ┃ Diff ┃ + ┡━━━━━━━━╇━━━━━━━━╇━━━━━━━━╇━━━━━━━━━╇━━━━━━━━╇━━━━━━━━━╇━━━━━━━━╇━━━━━━━━━╇━━━━━━━━┩ + │ price │ 60.00% │ 0.6 │ 0 │ 0 │ 2 │ 0.8944 │ 0.6 │ 0.02 │ + │ qty │ 80.00% │ 0.2 │ 0 │ 0 │ 1 │ 0.4472 │ 0.2 │ 0.05 │ + │ status │ 80.00% │ │ │ │ │ │ │ │ + └────────┴────────┴────────┴─────────┴────────┴─────────┴────────┴─────────┴────────┘ diff --git a/tests/summary/fixtures/metrics_long_labels/gen/pretty_False_perfect_False_top_False_slim_True_sample_rows_False_sample_pk_False.txt b/tests/summary/fixtures/metrics_long_labels/gen/pretty_False_perfect_False_top_False_slim_True_sample_rows_False_sample_pk_False.txt index ecf5309..c7048c7 100644 --- a/tests/summary/fixtures/metrics_long_labels/gen/pretty_False_perfect_False_top_False_slim_True_sample_rows_False_sample_pk_False.txt +++ b/tests/summary/fixtures/metrics_long_labels/gen/pretty_False_perfect_False_top_False_slim_True_sample_rows_False_sample_pk_False.txt @@ -8,12 +8,12 @@ Columns ▔▔▔▔▔▔▔ - ┏━━━━━━━━┳━━━━━━━━┳━━━━━━━━┳━━━━━━━━┳━━━━━━━━━┳━━━━━━━━┳━━━━━━━━━┳━━━━━━━━┳━━━━━━━━━┓ - ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ Mean ┃ Mean ┃ - ┃ ┃ Match ┃ Mean ┃ Median ┃ Minimum ┃ Maxim… ┃ Standa… ┃ Absol… ┃ Relati… ┃ - ┃ Column ┃ Rate ┃ Delta ┃ Delta ┃ Delta ┃ Delta ┃ Deviat… ┃ Devia… ┃ Deviat… ┃ - ┡━━━━━━━━╇━━━━━━━━╇━━━━━━━━╇━━━━━━━━╇━━━━━━━━━╇━━━━━━━━╇━━━━━━━━━╇━━━━━━━━╇━━━━━━━━━┩ - │ price │ 60.00% │ 0.6 │ 0 │ 0 │ 2 │ 0.8944 │ 0.6 │ 0.02 │ - │ qty │ 80.00% │ 0.2 │ 0 │ 0 │ 1 │ 0.4472 │ 0.2 │ 0.05 │ - │ status │ 80.00% │ │ │ │ │ │ │ │ - └────────┴────────┴────────┴────────┴─────────┴────────┴─────────┴────────┴─────────┘ + ┏━━━━━━━━┳━━━━━━━━┳━━━━━━━━┳━━━━━━━━━┳━━━━━━━━┳━━━━━━━━━┳━━━━━━━━┳━━━━━━━━━┳━━━━━━━━┓ + ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ Mean ┃ Mean ┃ + ┃ ┃ Match ┃ Mean ┃ Median ┃ Minim… ┃ Maximum ┃ Stand… ┃ Absolu… ┃ Relat… ┃ + ┃ Column ┃ Rate ┃ Diff ┃ Diff ┃ Diff ┃ Diff ┃ Diff ┃ Diff ┃ Diff ┃ + ┡━━━━━━━━╇━━━━━━━━╇━━━━━━━━╇━━━━━━━━━╇━━━━━━━━╇━━━━━━━━━╇━━━━━━━━╇━━━━━━━━━╇━━━━━━━━┩ + │ price │ 60.00% │ 0.6 │ 0 │ 0 │ 2 │ 0.8944 │ 0.6 │ 0.02 │ + │ qty │ 80.00% │ 0.2 │ 0 │ 0 │ 1 │ 0.4472 │ 0.2 │ 0.05 │ + │ status │ 80.00% │ │ │ │ │ │ │ │ + └────────┴────────┴────────┴─────────┴────────┴─────────┴────────┴─────────┴────────┘ diff --git a/tests/summary/fixtures/metrics_long_labels/gen/pretty_False_perfect_False_top_False_slim_True_sample_rows_True_sample_pk_False.txt b/tests/summary/fixtures/metrics_long_labels/gen/pretty_False_perfect_False_top_False_slim_True_sample_rows_True_sample_pk_False.txt index ecf5309..c7048c7 100644 --- a/tests/summary/fixtures/metrics_long_labels/gen/pretty_False_perfect_False_top_False_slim_True_sample_rows_True_sample_pk_False.txt +++ b/tests/summary/fixtures/metrics_long_labels/gen/pretty_False_perfect_False_top_False_slim_True_sample_rows_True_sample_pk_False.txt @@ -8,12 +8,12 @@ Columns ▔▔▔▔▔▔▔ - ┏━━━━━━━━┳━━━━━━━━┳━━━━━━━━┳━━━━━━━━┳━━━━━━━━━┳━━━━━━━━┳━━━━━━━━━┳━━━━━━━━┳━━━━━━━━━┓ - ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ Mean ┃ Mean ┃ - ┃ ┃ Match ┃ Mean ┃ Median ┃ Minimum ┃ Maxim… ┃ Standa… ┃ Absol… ┃ Relati… ┃ - ┃ Column ┃ Rate ┃ Delta ┃ Delta ┃ Delta ┃ Delta ┃ Deviat… ┃ Devia… ┃ Deviat… ┃ - ┡━━━━━━━━╇━━━━━━━━╇━━━━━━━━╇━━━━━━━━╇━━━━━━━━━╇━━━━━━━━╇━━━━━━━━━╇━━━━━━━━╇━━━━━━━━━┩ - │ price │ 60.00% │ 0.6 │ 0 │ 0 │ 2 │ 0.8944 │ 0.6 │ 0.02 │ - │ qty │ 80.00% │ 0.2 │ 0 │ 0 │ 1 │ 0.4472 │ 0.2 │ 0.05 │ - │ status │ 80.00% │ │ │ │ │ │ │ │ - └────────┴────────┴────────┴────────┴─────────┴────────┴─────────┴────────┴─────────┘ + ┏━━━━━━━━┳━━━━━━━━┳━━━━━━━━┳━━━━━━━━━┳━━━━━━━━┳━━━━━━━━━┳━━━━━━━━┳━━━━━━━━━┳━━━━━━━━┓ + ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ Mean ┃ Mean ┃ + ┃ ┃ Match ┃ Mean ┃ Median ┃ Minim… ┃ Maximum ┃ Stand… ┃ Absolu… ┃ Relat… ┃ + ┃ Column ┃ Rate ┃ Diff ┃ Diff ┃ Diff ┃ Diff ┃ Diff ┃ Diff ┃ Diff ┃ + ┡━━━━━━━━╇━━━━━━━━╇━━━━━━━━╇━━━━━━━━━╇━━━━━━━━╇━━━━━━━━━╇━━━━━━━━╇━━━━━━━━━╇━━━━━━━━┩ + │ price │ 60.00% │ 0.6 │ 0 │ 0 │ 2 │ 0.8944 │ 0.6 │ 0.02 │ + │ qty │ 80.00% │ 0.2 │ 0 │ 0 │ 1 │ 0.4472 │ 0.2 │ 0.05 │ + │ status │ 80.00% │ │ │ │ │ │ │ │ + └────────┴────────┴────────┴─────────┴────────┴─────────┴────────┴─────────┴────────┘ diff --git a/tests/summary/fixtures/metrics_long_labels/gen/pretty_False_perfect_False_top_True_slim_False_sample_rows_False_sample_pk_False.txt b/tests/summary/fixtures/metrics_long_labels/gen/pretty_False_perfect_False_top_True_slim_False_sample_rows_False_sample_pk_False.txt index 588b710..63260c4 100644 --- a/tests/summary/fixtures/metrics_long_labels/gen/pretty_False_perfect_False_top_True_slim_False_sample_rows_False_sample_pk_False.txt +++ b/tests/summary/fixtures/metrics_long_labels/gen/pretty_False_perfect_False_top_True_slim_False_sample_rows_False_sample_pk_False.txt @@ -23,7 +23,7 @@ ┏━━━━━━━┳━━━━━━━┳━━━━━━━━┳━━━━━━━┳━━━━━━━━┳━━━━━━━┳━━━━━━━━┳━━━━━━━┳━━━━━━━━┳━━━━━━━┓ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ Mean ┃ Mean ┃ ┃ ┃ Colum ┃ Match ┃ Mean ┃ Medi… ┃ Minim… ┃ Maxi… ┃ Stand… ┃ Abso… ┃ Relat… ┃ Top ┃ - ┃ n ┃ Rate ┃ Delta ┃ Delta ┃ Delta ┃ Delta ┃ Devia… ┃ Devi… ┃ Devia… ┃ Chan… ┃ + ┃ n ┃ Rate ┃ Diff ┃ Diff ┃ Diff ┃ Diff ┃ Diff ┃ Diff ┃ Diff ┃ Chan… ┃ ┡━━━━━━━╇━━━━━━━╇━━━━━━━━╇━━━━━━━╇━━━━━━━━╇━━━━━━━╇━━━━━━━━╇━━━━━━━╇━━━━━━━━╇━━━━━━━┩ │ price │ 60.0… │ 0.6 │ 0 │ 0 │ 2 │ 0.8944 │ 0.6 │ 0.02 │ 40.0 │ │ │ │ │ │ │ │ │ │ │ -> │ diff --git a/tests/summary/fixtures/metrics_long_labels/gen/pretty_False_perfect_False_top_True_slim_False_sample_rows_True_sample_pk_True.txt b/tests/summary/fixtures/metrics_long_labels/gen/pretty_False_perfect_False_top_True_slim_False_sample_rows_True_sample_pk_True.txt index 5e06e38..ed232c2 100644 --- a/tests/summary/fixtures/metrics_long_labels/gen/pretty_False_perfect_False_top_True_slim_False_sample_rows_True_sample_pk_True.txt +++ b/tests/summary/fixtures/metrics_long_labels/gen/pretty_False_perfect_False_top_True_slim_False_sample_rows_True_sample_pk_True.txt @@ -23,7 +23,7 @@ ┏━━━━━━━┳━━━━━━━┳━━━━━━━━┳━━━━━━━┳━━━━━━━━┳━━━━━━━┳━━━━━━━━┳━━━━━━━┳━━━━━━━━┳━━━━━━━┓ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ Mean ┃ Mean ┃ ┃ ┃ Colum ┃ Match ┃ Mean ┃ Medi… ┃ Minim… ┃ Maxi… ┃ Stand… ┃ Abso… ┃ Relat… ┃ Top ┃ - ┃ n ┃ Rate ┃ Delta ┃ Delta ┃ Delta ┃ Delta ┃ Devia… ┃ Devi… ┃ Devia… ┃ Chan… ┃ + ┃ n ┃ Rate ┃ Diff ┃ Diff ┃ Diff ┃ Diff ┃ Diff ┃ Diff ┃ Diff ┃ Chan… ┃ ┡━━━━━━━╇━━━━━━━╇━━━━━━━━╇━━━━━━━╇━━━━━━━━╇━━━━━━━╇━━━━━━━━╇━━━━━━━╇━━━━━━━━╇━━━━━━━┩ │ price │ 60.0… │ 0.6 │ 0 │ 0 │ 2 │ 0.8944 │ 0.6 │ 0.02 │ 40.0 │ │ │ │ │ │ │ │ │ │ │ -> │ diff --git a/tests/summary/fixtures/metrics_long_labels/gen/pretty_False_perfect_False_top_True_slim_True_sample_rows_False_sample_pk_False.txt b/tests/summary/fixtures/metrics_long_labels/gen/pretty_False_perfect_False_top_True_slim_True_sample_rows_False_sample_pk_False.txt index c0d57e5..5ba2bbc 100644 --- a/tests/summary/fixtures/metrics_long_labels/gen/pretty_False_perfect_False_top_True_slim_True_sample_rows_False_sample_pk_False.txt +++ b/tests/summary/fixtures/metrics_long_labels/gen/pretty_False_perfect_False_top_True_slim_True_sample_rows_False_sample_pk_False.txt @@ -11,7 +11,7 @@ ┏━━━━━━━┳━━━━━━━┳━━━━━━━━┳━━━━━━━┳━━━━━━━━┳━━━━━━━┳━━━━━━━━┳━━━━━━━┳━━━━━━━━┳━━━━━━━┓ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ Mean ┃ Mean ┃ ┃ ┃ Colum ┃ Match ┃ Mean ┃ Medi… ┃ Minim… ┃ Maxi… ┃ Stand… ┃ Abso… ┃ Relat… ┃ Top ┃ - ┃ n ┃ Rate ┃ Delta ┃ Delta ┃ Delta ┃ Delta ┃ Devia… ┃ Devi… ┃ Devia… ┃ Chan… ┃ + ┃ n ┃ Rate ┃ Diff ┃ Diff ┃ Diff ┃ Diff ┃ Diff ┃ Diff ┃ Diff ┃ Chan… ┃ ┡━━━━━━━╇━━━━━━━╇━━━━━━━━╇━━━━━━━╇━━━━━━━━╇━━━━━━━╇━━━━━━━━╇━━━━━━━╇━━━━━━━━╇━━━━━━━┩ │ price │ 60.0… │ 0.6 │ 0 │ 0 │ 2 │ 0.8944 │ 0.6 │ 0.02 │ 40.0 │ │ │ │ │ │ │ │ │ │ │ -> │ diff --git a/tests/summary/fixtures/metrics_long_labels/gen/pretty_False_perfect_False_top_True_slim_True_sample_rows_True_sample_pk_True.txt b/tests/summary/fixtures/metrics_long_labels/gen/pretty_False_perfect_False_top_True_slim_True_sample_rows_True_sample_pk_True.txt index 4b4140c..5570ad3 100644 --- a/tests/summary/fixtures/metrics_long_labels/gen/pretty_False_perfect_False_top_True_slim_True_sample_rows_True_sample_pk_True.txt +++ b/tests/summary/fixtures/metrics_long_labels/gen/pretty_False_perfect_False_top_True_slim_True_sample_rows_True_sample_pk_True.txt @@ -11,7 +11,7 @@ ┏━━━━━━━┳━━━━━━━┳━━━━━━━━┳━━━━━━━┳━━━━━━━━┳━━━━━━━┳━━━━━━━━┳━━━━━━━┳━━━━━━━━┳━━━━━━━┓ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ Mean ┃ Mean ┃ ┃ ┃ Colum ┃ Match ┃ Mean ┃ Medi… ┃ Minim… ┃ Maxi… ┃ Stand… ┃ Abso… ┃ Relat… ┃ Top ┃ - ┃ n ┃ Rate ┃ Delta ┃ Delta ┃ Delta ┃ Delta ┃ Devia… ┃ Devi… ┃ Devia… ┃ Chan… ┃ + ┃ n ┃ Rate ┃ Diff ┃ Diff ┃ Diff ┃ Diff ┃ Diff ┃ Diff ┃ Diff ┃ Chan… ┃ ┡━━━━━━━╇━━━━━━━╇━━━━━━━━╇━━━━━━━╇━━━━━━━━╇━━━━━━━╇━━━━━━━━╇━━━━━━━╇━━━━━━━━╇━━━━━━━┩ │ price │ 60.0… │ 0.6 │ 0 │ 0 │ 2 │ 0.8944 │ 0.6 │ 0.02 │ 40.0 │ │ │ │ │ │ │ │ │ │ │ -> │ diff --git a/tests/summary/fixtures/metrics_long_labels/gen/pretty_False_perfect_True_top_False_slim_False_sample_rows_False_sample_pk_False.txt b/tests/summary/fixtures/metrics_long_labels/gen/pretty_False_perfect_True_top_False_slim_False_sample_rows_False_sample_pk_False.txt index 1677141..356dcaf 100644 --- a/tests/summary/fixtures/metrics_long_labels/gen/pretty_False_perfect_True_top_False_slim_False_sample_rows_False_sample_pk_False.txt +++ b/tests/summary/fixtures/metrics_long_labels/gen/pretty_False_perfect_True_top_False_slim_False_sample_rows_False_sample_pk_False.txt @@ -20,12 +20,12 @@ Columns ▔▔▔▔▔▔▔ - ┏━━━━━━━━┳━━━━━━━━┳━━━━━━━━┳━━━━━━━━┳━━━━━━━━━┳━━━━━━━━┳━━━━━━━━━┳━━━━━━━━┳━━━━━━━━━┓ - ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ Mean ┃ Mean ┃ - ┃ ┃ Match ┃ Mean ┃ Median ┃ Minimum ┃ Maxim… ┃ Standa… ┃ Absol… ┃ Relati… ┃ - ┃ Column ┃ Rate ┃ Delta ┃ Delta ┃ Delta ┃ Delta ┃ Deviat… ┃ Devia… ┃ Deviat… ┃ - ┡━━━━━━━━╇━━━━━━━━╇━━━━━━━━╇━━━━━━━━╇━━━━━━━━━╇━━━━━━━━╇━━━━━━━━━╇━━━━━━━━╇━━━━━━━━━┩ - │ price │ 60.00% │ 0.6 │ 0 │ 0 │ 2 │ 0.8944 │ 0.6 │ 0.02 │ - │ qty │ 80.00% │ 0.2 │ 0 │ 0 │ 1 │ 0.4472 │ 0.2 │ 0.05 │ - │ status │ 80.00% │ │ │ │ │ │ │ │ - └────────┴────────┴────────┴────────┴─────────┴────────┴─────────┴────────┴─────────┘ + ┏━━━━━━━━┳━━━━━━━━┳━━━━━━━━┳━━━━━━━━━┳━━━━━━━━┳━━━━━━━━━┳━━━━━━━━┳━━━━━━━━━┳━━━━━━━━┓ + ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ Mean ┃ Mean ┃ + ┃ ┃ Match ┃ Mean ┃ Median ┃ Minim… ┃ Maximum ┃ Stand… ┃ Absolu… ┃ Relat… ┃ + ┃ Column ┃ Rate ┃ Diff ┃ Diff ┃ Diff ┃ Diff ┃ Diff ┃ Diff ┃ Diff ┃ + ┡━━━━━━━━╇━━━━━━━━╇━━━━━━━━╇━━━━━━━━━╇━━━━━━━━╇━━━━━━━━━╇━━━━━━━━╇━━━━━━━━━╇━━━━━━━━┩ + │ price │ 60.00% │ 0.6 │ 0 │ 0 │ 2 │ 0.8944 │ 0.6 │ 0.02 │ + │ qty │ 80.00% │ 0.2 │ 0 │ 0 │ 1 │ 0.4472 │ 0.2 │ 0.05 │ + │ status │ 80.00% │ │ │ │ │ │ │ │ + └────────┴────────┴────────┴─────────┴────────┴─────────┴────────┴─────────┴────────┘ diff --git a/tests/summary/fixtures/metrics_long_labels/gen/pretty_False_perfect_True_top_False_slim_False_sample_rows_True_sample_pk_False.txt b/tests/summary/fixtures/metrics_long_labels/gen/pretty_False_perfect_True_top_False_slim_False_sample_rows_True_sample_pk_False.txt index 1677141..356dcaf 100644 --- a/tests/summary/fixtures/metrics_long_labels/gen/pretty_False_perfect_True_top_False_slim_False_sample_rows_True_sample_pk_False.txt +++ b/tests/summary/fixtures/metrics_long_labels/gen/pretty_False_perfect_True_top_False_slim_False_sample_rows_True_sample_pk_False.txt @@ -20,12 +20,12 @@ Columns ▔▔▔▔▔▔▔ - ┏━━━━━━━━┳━━━━━━━━┳━━━━━━━━┳━━━━━━━━┳━━━━━━━━━┳━━━━━━━━┳━━━━━━━━━┳━━━━━━━━┳━━━━━━━━━┓ - ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ Mean ┃ Mean ┃ - ┃ ┃ Match ┃ Mean ┃ Median ┃ Minimum ┃ Maxim… ┃ Standa… ┃ Absol… ┃ Relati… ┃ - ┃ Column ┃ Rate ┃ Delta ┃ Delta ┃ Delta ┃ Delta ┃ Deviat… ┃ Devia… ┃ Deviat… ┃ - ┡━━━━━━━━╇━━━━━━━━╇━━━━━━━━╇━━━━━━━━╇━━━━━━━━━╇━━━━━━━━╇━━━━━━━━━╇━━━━━━━━╇━━━━━━━━━┩ - │ price │ 60.00% │ 0.6 │ 0 │ 0 │ 2 │ 0.8944 │ 0.6 │ 0.02 │ - │ qty │ 80.00% │ 0.2 │ 0 │ 0 │ 1 │ 0.4472 │ 0.2 │ 0.05 │ - │ status │ 80.00% │ │ │ │ │ │ │ │ - └────────┴────────┴────────┴────────┴─────────┴────────┴─────────┴────────┴─────────┘ + ┏━━━━━━━━┳━━━━━━━━┳━━━━━━━━┳━━━━━━━━━┳━━━━━━━━┳━━━━━━━━━┳━━━━━━━━┳━━━━━━━━━┳━━━━━━━━┓ + ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ Mean ┃ Mean ┃ + ┃ ┃ Match ┃ Mean ┃ Median ┃ Minim… ┃ Maximum ┃ Stand… ┃ Absolu… ┃ Relat… ┃ + ┃ Column ┃ Rate ┃ Diff ┃ Diff ┃ Diff ┃ Diff ┃ Diff ┃ Diff ┃ Diff ┃ + ┡━━━━━━━━╇━━━━━━━━╇━━━━━━━━╇━━━━━━━━━╇━━━━━━━━╇━━━━━━━━━╇━━━━━━━━╇━━━━━━━━━╇━━━━━━━━┩ + │ price │ 60.00% │ 0.6 │ 0 │ 0 │ 2 │ 0.8944 │ 0.6 │ 0.02 │ + │ qty │ 80.00% │ 0.2 │ 0 │ 0 │ 1 │ 0.4472 │ 0.2 │ 0.05 │ + │ status │ 80.00% │ │ │ │ │ │ │ │ + └────────┴────────┴────────┴─────────┴────────┴─────────┴────────┴─────────┴────────┘ diff --git a/tests/summary/fixtures/metrics_long_labels/gen/pretty_False_perfect_True_top_False_slim_True_sample_rows_False_sample_pk_False.txt b/tests/summary/fixtures/metrics_long_labels/gen/pretty_False_perfect_True_top_False_slim_True_sample_rows_False_sample_pk_False.txt index ecf5309..c7048c7 100644 --- a/tests/summary/fixtures/metrics_long_labels/gen/pretty_False_perfect_True_top_False_slim_True_sample_rows_False_sample_pk_False.txt +++ b/tests/summary/fixtures/metrics_long_labels/gen/pretty_False_perfect_True_top_False_slim_True_sample_rows_False_sample_pk_False.txt @@ -8,12 +8,12 @@ Columns ▔▔▔▔▔▔▔ - ┏━━━━━━━━┳━━━━━━━━┳━━━━━━━━┳━━━━━━━━┳━━━━━━━━━┳━━━━━━━━┳━━━━━━━━━┳━━━━━━━━┳━━━━━━━━━┓ - ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ Mean ┃ Mean ┃ - ┃ ┃ Match ┃ Mean ┃ Median ┃ Minimum ┃ Maxim… ┃ Standa… ┃ Absol… ┃ Relati… ┃ - ┃ Column ┃ Rate ┃ Delta ┃ Delta ┃ Delta ┃ Delta ┃ Deviat… ┃ Devia… ┃ Deviat… ┃ - ┡━━━━━━━━╇━━━━━━━━╇━━━━━━━━╇━━━━━━━━╇━━━━━━━━━╇━━━━━━━━╇━━━━━━━━━╇━━━━━━━━╇━━━━━━━━━┩ - │ price │ 60.00% │ 0.6 │ 0 │ 0 │ 2 │ 0.8944 │ 0.6 │ 0.02 │ - │ qty │ 80.00% │ 0.2 │ 0 │ 0 │ 1 │ 0.4472 │ 0.2 │ 0.05 │ - │ status │ 80.00% │ │ │ │ │ │ │ │ - └────────┴────────┴────────┴────────┴─────────┴────────┴─────────┴────────┴─────────┘ + ┏━━━━━━━━┳━━━━━━━━┳━━━━━━━━┳━━━━━━━━━┳━━━━━━━━┳━━━━━━━━━┳━━━━━━━━┳━━━━━━━━━┳━━━━━━━━┓ + ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ Mean ┃ Mean ┃ + ┃ ┃ Match ┃ Mean ┃ Median ┃ Minim… ┃ Maximum ┃ Stand… ┃ Absolu… ┃ Relat… ┃ + ┃ Column ┃ Rate ┃ Diff ┃ Diff ┃ Diff ┃ Diff ┃ Diff ┃ Diff ┃ Diff ┃ + ┡━━━━━━━━╇━━━━━━━━╇━━━━━━━━╇━━━━━━━━━╇━━━━━━━━╇━━━━━━━━━╇━━━━━━━━╇━━━━━━━━━╇━━━━━━━━┩ + │ price │ 60.00% │ 0.6 │ 0 │ 0 │ 2 │ 0.8944 │ 0.6 │ 0.02 │ + │ qty │ 80.00% │ 0.2 │ 0 │ 0 │ 1 │ 0.4472 │ 0.2 │ 0.05 │ + │ status │ 80.00% │ │ │ │ │ │ │ │ + └────────┴────────┴────────┴─────────┴────────┴─────────┴────────┴─────────┴────────┘ diff --git a/tests/summary/fixtures/metrics_long_labels/gen/pretty_False_perfect_True_top_False_slim_True_sample_rows_True_sample_pk_False.txt b/tests/summary/fixtures/metrics_long_labels/gen/pretty_False_perfect_True_top_False_slim_True_sample_rows_True_sample_pk_False.txt index ecf5309..c7048c7 100644 --- a/tests/summary/fixtures/metrics_long_labels/gen/pretty_False_perfect_True_top_False_slim_True_sample_rows_True_sample_pk_False.txt +++ b/tests/summary/fixtures/metrics_long_labels/gen/pretty_False_perfect_True_top_False_slim_True_sample_rows_True_sample_pk_False.txt @@ -8,12 +8,12 @@ Columns ▔▔▔▔▔▔▔ - ┏━━━━━━━━┳━━━━━━━━┳━━━━━━━━┳━━━━━━━━┳━━━━━━━━━┳━━━━━━━━┳━━━━━━━━━┳━━━━━━━━┳━━━━━━━━━┓ - ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ Mean ┃ Mean ┃ - ┃ ┃ Match ┃ Mean ┃ Median ┃ Minimum ┃ Maxim… ┃ Standa… ┃ Absol… ┃ Relati… ┃ - ┃ Column ┃ Rate ┃ Delta ┃ Delta ┃ Delta ┃ Delta ┃ Deviat… ┃ Devia… ┃ Deviat… ┃ - ┡━━━━━━━━╇━━━━━━━━╇━━━━━━━━╇━━━━━━━━╇━━━━━━━━━╇━━━━━━━━╇━━━━━━━━━╇━━━━━━━━╇━━━━━━━━━┩ - │ price │ 60.00% │ 0.6 │ 0 │ 0 │ 2 │ 0.8944 │ 0.6 │ 0.02 │ - │ qty │ 80.00% │ 0.2 │ 0 │ 0 │ 1 │ 0.4472 │ 0.2 │ 0.05 │ - │ status │ 80.00% │ │ │ │ │ │ │ │ - └────────┴────────┴────────┴────────┴─────────┴────────┴─────────┴────────┴─────────┘ + ┏━━━━━━━━┳━━━━━━━━┳━━━━━━━━┳━━━━━━━━━┳━━━━━━━━┳━━━━━━━━━┳━━━━━━━━┳━━━━━━━━━┳━━━━━━━━┓ + ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ Mean ┃ Mean ┃ + ┃ ┃ Match ┃ Mean ┃ Median ┃ Minim… ┃ Maximum ┃ Stand… ┃ Absolu… ┃ Relat… ┃ + ┃ Column ┃ Rate ┃ Diff ┃ Diff ┃ Diff ┃ Diff ┃ Diff ┃ Diff ┃ Diff ┃ + ┡━━━━━━━━╇━━━━━━━━╇━━━━━━━━╇━━━━━━━━━╇━━━━━━━━╇━━━━━━━━━╇━━━━━━━━╇━━━━━━━━━╇━━━━━━━━┩ + │ price │ 60.00% │ 0.6 │ 0 │ 0 │ 2 │ 0.8944 │ 0.6 │ 0.02 │ + │ qty │ 80.00% │ 0.2 │ 0 │ 0 │ 1 │ 0.4472 │ 0.2 │ 0.05 │ + │ status │ 80.00% │ │ │ │ │ │ │ │ + └────────┴────────┴────────┴─────────┴────────┴─────────┴────────┴─────────┴────────┘ diff --git a/tests/summary/fixtures/metrics_long_labels/gen/pretty_False_perfect_True_top_True_slim_False_sample_rows_False_sample_pk_False.txt b/tests/summary/fixtures/metrics_long_labels/gen/pretty_False_perfect_True_top_True_slim_False_sample_rows_False_sample_pk_False.txt index 588b710..63260c4 100644 --- a/tests/summary/fixtures/metrics_long_labels/gen/pretty_False_perfect_True_top_True_slim_False_sample_rows_False_sample_pk_False.txt +++ b/tests/summary/fixtures/metrics_long_labels/gen/pretty_False_perfect_True_top_True_slim_False_sample_rows_False_sample_pk_False.txt @@ -23,7 +23,7 @@ ┏━━━━━━━┳━━━━━━━┳━━━━━━━━┳━━━━━━━┳━━━━━━━━┳━━━━━━━┳━━━━━━━━┳━━━━━━━┳━━━━━━━━┳━━━━━━━┓ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ Mean ┃ Mean ┃ ┃ ┃ Colum ┃ Match ┃ Mean ┃ Medi… ┃ Minim… ┃ Maxi… ┃ Stand… ┃ Abso… ┃ Relat… ┃ Top ┃ - ┃ n ┃ Rate ┃ Delta ┃ Delta ┃ Delta ┃ Delta ┃ Devia… ┃ Devi… ┃ Devia… ┃ Chan… ┃ + ┃ n ┃ Rate ┃ Diff ┃ Diff ┃ Diff ┃ Diff ┃ Diff ┃ Diff ┃ Diff ┃ Chan… ┃ ┡━━━━━━━╇━━━━━━━╇━━━━━━━━╇━━━━━━━╇━━━━━━━━╇━━━━━━━╇━━━━━━━━╇━━━━━━━╇━━━━━━━━╇━━━━━━━┩ │ price │ 60.0… │ 0.6 │ 0 │ 0 │ 2 │ 0.8944 │ 0.6 │ 0.02 │ 40.0 │ │ │ │ │ │ │ │ │ │ │ -> │ diff --git a/tests/summary/fixtures/metrics_long_labels/gen/pretty_False_perfect_True_top_True_slim_False_sample_rows_True_sample_pk_True.txt b/tests/summary/fixtures/metrics_long_labels/gen/pretty_False_perfect_True_top_True_slim_False_sample_rows_True_sample_pk_True.txt index 5e06e38..ed232c2 100644 --- a/tests/summary/fixtures/metrics_long_labels/gen/pretty_False_perfect_True_top_True_slim_False_sample_rows_True_sample_pk_True.txt +++ b/tests/summary/fixtures/metrics_long_labels/gen/pretty_False_perfect_True_top_True_slim_False_sample_rows_True_sample_pk_True.txt @@ -23,7 +23,7 @@ ┏━━━━━━━┳━━━━━━━┳━━━━━━━━┳━━━━━━━┳━━━━━━━━┳━━━━━━━┳━━━━━━━━┳━━━━━━━┳━━━━━━━━┳━━━━━━━┓ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ Mean ┃ Mean ┃ ┃ ┃ Colum ┃ Match ┃ Mean ┃ Medi… ┃ Minim… ┃ Maxi… ┃ Stand… ┃ Abso… ┃ Relat… ┃ Top ┃ - ┃ n ┃ Rate ┃ Delta ┃ Delta ┃ Delta ┃ Delta ┃ Devia… ┃ Devi… ┃ Devia… ┃ Chan… ┃ + ┃ n ┃ Rate ┃ Diff ┃ Diff ┃ Diff ┃ Diff ┃ Diff ┃ Diff ┃ Diff ┃ Chan… ┃ ┡━━━━━━━╇━━━━━━━╇━━━━━━━━╇━━━━━━━╇━━━━━━━━╇━━━━━━━╇━━━━━━━━╇━━━━━━━╇━━━━━━━━╇━━━━━━━┩ │ price │ 60.0… │ 0.6 │ 0 │ 0 │ 2 │ 0.8944 │ 0.6 │ 0.02 │ 40.0 │ │ │ │ │ │ │ │ │ │ │ -> │ diff --git a/tests/summary/fixtures/metrics_long_labels/gen/pretty_False_perfect_True_top_True_slim_True_sample_rows_False_sample_pk_False.txt b/tests/summary/fixtures/metrics_long_labels/gen/pretty_False_perfect_True_top_True_slim_True_sample_rows_False_sample_pk_False.txt index c0d57e5..5ba2bbc 100644 --- a/tests/summary/fixtures/metrics_long_labels/gen/pretty_False_perfect_True_top_True_slim_True_sample_rows_False_sample_pk_False.txt +++ b/tests/summary/fixtures/metrics_long_labels/gen/pretty_False_perfect_True_top_True_slim_True_sample_rows_False_sample_pk_False.txt @@ -11,7 +11,7 @@ ┏━━━━━━━┳━━━━━━━┳━━━━━━━━┳━━━━━━━┳━━━━━━━━┳━━━━━━━┳━━━━━━━━┳━━━━━━━┳━━━━━━━━┳━━━━━━━┓ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ Mean ┃ Mean ┃ ┃ ┃ Colum ┃ Match ┃ Mean ┃ Medi… ┃ Minim… ┃ Maxi… ┃ Stand… ┃ Abso… ┃ Relat… ┃ Top ┃ - ┃ n ┃ Rate ┃ Delta ┃ Delta ┃ Delta ┃ Delta ┃ Devia… ┃ Devi… ┃ Devia… ┃ Chan… ┃ + ┃ n ┃ Rate ┃ Diff ┃ Diff ┃ Diff ┃ Diff ┃ Diff ┃ Diff ┃ Diff ┃ Chan… ┃ ┡━━━━━━━╇━━━━━━━╇━━━━━━━━╇━━━━━━━╇━━━━━━━━╇━━━━━━━╇━━━━━━━━╇━━━━━━━╇━━━━━━━━╇━━━━━━━┩ │ price │ 60.0… │ 0.6 │ 0 │ 0 │ 2 │ 0.8944 │ 0.6 │ 0.02 │ 40.0 │ │ │ │ │ │ │ │ │ │ │ -> │ diff --git a/tests/summary/fixtures/metrics_long_labels/gen/pretty_False_perfect_True_top_True_slim_True_sample_rows_True_sample_pk_True.txt b/tests/summary/fixtures/metrics_long_labels/gen/pretty_False_perfect_True_top_True_slim_True_sample_rows_True_sample_pk_True.txt index 4b4140c..5570ad3 100644 --- a/tests/summary/fixtures/metrics_long_labels/gen/pretty_False_perfect_True_top_True_slim_True_sample_rows_True_sample_pk_True.txt +++ b/tests/summary/fixtures/metrics_long_labels/gen/pretty_False_perfect_True_top_True_slim_True_sample_rows_True_sample_pk_True.txt @@ -11,7 +11,7 @@ ┏━━━━━━━┳━━━━━━━┳━━━━━━━━┳━━━━━━━┳━━━━━━━━┳━━━━━━━┳━━━━━━━━┳━━━━━━━┳━━━━━━━━┳━━━━━━━┓ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ Mean ┃ Mean ┃ ┃ ┃ Colum ┃ Match ┃ Mean ┃ Medi… ┃ Minim… ┃ Maxi… ┃ Stand… ┃ Abso… ┃ Relat… ┃ Top ┃ - ┃ n ┃ Rate ┃ Delta ┃ Delta ┃ Delta ┃ Delta ┃ Devia… ┃ Devi… ┃ Devia… ┃ Chan… ┃ + ┃ n ┃ Rate ┃ Diff ┃ Diff ┃ Diff ┃ Diff ┃ Diff ┃ Diff ┃ Diff ┃ Chan… ┃ ┡━━━━━━━╇━━━━━━━╇━━━━━━━━╇━━━━━━━╇━━━━━━━━╇━━━━━━━╇━━━━━━━━╇━━━━━━━╇━━━━━━━━╇━━━━━━━┩ │ price │ 60.0… │ 0.6 │ 0 │ 0 │ 2 │ 0.8944 │ 0.6 │ 0.02 │ 40.0 │ │ │ │ │ │ │ │ │ │ │ -> │ diff --git a/tests/summary/fixtures/metrics_long_labels/gen/pretty_True_perfect_False_top_False_slim_False_sample_rows_False_sample_pk_False.txt b/tests/summary/fixtures/metrics_long_labels/gen/pretty_True_perfect_False_top_False_slim_False_sample_rows_False_sample_pk_False.txt index 0bf5291..12ca0fa 100644 --- a/tests/summary/fixtures/metrics_long_labels/gen/pretty_True_perfect_False_top_False_slim_False_sample_rows_False_sample_pk_False.txt +++ b/tests/summary/fixtures/metrics_long_labels/gen/pretty_True_perfect_False_top_False_slim_False_sample_rows_False_sample_pk_False.txt @@ -20,12 +20,12 @@ Columns ▔▔▔▔▔▔▔ - ┏━━━━━━━━┳━━━━━━━━┳━━━━━━━━┳━━━━━━━━┳━━━━━━━━━┳━━━━━━━━┳━━━━━━━━━┳━━━━━━━━┳━━━━━━━━━┓ - ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃  Mean ┃  Mean ┃ - ┃ ┃  Match ┃  Mean ┃ Median ┃ Minimum ┃ Maxim… ┃ Standa… ┃ Absol… ┃ Relati… ┃ - ┃ Column ┃  Rate ┃  Delta ┃  Delta ┃  Delta ┃  Delta ┃ Deviat… ┃ Devia… ┃ Deviat… ┃ - ┡━━━━━━━━╇━━━━━━━━╇━━━━━━━━╇━━━━━━━━╇━━━━━━━━━╇━━━━━━━━╇━━━━━━━━━╇━━━━━━━━╇━━━━━━━━━┩ - │ price  │ 60.00% │ 0.6 │ 0 │ 0 │ 2 │ 0.8944 │ 0.6 │ 0.02 │ - │ qty  │ 80.00% │ 0.2 │ 0 │ 0 │ 1 │ 0.4472 │ 0.2 │ 0.05 │ - │ status │ 80.00% │ │ │ │ │ │ │ │ - └────────┴────────┴────────┴────────┴─────────┴────────┴─────────┴────────┴─────────┘ + ┏━━━━━━━━┳━━━━━━━━┳━━━━━━━━┳━━━━━━━━━┳━━━━━━━━┳━━━━━━━━━┳━━━━━━━━┳━━━━━━━━━┳━━━━━━━━┓ + ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃  Mean ┃  Mean ┃ + ┃ ┃  Match ┃  Mean ┃  Median ┃ Minim… ┃ Maximum ┃ Stand… ┃ Absolu… ┃ Relat… ┃ + ┃ Column ┃  Rate ┃  Diff ┃  Diff ┃  Diff ┃  Diff ┃  Diff ┃  Diff ┃  Diff ┃ + ┡━━━━━━━━╇━━━━━━━━╇━━━━━━━━╇━━━━━━━━━╇━━━━━━━━╇━━━━━━━━━╇━━━━━━━━╇━━━━━━━━━╇━━━━━━━━┩ + │ price  │ 60.00% │ 0.6 │ 0 │ 0 │ 2 │ 0.8944 │ 0.6 │ 0.02 │ + │ qty  │ 80.00% │ 0.2 │ 0 │ 0 │ 1 │ 0.4472 │ 0.2 │ 0.05 │ + │ status │ 80.00% │ │ │ │ │ │ │ │ + └────────┴────────┴────────┴─────────┴────────┴─────────┴────────┴─────────┴────────┘ diff --git a/tests/summary/fixtures/metrics_long_labels/gen/pretty_True_perfect_False_top_False_slim_False_sample_rows_True_sample_pk_False.txt b/tests/summary/fixtures/metrics_long_labels/gen/pretty_True_perfect_False_top_False_slim_False_sample_rows_True_sample_pk_False.txt index 0bf5291..12ca0fa 100644 --- a/tests/summary/fixtures/metrics_long_labels/gen/pretty_True_perfect_False_top_False_slim_False_sample_rows_True_sample_pk_False.txt +++ b/tests/summary/fixtures/metrics_long_labels/gen/pretty_True_perfect_False_top_False_slim_False_sample_rows_True_sample_pk_False.txt @@ -20,12 +20,12 @@ Columns ▔▔▔▔▔▔▔ - ┏━━━━━━━━┳━━━━━━━━┳━━━━━━━━┳━━━━━━━━┳━━━━━━━━━┳━━━━━━━━┳━━━━━━━━━┳━━━━━━━━┳━━━━━━━━━┓ - ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃  Mean ┃  Mean ┃ - ┃ ┃  Match ┃  Mean ┃ Median ┃ Minimum ┃ Maxim… ┃ Standa… ┃ Absol… ┃ Relati… ┃ - ┃ Column ┃  Rate ┃  Delta ┃  Delta ┃  Delta ┃  Delta ┃ Deviat… ┃ Devia… ┃ Deviat… ┃ - ┡━━━━━━━━╇━━━━━━━━╇━━━━━━━━╇━━━━━━━━╇━━━━━━━━━╇━━━━━━━━╇━━━━━━━━━╇━━━━━━━━╇━━━━━━━━━┩ - │ price  │ 60.00% │ 0.6 │ 0 │ 0 │ 2 │ 0.8944 │ 0.6 │ 0.02 │ - │ qty  │ 80.00% │ 0.2 │ 0 │ 0 │ 1 │ 0.4472 │ 0.2 │ 0.05 │ - │ status │ 80.00% │ │ │ │ │ │ │ │ - └────────┴────────┴────────┴────────┴─────────┴────────┴─────────┴────────┴─────────┘ + ┏━━━━━━━━┳━━━━━━━━┳━━━━━━━━┳━━━━━━━━━┳━━━━━━━━┳━━━━━━━━━┳━━━━━━━━┳━━━━━━━━━┳━━━━━━━━┓ + ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃  Mean ┃  Mean ┃ + ┃ ┃  Match ┃  Mean ┃  Median ┃ Minim… ┃ Maximum ┃ Stand… ┃ Absolu… ┃ Relat… ┃ + ┃ Column ┃  Rate ┃  Diff ┃  Diff ┃  Diff ┃  Diff ┃  Diff ┃  Diff ┃  Diff ┃ + ┡━━━━━━━━╇━━━━━━━━╇━━━━━━━━╇━━━━━━━━━╇━━━━━━━━╇━━━━━━━━━╇━━━━━━━━╇━━━━━━━━━╇━━━━━━━━┩ + │ price  │ 60.00% │ 0.6 │ 0 │ 0 │ 2 │ 0.8944 │ 0.6 │ 0.02 │ + │ qty  │ 80.00% │ 0.2 │ 0 │ 0 │ 1 │ 0.4472 │ 0.2 │ 0.05 │ + │ status │ 80.00% │ │ │ │ │ │ │ │ + └────────┴────────┴────────┴─────────┴────────┴─────────┴────────┴─────────┴────────┘ diff --git a/tests/summary/fixtures/metrics_long_labels/gen/pretty_True_perfect_False_top_False_slim_True_sample_rows_False_sample_pk_False.txt b/tests/summary/fixtures/metrics_long_labels/gen/pretty_True_perfect_False_top_False_slim_True_sample_rows_False_sample_pk_False.txt index 3e5b24e..845e9c4 100644 --- a/tests/summary/fixtures/metrics_long_labels/gen/pretty_True_perfect_False_top_False_slim_True_sample_rows_False_sample_pk_False.txt +++ b/tests/summary/fixtures/metrics_long_labels/gen/pretty_True_perfect_False_top_False_slim_True_sample_rows_False_sample_pk_False.txt @@ -8,12 +8,12 @@ Columns ▔▔▔▔▔▔▔ - ┏━━━━━━━━┳━━━━━━━━┳━━━━━━━━┳━━━━━━━━┳━━━━━━━━━┳━━━━━━━━┳━━━━━━━━━┳━━━━━━━━┳━━━━━━━━━┓ - ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃  Mean ┃  Mean ┃ - ┃ ┃  Match ┃  Mean ┃ Median ┃ Minimum ┃ Maxim… ┃ Standa… ┃ Absol… ┃ Relati… ┃ - ┃ Column ┃  Rate ┃  Delta ┃  Delta ┃  Delta ┃  Delta ┃ Deviat… ┃ Devia… ┃ Deviat… ┃ - ┡━━━━━━━━╇━━━━━━━━╇━━━━━━━━╇━━━━━━━━╇━━━━━━━━━╇━━━━━━━━╇━━━━━━━━━╇━━━━━━━━╇━━━━━━━━━┩ - │ price  │ 60.00% │ 0.6 │ 0 │ 0 │ 2 │ 0.8944 │ 0.6 │ 0.02 │ - │ qty  │ 80.00% │ 0.2 │ 0 │ 0 │ 1 │ 0.4472 │ 0.2 │ 0.05 │ - │ status │ 80.00% │ │ │ │ │ │ │ │ - └────────┴────────┴────────┴────────┴─────────┴────────┴─────────┴────────┴─────────┘ + ┏━━━━━━━━┳━━━━━━━━┳━━━━━━━━┳━━━━━━━━━┳━━━━━━━━┳━━━━━━━━━┳━━━━━━━━┳━━━━━━━━━┳━━━━━━━━┓ + ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃  Mean ┃  Mean ┃ + ┃ ┃  Match ┃  Mean ┃  Median ┃ Minim… ┃ Maximum ┃ Stand… ┃ Absolu… ┃ Relat… ┃ + ┃ Column ┃  Rate ┃  Diff ┃  Diff ┃  Diff ┃  Diff ┃  Diff ┃  Diff ┃  Diff ┃ + ┡━━━━━━━━╇━━━━━━━━╇━━━━━━━━╇━━━━━━━━━╇━━━━━━━━╇━━━━━━━━━╇━━━━━━━━╇━━━━━━━━━╇━━━━━━━━┩ + │ price  │ 60.00% │ 0.6 │ 0 │ 0 │ 2 │ 0.8944 │ 0.6 │ 0.02 │ + │ qty  │ 80.00% │ 0.2 │ 0 │ 0 │ 1 │ 0.4472 │ 0.2 │ 0.05 │ + │ status │ 80.00% │ │ │ │ │ │ │ │ + └────────┴────────┴────────┴─────────┴────────┴─────────┴────────┴─────────┴────────┘ diff --git a/tests/summary/fixtures/metrics_long_labels/gen/pretty_True_perfect_False_top_False_slim_True_sample_rows_True_sample_pk_False.txt b/tests/summary/fixtures/metrics_long_labels/gen/pretty_True_perfect_False_top_False_slim_True_sample_rows_True_sample_pk_False.txt index 3e5b24e..845e9c4 100644 --- a/tests/summary/fixtures/metrics_long_labels/gen/pretty_True_perfect_False_top_False_slim_True_sample_rows_True_sample_pk_False.txt +++ b/tests/summary/fixtures/metrics_long_labels/gen/pretty_True_perfect_False_top_False_slim_True_sample_rows_True_sample_pk_False.txt @@ -8,12 +8,12 @@ Columns ▔▔▔▔▔▔▔ - ┏━━━━━━━━┳━━━━━━━━┳━━━━━━━━┳━━━━━━━━┳━━━━━━━━━┳━━━━━━━━┳━━━━━━━━━┳━━━━━━━━┳━━━━━━━━━┓ - ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃  Mean ┃  Mean ┃ - ┃ ┃  Match ┃  Mean ┃ Median ┃ Minimum ┃ Maxim… ┃ Standa… ┃ Absol… ┃ Relati… ┃ - ┃ Column ┃  Rate ┃  Delta ┃  Delta ┃  Delta ┃  Delta ┃ Deviat… ┃ Devia… ┃ Deviat… ┃ - ┡━━━━━━━━╇━━━━━━━━╇━━━━━━━━╇━━━━━━━━╇━━━━━━━━━╇━━━━━━━━╇━━━━━━━━━╇━━━━━━━━╇━━━━━━━━━┩ - │ price  │ 60.00% │ 0.6 │ 0 │ 0 │ 2 │ 0.8944 │ 0.6 │ 0.02 │ - │ qty  │ 80.00% │ 0.2 │ 0 │ 0 │ 1 │ 0.4472 │ 0.2 │ 0.05 │ - │ status │ 80.00% │ │ │ │ │ │ │ │ - └────────┴────────┴────────┴────────┴─────────┴────────┴─────────┴────────┴─────────┘ + ┏━━━━━━━━┳━━━━━━━━┳━━━━━━━━┳━━━━━━━━━┳━━━━━━━━┳━━━━━━━━━┳━━━━━━━━┳━━━━━━━━━┳━━━━━━━━┓ + ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃  Mean ┃  Mean ┃ + ┃ ┃  Match ┃  Mean ┃  Median ┃ Minim… ┃ Maximum ┃ Stand… ┃ Absolu… ┃ Relat… ┃ + ┃ Column ┃  Rate ┃  Diff ┃  Diff ┃  Diff ┃  Diff ┃  Diff ┃  Diff ┃  Diff ┃ + ┡━━━━━━━━╇━━━━━━━━╇━━━━━━━━╇━━━━━━━━━╇━━━━━━━━╇━━━━━━━━━╇━━━━━━━━╇━━━━━━━━━╇━━━━━━━━┩ + │ price  │ 60.00% │ 0.6 │ 0 │ 0 │ 2 │ 0.8944 │ 0.6 │ 0.02 │ + │ qty  │ 80.00% │ 0.2 │ 0 │ 0 │ 1 │ 0.4472 │ 0.2 │ 0.05 │ + │ status │ 80.00% │ │ │ │ │ │ │ │ + └────────┴────────┴────────┴─────────┴────────┴─────────┴────────┴─────────┴────────┘ diff --git a/tests/summary/fixtures/metrics_long_labels/gen/pretty_True_perfect_False_top_True_slim_False_sample_rows_False_sample_pk_False.txt b/tests/summary/fixtures/metrics_long_labels/gen/pretty_True_perfect_False_top_True_slim_False_sample_rows_False_sample_pk_False.txt index e51a097..177f97b 100644 --- a/tests/summary/fixtures/metrics_long_labels/gen/pretty_True_perfect_False_top_True_slim_False_sample_rows_False_sample_pk_False.txt +++ b/tests/summary/fixtures/metrics_long_labels/gen/pretty_True_perfect_False_top_True_slim_False_sample_rows_False_sample_pk_False.txt @@ -23,7 +23,7 @@ ┏━━━━━━━┳━━━━━━━┳━━━━━━━━┳━━━━━━━┳━━━━━━━━┳━━━━━━━┳━━━━━━━━┳━━━━━━━┳━━━━━━━━┳━━━━━━━┓ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃  Mean ┃  Mean ┃ ┃ ┃ Colum ┃ Match ┃  Mean ┃ Medi… ┃ Minim… ┃ Maxi… ┃ Stand… ┃ Abso… ┃ Relat… ┃  Top ┃ - ┃ n  ┃  Rate ┃  Delta ┃ Delta ┃  Delta ┃ Delta ┃ Devia… ┃ Devi… ┃ Devia… ┃ Chan… ┃ + ┃ n  ┃  Rate ┃  Diff ┃  Diff ┃  Diff ┃  Diff ┃  Diff ┃  Diff ┃  Diff ┃ Chan… ┃ ┡━━━━━━━╇━━━━━━━╇━━━━━━━━╇━━━━━━━╇━━━━━━━━╇━━━━━━━╇━━━━━━━━╇━━━━━━━╇━━━━━━━━╇━━━━━━━┩ │ price │ 60.0… │ 0.6 │ 0 │ 0 │ 2 │ 0.8944 │ 0.6 │ 0.02 │ 40.0 │ │ │ │ │ │ │ │ │ │ │ -> │ diff --git a/tests/summary/fixtures/metrics_long_labels/gen/pretty_True_perfect_False_top_True_slim_False_sample_rows_True_sample_pk_True.txt b/tests/summary/fixtures/metrics_long_labels/gen/pretty_True_perfect_False_top_True_slim_False_sample_rows_True_sample_pk_True.txt index 6b0fcb3..0c684c1 100644 --- a/tests/summary/fixtures/metrics_long_labels/gen/pretty_True_perfect_False_top_True_slim_False_sample_rows_True_sample_pk_True.txt +++ b/tests/summary/fixtures/metrics_long_labels/gen/pretty_True_perfect_False_top_True_slim_False_sample_rows_True_sample_pk_True.txt @@ -23,7 +23,7 @@ ┏━━━━━━━┳━━━━━━━┳━━━━━━━━┳━━━━━━━┳━━━━━━━━┳━━━━━━━┳━━━━━━━━┳━━━━━━━┳━━━━━━━━┳━━━━━━━┓ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃  Mean ┃  Mean ┃ ┃ ┃ Colum ┃ Match ┃  Mean ┃ Medi… ┃ Minim… ┃ Maxi… ┃ Stand… ┃ Abso… ┃ Relat… ┃  Top ┃ - ┃ n  ┃  Rate ┃  Delta ┃ Delta ┃  Delta ┃ Delta ┃ Devia… ┃ Devi… ┃ Devia… ┃ Chan… ┃ + ┃ n  ┃  Rate ┃  Diff ┃  Diff ┃  Diff ┃  Diff ┃  Diff ┃  Diff ┃  Diff ┃ Chan… ┃ ┡━━━━━━━╇━━━━━━━╇━━━━━━━━╇━━━━━━━╇━━━━━━━━╇━━━━━━━╇━━━━━━━━╇━━━━━━━╇━━━━━━━━╇━━━━━━━┩ │ price │ 60.0… │ 0.6 │ 0 │ 0 │ 2 │ 0.8944 │ 0.6 │ 0.02 │ 40.0 │ │ │ │ │ │ │ │ │ │ │ -> │ diff --git a/tests/summary/fixtures/metrics_long_labels/gen/pretty_True_perfect_False_top_True_slim_True_sample_rows_False_sample_pk_False.txt b/tests/summary/fixtures/metrics_long_labels/gen/pretty_True_perfect_False_top_True_slim_True_sample_rows_False_sample_pk_False.txt index 48b4417..435c332 100644 --- a/tests/summary/fixtures/metrics_long_labels/gen/pretty_True_perfect_False_top_True_slim_True_sample_rows_False_sample_pk_False.txt +++ b/tests/summary/fixtures/metrics_long_labels/gen/pretty_True_perfect_False_top_True_slim_True_sample_rows_False_sample_pk_False.txt @@ -11,7 +11,7 @@ ┏━━━━━━━┳━━━━━━━┳━━━━━━━━┳━━━━━━━┳━━━━━━━━┳━━━━━━━┳━━━━━━━━┳━━━━━━━┳━━━━━━━━┳━━━━━━━┓ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃  Mean ┃  Mean ┃ ┃ ┃ Colum ┃ Match ┃  Mean ┃ Medi… ┃ Minim… ┃ Maxi… ┃ Stand… ┃ Abso… ┃ Relat… ┃  Top ┃ - ┃ n  ┃  Rate ┃  Delta ┃ Delta ┃  Delta ┃ Delta ┃ Devia… ┃ Devi… ┃ Devia… ┃ Chan… ┃ + ┃ n  ┃  Rate ┃  Diff ┃  Diff ┃  Diff ┃  Diff ┃  Diff ┃  Diff ┃  Diff ┃ Chan… ┃ ┡━━━━━━━╇━━━━━━━╇━━━━━━━━╇━━━━━━━╇━━━━━━━━╇━━━━━━━╇━━━━━━━━╇━━━━━━━╇━━━━━━━━╇━━━━━━━┩ │ price │ 60.0… │ 0.6 │ 0 │ 0 │ 2 │ 0.8944 │ 0.6 │ 0.02 │ 40.0 │ │ │ │ │ │ │ │ │ │ │ -> │ diff --git a/tests/summary/fixtures/metrics_long_labels/gen/pretty_True_perfect_False_top_True_slim_True_sample_rows_True_sample_pk_True.txt b/tests/summary/fixtures/metrics_long_labels/gen/pretty_True_perfect_False_top_True_slim_True_sample_rows_True_sample_pk_True.txt index c77a139..57f81d0 100644 --- a/tests/summary/fixtures/metrics_long_labels/gen/pretty_True_perfect_False_top_True_slim_True_sample_rows_True_sample_pk_True.txt +++ b/tests/summary/fixtures/metrics_long_labels/gen/pretty_True_perfect_False_top_True_slim_True_sample_rows_True_sample_pk_True.txt @@ -11,7 +11,7 @@ ┏━━━━━━━┳━━━━━━━┳━━━━━━━━┳━━━━━━━┳━━━━━━━━┳━━━━━━━┳━━━━━━━━┳━━━━━━━┳━━━━━━━━┳━━━━━━━┓ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃  Mean ┃  Mean ┃ ┃ ┃ Colum ┃ Match ┃  Mean ┃ Medi… ┃ Minim… ┃ Maxi… ┃ Stand… ┃ Abso… ┃ Relat… ┃  Top ┃ - ┃ n  ┃  Rate ┃  Delta ┃ Delta ┃  Delta ┃ Delta ┃ Devia… ┃ Devi… ┃ Devia… ┃ Chan… ┃ + ┃ n  ┃  Rate ┃  Diff ┃  Diff ┃  Diff ┃  Diff ┃  Diff ┃  Diff ┃  Diff ┃ Chan… ┃ ┡━━━━━━━╇━━━━━━━╇━━━━━━━━╇━━━━━━━╇━━━━━━━━╇━━━━━━━╇━━━━━━━━╇━━━━━━━╇━━━━━━━━╇━━━━━━━┩ │ price │ 60.0… │ 0.6 │ 0 │ 0 │ 2 │ 0.8944 │ 0.6 │ 0.02 │ 40.0 │ │ │ │ │ │ │ │ │ │ │ -> │ diff --git a/tests/summary/fixtures/metrics_long_labels/gen/pretty_True_perfect_True_top_False_slim_False_sample_rows_False_sample_pk_False.txt b/tests/summary/fixtures/metrics_long_labels/gen/pretty_True_perfect_True_top_False_slim_False_sample_rows_False_sample_pk_False.txt index 0bf5291..12ca0fa 100644 --- a/tests/summary/fixtures/metrics_long_labels/gen/pretty_True_perfect_True_top_False_slim_False_sample_rows_False_sample_pk_False.txt +++ b/tests/summary/fixtures/metrics_long_labels/gen/pretty_True_perfect_True_top_False_slim_False_sample_rows_False_sample_pk_False.txt @@ -20,12 +20,12 @@ Columns ▔▔▔▔▔▔▔ - ┏━━━━━━━━┳━━━━━━━━┳━━━━━━━━┳━━━━━━━━┳━━━━━━━━━┳━━━━━━━━┳━━━━━━━━━┳━━━━━━━━┳━━━━━━━━━┓ - ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃  Mean ┃  Mean ┃ - ┃ ┃  Match ┃  Mean ┃ Median ┃ Minimum ┃ Maxim… ┃ Standa… ┃ Absol… ┃ Relati… ┃ - ┃ Column ┃  Rate ┃  Delta ┃  Delta ┃  Delta ┃  Delta ┃ Deviat… ┃ Devia… ┃ Deviat… ┃ - ┡━━━━━━━━╇━━━━━━━━╇━━━━━━━━╇━━━━━━━━╇━━━━━━━━━╇━━━━━━━━╇━━━━━━━━━╇━━━━━━━━╇━━━━━━━━━┩ - │ price  │ 60.00% │ 0.6 │ 0 │ 0 │ 2 │ 0.8944 │ 0.6 │ 0.02 │ - │ qty  │ 80.00% │ 0.2 │ 0 │ 0 │ 1 │ 0.4472 │ 0.2 │ 0.05 │ - │ status │ 80.00% │ │ │ │ │ │ │ │ - └────────┴────────┴────────┴────────┴─────────┴────────┴─────────┴────────┴─────────┘ + ┏━━━━━━━━┳━━━━━━━━┳━━━━━━━━┳━━━━━━━━━┳━━━━━━━━┳━━━━━━━━━┳━━━━━━━━┳━━━━━━━━━┳━━━━━━━━┓ + ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃  Mean ┃  Mean ┃ + ┃ ┃  Match ┃  Mean ┃  Median ┃ Minim… ┃ Maximum ┃ Stand… ┃ Absolu… ┃ Relat… ┃ + ┃ Column ┃  Rate ┃  Diff ┃  Diff ┃  Diff ┃  Diff ┃  Diff ┃  Diff ┃  Diff ┃ + ┡━━━━━━━━╇━━━━━━━━╇━━━━━━━━╇━━━━━━━━━╇━━━━━━━━╇━━━━━━━━━╇━━━━━━━━╇━━━━━━━━━╇━━━━━━━━┩ + │ price  │ 60.00% │ 0.6 │ 0 │ 0 │ 2 │ 0.8944 │ 0.6 │ 0.02 │ + │ qty  │ 80.00% │ 0.2 │ 0 │ 0 │ 1 │ 0.4472 │ 0.2 │ 0.05 │ + │ status │ 80.00% │ │ │ │ │ │ │ │ + └────────┴────────┴────────┴─────────┴────────┴─────────┴────────┴─────────┴────────┘ diff --git a/tests/summary/fixtures/metrics_long_labels/gen/pretty_True_perfect_True_top_False_slim_False_sample_rows_True_sample_pk_False.txt b/tests/summary/fixtures/metrics_long_labels/gen/pretty_True_perfect_True_top_False_slim_False_sample_rows_True_sample_pk_False.txt index 0bf5291..12ca0fa 100644 --- a/tests/summary/fixtures/metrics_long_labels/gen/pretty_True_perfect_True_top_False_slim_False_sample_rows_True_sample_pk_False.txt +++ b/tests/summary/fixtures/metrics_long_labels/gen/pretty_True_perfect_True_top_False_slim_False_sample_rows_True_sample_pk_False.txt @@ -20,12 +20,12 @@ Columns ▔▔▔▔▔▔▔ - ┏━━━━━━━━┳━━━━━━━━┳━━━━━━━━┳━━━━━━━━┳━━━━━━━━━┳━━━━━━━━┳━━━━━━━━━┳━━━━━━━━┳━━━━━━━━━┓ - ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃  Mean ┃  Mean ┃ - ┃ ┃  Match ┃  Mean ┃ Median ┃ Minimum ┃ Maxim… ┃ Standa… ┃ Absol… ┃ Relati… ┃ - ┃ Column ┃  Rate ┃  Delta ┃  Delta ┃  Delta ┃  Delta ┃ Deviat… ┃ Devia… ┃ Deviat… ┃ - ┡━━━━━━━━╇━━━━━━━━╇━━━━━━━━╇━━━━━━━━╇━━━━━━━━━╇━━━━━━━━╇━━━━━━━━━╇━━━━━━━━╇━━━━━━━━━┩ - │ price  │ 60.00% │ 0.6 │ 0 │ 0 │ 2 │ 0.8944 │ 0.6 │ 0.02 │ - │ qty  │ 80.00% │ 0.2 │ 0 │ 0 │ 1 │ 0.4472 │ 0.2 │ 0.05 │ - │ status │ 80.00% │ │ │ │ │ │ │ │ - └────────┴────────┴────────┴────────┴─────────┴────────┴─────────┴────────┴─────────┘ + ┏━━━━━━━━┳━━━━━━━━┳━━━━━━━━┳━━━━━━━━━┳━━━━━━━━┳━━━━━━━━━┳━━━━━━━━┳━━━━━━━━━┳━━━━━━━━┓ + ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃  Mean ┃  Mean ┃ + ┃ ┃  Match ┃  Mean ┃  Median ┃ Minim… ┃ Maximum ┃ Stand… ┃ Absolu… ┃ Relat… ┃ + ┃ Column ┃  Rate ┃  Diff ┃  Diff ┃  Diff ┃  Diff ┃  Diff ┃  Diff ┃  Diff ┃ + ┡━━━━━━━━╇━━━━━━━━╇━━━━━━━━╇━━━━━━━━━╇━━━━━━━━╇━━━━━━━━━╇━━━━━━━━╇━━━━━━━━━╇━━━━━━━━┩ + │ price  │ 60.00% │ 0.6 │ 0 │ 0 │ 2 │ 0.8944 │ 0.6 │ 0.02 │ + │ qty  │ 80.00% │ 0.2 │ 0 │ 0 │ 1 │ 0.4472 │ 0.2 │ 0.05 │ + │ status │ 80.00% │ │ │ │ │ │ │ │ + └────────┴────────┴────────┴─────────┴────────┴─────────┴────────┴─────────┴────────┘ diff --git a/tests/summary/fixtures/metrics_long_labels/gen/pretty_True_perfect_True_top_False_slim_True_sample_rows_False_sample_pk_False.txt b/tests/summary/fixtures/metrics_long_labels/gen/pretty_True_perfect_True_top_False_slim_True_sample_rows_False_sample_pk_False.txt index 3e5b24e..845e9c4 100644 --- a/tests/summary/fixtures/metrics_long_labels/gen/pretty_True_perfect_True_top_False_slim_True_sample_rows_False_sample_pk_False.txt +++ b/tests/summary/fixtures/metrics_long_labels/gen/pretty_True_perfect_True_top_False_slim_True_sample_rows_False_sample_pk_False.txt @@ -8,12 +8,12 @@ Columns ▔▔▔▔▔▔▔ - ┏━━━━━━━━┳━━━━━━━━┳━━━━━━━━┳━━━━━━━━┳━━━━━━━━━┳━━━━━━━━┳━━━━━━━━━┳━━━━━━━━┳━━━━━━━━━┓ - ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃  Mean ┃  Mean ┃ - ┃ ┃  Match ┃  Mean ┃ Median ┃ Minimum ┃ Maxim… ┃ Standa… ┃ Absol… ┃ Relati… ┃ - ┃ Column ┃  Rate ┃  Delta ┃  Delta ┃  Delta ┃  Delta ┃ Deviat… ┃ Devia… ┃ Deviat… ┃ - ┡━━━━━━━━╇━━━━━━━━╇━━━━━━━━╇━━━━━━━━╇━━━━━━━━━╇━━━━━━━━╇━━━━━━━━━╇━━━━━━━━╇━━━━━━━━━┩ - │ price  │ 60.00% │ 0.6 │ 0 │ 0 │ 2 │ 0.8944 │ 0.6 │ 0.02 │ - │ qty  │ 80.00% │ 0.2 │ 0 │ 0 │ 1 │ 0.4472 │ 0.2 │ 0.05 │ - │ status │ 80.00% │ │ │ │ │ │ │ │ - └────────┴────────┴────────┴────────┴─────────┴────────┴─────────┴────────┴─────────┘ + ┏━━━━━━━━┳━━━━━━━━┳━━━━━━━━┳━━━━━━━━━┳━━━━━━━━┳━━━━━━━━━┳━━━━━━━━┳━━━━━━━━━┳━━━━━━━━┓ + ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃  Mean ┃  Mean ┃ + ┃ ┃  Match ┃  Mean ┃  Median ┃ Minim… ┃ Maximum ┃ Stand… ┃ Absolu… ┃ Relat… ┃ + ┃ Column ┃  Rate ┃  Diff ┃  Diff ┃  Diff ┃  Diff ┃  Diff ┃  Diff ┃  Diff ┃ + ┡━━━━━━━━╇━━━━━━━━╇━━━━━━━━╇━━━━━━━━━╇━━━━━━━━╇━━━━━━━━━╇━━━━━━━━╇━━━━━━━━━╇━━━━━━━━┩ + │ price  │ 60.00% │ 0.6 │ 0 │ 0 │ 2 │ 0.8944 │ 0.6 │ 0.02 │ + │ qty  │ 80.00% │ 0.2 │ 0 │ 0 │ 1 │ 0.4472 │ 0.2 │ 0.05 │ + │ status │ 80.00% │ │ │ │ │ │ │ │ + └────────┴────────┴────────┴─────────┴────────┴─────────┴────────┴─────────┴────────┘ diff --git a/tests/summary/fixtures/metrics_long_labels/gen/pretty_True_perfect_True_top_False_slim_True_sample_rows_True_sample_pk_False.txt b/tests/summary/fixtures/metrics_long_labels/gen/pretty_True_perfect_True_top_False_slim_True_sample_rows_True_sample_pk_False.txt index 3e5b24e..845e9c4 100644 --- a/tests/summary/fixtures/metrics_long_labels/gen/pretty_True_perfect_True_top_False_slim_True_sample_rows_True_sample_pk_False.txt +++ b/tests/summary/fixtures/metrics_long_labels/gen/pretty_True_perfect_True_top_False_slim_True_sample_rows_True_sample_pk_False.txt @@ -8,12 +8,12 @@ Columns ▔▔▔▔▔▔▔ - ┏━━━━━━━━┳━━━━━━━━┳━━━━━━━━┳━━━━━━━━┳━━━━━━━━━┳━━━━━━━━┳━━━━━━━━━┳━━━━━━━━┳━━━━━━━━━┓ - ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃  Mean ┃  Mean ┃ - ┃ ┃  Match ┃  Mean ┃ Median ┃ Minimum ┃ Maxim… ┃ Standa… ┃ Absol… ┃ Relati… ┃ - ┃ Column ┃  Rate ┃  Delta ┃  Delta ┃  Delta ┃  Delta ┃ Deviat… ┃ Devia… ┃ Deviat… ┃ - ┡━━━━━━━━╇━━━━━━━━╇━━━━━━━━╇━━━━━━━━╇━━━━━━━━━╇━━━━━━━━╇━━━━━━━━━╇━━━━━━━━╇━━━━━━━━━┩ - │ price  │ 60.00% │ 0.6 │ 0 │ 0 │ 2 │ 0.8944 │ 0.6 │ 0.02 │ - │ qty  │ 80.00% │ 0.2 │ 0 │ 0 │ 1 │ 0.4472 │ 0.2 │ 0.05 │ - │ status │ 80.00% │ │ │ │ │ │ │ │ - └────────┴────────┴────────┴────────┴─────────┴────────┴─────────┴────────┴─────────┘ + ┏━━━━━━━━┳━━━━━━━━┳━━━━━━━━┳━━━━━━━━━┳━━━━━━━━┳━━━━━━━━━┳━━━━━━━━┳━━━━━━━━━┳━━━━━━━━┓ + ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃  Mean ┃  Mean ┃ + ┃ ┃  Match ┃  Mean ┃  Median ┃ Minim… ┃ Maximum ┃ Stand… ┃ Absolu… ┃ Relat… ┃ + ┃ Column ┃  Rate ┃  Diff ┃  Diff ┃  Diff ┃  Diff ┃  Diff ┃  Diff ┃  Diff ┃ + ┡━━━━━━━━╇━━━━━━━━╇━━━━━━━━╇━━━━━━━━━╇━━━━━━━━╇━━━━━━━━━╇━━━━━━━━╇━━━━━━━━━╇━━━━━━━━┩ + │ price  │ 60.00% │ 0.6 │ 0 │ 0 │ 2 │ 0.8944 │ 0.6 │ 0.02 │ + │ qty  │ 80.00% │ 0.2 │ 0 │ 0 │ 1 │ 0.4472 │ 0.2 │ 0.05 │ + │ status │ 80.00% │ │ │ │ │ │ │ │ + └────────┴────────┴────────┴─────────┴────────┴─────────┴────────┴─────────┴────────┘ diff --git a/tests/summary/fixtures/metrics_long_labels/gen/pretty_True_perfect_True_top_True_slim_False_sample_rows_False_sample_pk_False.txt b/tests/summary/fixtures/metrics_long_labels/gen/pretty_True_perfect_True_top_True_slim_False_sample_rows_False_sample_pk_False.txt index e51a097..177f97b 100644 --- a/tests/summary/fixtures/metrics_long_labels/gen/pretty_True_perfect_True_top_True_slim_False_sample_rows_False_sample_pk_False.txt +++ b/tests/summary/fixtures/metrics_long_labels/gen/pretty_True_perfect_True_top_True_slim_False_sample_rows_False_sample_pk_False.txt @@ -23,7 +23,7 @@ ┏━━━━━━━┳━━━━━━━┳━━━━━━━━┳━━━━━━━┳━━━━━━━━┳━━━━━━━┳━━━━━━━━┳━━━━━━━┳━━━━━━━━┳━━━━━━━┓ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃  Mean ┃  Mean ┃ ┃ ┃ Colum ┃ Match ┃  Mean ┃ Medi… ┃ Minim… ┃ Maxi… ┃ Stand… ┃ Abso… ┃ Relat… ┃  Top ┃ - ┃ n  ┃  Rate ┃  Delta ┃ Delta ┃  Delta ┃ Delta ┃ Devia… ┃ Devi… ┃ Devia… ┃ Chan… ┃ + ┃ n  ┃  Rate ┃  Diff ┃  Diff ┃  Diff ┃  Diff ┃  Diff ┃  Diff ┃  Diff ┃ Chan… ┃ ┡━━━━━━━╇━━━━━━━╇━━━━━━━━╇━━━━━━━╇━━━━━━━━╇━━━━━━━╇━━━━━━━━╇━━━━━━━╇━━━━━━━━╇━━━━━━━┩ │ price │ 60.0… │ 0.6 │ 0 │ 0 │ 2 │ 0.8944 │ 0.6 │ 0.02 │ 40.0 │ │ │ │ │ │ │ │ │ │ │ -> │ diff --git a/tests/summary/fixtures/metrics_long_labels/gen/pretty_True_perfect_True_top_True_slim_False_sample_rows_True_sample_pk_True.txt b/tests/summary/fixtures/metrics_long_labels/gen/pretty_True_perfect_True_top_True_slim_False_sample_rows_True_sample_pk_True.txt index 6b0fcb3..0c684c1 100644 --- a/tests/summary/fixtures/metrics_long_labels/gen/pretty_True_perfect_True_top_True_slim_False_sample_rows_True_sample_pk_True.txt +++ b/tests/summary/fixtures/metrics_long_labels/gen/pretty_True_perfect_True_top_True_slim_False_sample_rows_True_sample_pk_True.txt @@ -23,7 +23,7 @@ ┏━━━━━━━┳━━━━━━━┳━━━━━━━━┳━━━━━━━┳━━━━━━━━┳━━━━━━━┳━━━━━━━━┳━━━━━━━┳━━━━━━━━┳━━━━━━━┓ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃  Mean ┃  Mean ┃ ┃ ┃ Colum ┃ Match ┃  Mean ┃ Medi… ┃ Minim… ┃ Maxi… ┃ Stand… ┃ Abso… ┃ Relat… ┃  Top ┃ - ┃ n  ┃  Rate ┃  Delta ┃ Delta ┃  Delta ┃ Delta ┃ Devia… ┃ Devi… ┃ Devia… ┃ Chan… ┃ + ┃ n  ┃  Rate ┃  Diff ┃  Diff ┃  Diff ┃  Diff ┃  Diff ┃  Diff ┃  Diff ┃ Chan… ┃ ┡━━━━━━━╇━━━━━━━╇━━━━━━━━╇━━━━━━━╇━━━━━━━━╇━━━━━━━╇━━━━━━━━╇━━━━━━━╇━━━━━━━━╇━━━━━━━┩ │ price │ 60.0… │ 0.6 │ 0 │ 0 │ 2 │ 0.8944 │ 0.6 │ 0.02 │ 40.0 │ │ │ │ │ │ │ │ │ │ │ -> │ diff --git a/tests/summary/fixtures/metrics_long_labels/gen/pretty_True_perfect_True_top_True_slim_True_sample_rows_False_sample_pk_False.txt b/tests/summary/fixtures/metrics_long_labels/gen/pretty_True_perfect_True_top_True_slim_True_sample_rows_False_sample_pk_False.txt index 48b4417..435c332 100644 --- a/tests/summary/fixtures/metrics_long_labels/gen/pretty_True_perfect_True_top_True_slim_True_sample_rows_False_sample_pk_False.txt +++ b/tests/summary/fixtures/metrics_long_labels/gen/pretty_True_perfect_True_top_True_slim_True_sample_rows_False_sample_pk_False.txt @@ -11,7 +11,7 @@ ┏━━━━━━━┳━━━━━━━┳━━━━━━━━┳━━━━━━━┳━━━━━━━━┳━━━━━━━┳━━━━━━━━┳━━━━━━━┳━━━━━━━━┳━━━━━━━┓ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃  Mean ┃  Mean ┃ ┃ ┃ Colum ┃ Match ┃  Mean ┃ Medi… ┃ Minim… ┃ Maxi… ┃ Stand… ┃ Abso… ┃ Relat… ┃  Top ┃ - ┃ n  ┃  Rate ┃  Delta ┃ Delta ┃  Delta ┃ Delta ┃ Devia… ┃ Devi… ┃ Devia… ┃ Chan… ┃ + ┃ n  ┃  Rate ┃  Diff ┃  Diff ┃  Diff ┃  Diff ┃  Diff ┃  Diff ┃  Diff ┃ Chan… ┃ ┡━━━━━━━╇━━━━━━━╇━━━━━━━━╇━━━━━━━╇━━━━━━━━╇━━━━━━━╇━━━━━━━━╇━━━━━━━╇━━━━━━━━╇━━━━━━━┩ │ price │ 60.0… │ 0.6 │ 0 │ 0 │ 2 │ 0.8944 │ 0.6 │ 0.02 │ 40.0 │ │ │ │ │ │ │ │ │ │ │ -> │ diff --git a/tests/summary/fixtures/metrics_long_labels/gen/pretty_True_perfect_True_top_True_slim_True_sample_rows_True_sample_pk_True.txt b/tests/summary/fixtures/metrics_long_labels/gen/pretty_True_perfect_True_top_True_slim_True_sample_rows_True_sample_pk_True.txt index c77a139..57f81d0 100644 --- a/tests/summary/fixtures/metrics_long_labels/gen/pretty_True_perfect_True_top_True_slim_True_sample_rows_True_sample_pk_True.txt +++ b/tests/summary/fixtures/metrics_long_labels/gen/pretty_True_perfect_True_top_True_slim_True_sample_rows_True_sample_pk_True.txt @@ -11,7 +11,7 @@ ┏━━━━━━━┳━━━━━━━┳━━━━━━━━┳━━━━━━━┳━━━━━━━━┳━━━━━━━┳━━━━━━━━┳━━━━━━━┳━━━━━━━━┳━━━━━━━┓ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃  Mean ┃  Mean ┃ ┃ ┃ Colum ┃ Match ┃  Mean ┃ Medi… ┃ Minim… ┃ Maxi… ┃ Stand… ┃ Abso… ┃ Relat… ┃  Top ┃ - ┃ n  ┃  Rate ┃  Delta ┃ Delta ┃  Delta ┃ Delta ┃ Devia… ┃ Devi… ┃ Devia… ┃ Chan… ┃ + ┃ n  ┃  Rate ┃  Diff ┃  Diff ┃  Diff ┃  Diff ┃  Diff ┃  Diff ┃  Diff ┃ Chan… ┃ ┡━━━━━━━╇━━━━━━━╇━━━━━━━━╇━━━━━━━╇━━━━━━━━╇━━━━━━━╇━━━━━━━━╇━━━━━━━╇━━━━━━━━╇━━━━━━━┩ │ price │ 60.0… │ 0.6 │ 0 │ 0 │ 2 │ 0.8944 │ 0.6 │ 0.02 │ 40.0 │ │ │ │ │ │ │ │ │ │ │ -> │ diff --git a/tests/summary/fixtures/metrics_long_labels/test_metrics_long_labels.py b/tests/summary/fixtures/metrics_long_labels/test_metrics_long_labels.py index 1972e22..473b6f5 100644 --- a/tests/summary/fixtures/metrics_long_labels/test_metrics_long_labels.py +++ b/tests/summary/fixtures/metrics_long_labels/test_metrics_long_labels.py @@ -30,13 +30,13 @@ def test_generate() -> None: comp = compare_frames(left, right, primary_key=["id"]) generate_summaries( comp, - metrics={ - "Mean Delta": metrics.mean, - "Median Delta": metrics.median, - "Minimum Delta": metrics.min, - "Maximum Delta": metrics.max, - "Standard Deviation": metrics.std, - "Mean Absolute Deviation": metrics.mean_absolute_deviation, - "Mean Relative Deviation": metrics.mean_relative_deviation, + change_metrics={ + "Mean Diff": metrics.change.mean, + "Median Diff": metrics.change.median, + "Minimum Diff": metrics.change.min, + "Maximum Diff": metrics.change.max, + "Standard Diff": metrics.change.std, + "Mean Absolute Diff": metrics.change.mean_absolute_deviation, + "Mean Relative Diff": metrics.change.mean_relative_deviation, }, ) diff --git a/tests/summary/fixtures/metrics_null_fraction/gen/pretty_False_perfect_False_top_False_slim_False_sample_rows_False_sample_pk_False.txt b/tests/summary/fixtures/metrics_null_fraction/gen/pretty_False_perfect_False_top_False_slim_False_sample_rows_False_sample_pk_False.txt index f3d3d5f..a341946 100644 --- a/tests/summary/fixtures/metrics_null_fraction/gen/pretty_False_perfect_False_top_False_slim_False_sample_rows_False_sample_pk_False.txt +++ b/tests/summary/fixtures/metrics_null_fraction/gen/pretty_False_perfect_False_top_False_slim_False_sample_rows_False_sample_pk_False.txt @@ -5,24 +5,33 @@ Schemas ▔▔▔▔▔▔▔ - Schemas match exactly (column count: 3). + Schemas match exactly (column count: 4). Rows ▔▔▔▔ Left count Right count 5 (no change) 5 - ┏━┯━┯━┯━┯━┓╌╌╌┏━┯━┯━┯━┯━┓╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╮ - ┃ │ │ │ │ ┃ = ┃ │ │ │ │ ┃ 2 equal (40.00%) │ - ┠─┼─┼─┼─┼─┨╌╌╌┠─┼─┼─┼─┼─┨╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌├╴ 5 joined - ┃ │ │ │ │ ┃ ≠ ┃ │ │ │ │ ┃ 3 unequal (60.00%) │ - ┗━┷━┷━┷━┷━┛╌╌╌┗━┷━┷━┷━┷━┛╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╯ + ┏━┯━┯━┯━┯━┓╌╌╌┏━┯━┯━┯━┯━┓╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╮ + ┃ │ │ │ │ ┃ ≠ ┃ │ │ │ │ ┃ 5 unequal (100.00%) │ + ┗━┷━┷━┷━┷━┛╌╌╌┗━┷━┷━┷━┷━┛╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╯ Columns ▔▔▔▔▔▔▔ - ┏━━━━━━━━┳━━━━━━━━━━━━┳━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┓ - ┃ Column ┃ Match Rate ┃ Mean ┃ Null% ┃ str_len_delta ┃ - ┡━━━━━━━━╇━━━━━━━━━━━━╇━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━┩ - │ price │ 40.00% │ 0.75 │ 20.0% -> 0.0% (-20.0) │ │ - │ status │ 40.00% │ │ 0.0% -> 40.0% (+40.0) │ 0 │ - └────────┴────────────┴──────┴───────────────────────┴───────────────┘ + ┏━━━━━━━━┳━━━━━━━━━━━━┳━━━━━━┳━━━━━━━┳━━━━━━━━━━━━━━━┓ + ┃ Column ┃ Match Rate ┃ Mean ┃ Trend ┃ str_len_delta ┃ + ┡━━━━━━━━╇━━━━━━━━━━━━╇━━━━━━╇━━━━━━━╇━━━━━━━━━━━━━━━┩ + │ price │ 40.00% │ 0.75 │ up │ │ + │ score │ 0.00% │ │ down │ │ + │ status │ 40.00% │ │ │ 0 │ + └────────┴────────────┴──────┴───────┴───────────────┘ + + Data Inspection + ▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔ + ┏━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━┳━━━━━━━━┓ + ┃ Column ┃ Null% ┃ Distinct ┃ Avg ┃ Max ┃ + ┡━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━╇━━━━━━━━┩ + │ price │ 20.0% -> 0.0% (-20.0) │ 5 -> 5 (+0) │ 30 -> 30.6 (+0.6) │ │ + │ score │ 0.0% -> 100.0% (+100.0) │ 5 -> 1 (-4) │ 3 -> None │ │ + │ status │ 0.0% -> 40.0% (+40.0) │ 5 -> 4 (-1) │ │ e -> x │ + └────────┴─────────────────────────┴─────────────┴───────────────────┴────────┘ diff --git a/tests/summary/fixtures/metrics_null_fraction/gen/pretty_False_perfect_False_top_False_slim_False_sample_rows_True_sample_pk_False.txt b/tests/summary/fixtures/metrics_null_fraction/gen/pretty_False_perfect_False_top_False_slim_False_sample_rows_True_sample_pk_False.txt index f3d3d5f..a341946 100644 --- a/tests/summary/fixtures/metrics_null_fraction/gen/pretty_False_perfect_False_top_False_slim_False_sample_rows_True_sample_pk_False.txt +++ b/tests/summary/fixtures/metrics_null_fraction/gen/pretty_False_perfect_False_top_False_slim_False_sample_rows_True_sample_pk_False.txt @@ -5,24 +5,33 @@ Schemas ▔▔▔▔▔▔▔ - Schemas match exactly (column count: 3). + Schemas match exactly (column count: 4). Rows ▔▔▔▔ Left count Right count 5 (no change) 5 - ┏━┯━┯━┯━┯━┓╌╌╌┏━┯━┯━┯━┯━┓╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╮ - ┃ │ │ │ │ ┃ = ┃ │ │ │ │ ┃ 2 equal (40.00%) │ - ┠─┼─┼─┼─┼─┨╌╌╌┠─┼─┼─┼─┼─┨╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌├╴ 5 joined - ┃ │ │ │ │ ┃ ≠ ┃ │ │ │ │ ┃ 3 unequal (60.00%) │ - ┗━┷━┷━┷━┷━┛╌╌╌┗━┷━┷━┷━┷━┛╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╯ + ┏━┯━┯━┯━┯━┓╌╌╌┏━┯━┯━┯━┯━┓╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╮ + ┃ │ │ │ │ ┃ ≠ ┃ │ │ │ │ ┃ 5 unequal (100.00%) │ + ┗━┷━┷━┷━┷━┛╌╌╌┗━┷━┷━┷━┷━┛╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╯ Columns ▔▔▔▔▔▔▔ - ┏━━━━━━━━┳━━━━━━━━━━━━┳━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┓ - ┃ Column ┃ Match Rate ┃ Mean ┃ Null% ┃ str_len_delta ┃ - ┡━━━━━━━━╇━━━━━━━━━━━━╇━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━┩ - │ price │ 40.00% │ 0.75 │ 20.0% -> 0.0% (-20.0) │ │ - │ status │ 40.00% │ │ 0.0% -> 40.0% (+40.0) │ 0 │ - └────────┴────────────┴──────┴───────────────────────┴───────────────┘ + ┏━━━━━━━━┳━━━━━━━━━━━━┳━━━━━━┳━━━━━━━┳━━━━━━━━━━━━━━━┓ + ┃ Column ┃ Match Rate ┃ Mean ┃ Trend ┃ str_len_delta ┃ + ┡━━━━━━━━╇━━━━━━━━━━━━╇━━━━━━╇━━━━━━━╇━━━━━━━━━━━━━━━┩ + │ price │ 40.00% │ 0.75 │ up │ │ + │ score │ 0.00% │ │ down │ │ + │ status │ 40.00% │ │ │ 0 │ + └────────┴────────────┴──────┴───────┴───────────────┘ + + Data Inspection + ▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔ + ┏━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━┳━━━━━━━━┓ + ┃ Column ┃ Null% ┃ Distinct ┃ Avg ┃ Max ┃ + ┡━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━╇━━━━━━━━┩ + │ price │ 20.0% -> 0.0% (-20.0) │ 5 -> 5 (+0) │ 30 -> 30.6 (+0.6) │ │ + │ score │ 0.0% -> 100.0% (+100.0) │ 5 -> 1 (-4) │ 3 -> None │ │ + │ status │ 0.0% -> 40.0% (+40.0) │ 5 -> 4 (-1) │ │ e -> x │ + └────────┴─────────────────────────┴─────────────┴───────────────────┴────────┘ diff --git a/tests/summary/fixtures/metrics_null_fraction/gen/pretty_False_perfect_False_top_False_slim_True_sample_rows_False_sample_pk_False.txt b/tests/summary/fixtures/metrics_null_fraction/gen/pretty_False_perfect_False_top_False_slim_True_sample_rows_False_sample_pk_False.txt index 2f849f9..c197aaf 100644 --- a/tests/summary/fixtures/metrics_null_fraction/gen/pretty_False_perfect_False_top_False_slim_True_sample_rows_False_sample_pk_False.txt +++ b/tests/summary/fixtures/metrics_null_fraction/gen/pretty_False_perfect_False_top_False_slim_True_sample_rows_False_sample_pk_False.txt @@ -1,16 +1,25 @@ Rows ▔▔▔▔ - ┏━┯━┯━┯━┯━┓╌╌╌┏━┯━┯━┯━┯━┓╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╮ - ┃ │ │ │ │ ┃ = ┃ │ │ │ │ ┃ 2 equal (40.00%) │ - ┠─┼─┼─┼─┼─┨╌╌╌┠─┼─┼─┼─┼─┨╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌├╴ 5 joined - ┃ │ │ │ │ ┃ ≠ ┃ │ │ │ │ ┃ 3 unequal (60.00%) │ - ┗━┷━┷━┷━┷━┛╌╌╌┗━┷━┷━┷━┷━┛╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╯ + ┏━┯━┯━┯━┯━┓╌╌╌┏━┯━┯━┯━┯━┓╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╮ + ┃ │ │ │ │ ┃ ≠ ┃ │ │ │ │ ┃ 5 unequal (100.00%) │ + ┗━┷━┷━┷━┷━┛╌╌╌┗━┷━┷━┷━┷━┛╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╯ Columns ▔▔▔▔▔▔▔ - ┏━━━━━━━━┳━━━━━━━━━━━━┳━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┓ - ┃ Column ┃ Match Rate ┃ Mean ┃ Null% ┃ str_len_delta ┃ - ┡━━━━━━━━╇━━━━━━━━━━━━╇━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━┩ - │ price │ 40.00% │ 0.75 │ 20.0% -> 0.0% (-20.0) │ │ - │ status │ 40.00% │ │ 0.0% -> 40.0% (+40.0) │ 0 │ - └────────┴────────────┴──────┴───────────────────────┴───────────────┘ + ┏━━━━━━━━┳━━━━━━━━━━━━┳━━━━━━┳━━━━━━━┳━━━━━━━━━━━━━━━┓ + ┃ Column ┃ Match Rate ┃ Mean ┃ Trend ┃ str_len_delta ┃ + ┡━━━━━━━━╇━━━━━━━━━━━━╇━━━━━━╇━━━━━━━╇━━━━━━━━━━━━━━━┩ + │ price │ 40.00% │ 0.75 │ up │ │ + │ score │ 0.00% │ │ down │ │ + │ status │ 40.00% │ │ │ 0 │ + └────────┴────────────┴──────┴───────┴───────────────┘ + + Data Inspection + ▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔ + ┏━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━┳━━━━━━━━┓ + ┃ Column ┃ Null% ┃ Distinct ┃ Avg ┃ Max ┃ + ┡━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━╇━━━━━━━━┩ + │ price │ 20.0% -> 0.0% (-20.0) │ 5 -> 5 (+0) │ 30 -> 30.6 (+0.6) │ │ + │ score │ 0.0% -> 100.0% (+100.0) │ 5 -> 1 (-4) │ 3 -> None │ │ + │ status │ 0.0% -> 40.0% (+40.0) │ 5 -> 4 (-1) │ │ e -> x │ + └────────┴─────────────────────────┴─────────────┴───────────────────┴────────┘ diff --git a/tests/summary/fixtures/metrics_null_fraction/gen/pretty_False_perfect_False_top_False_slim_True_sample_rows_True_sample_pk_False.txt b/tests/summary/fixtures/metrics_null_fraction/gen/pretty_False_perfect_False_top_False_slim_True_sample_rows_True_sample_pk_False.txt index 2f849f9..c197aaf 100644 --- a/tests/summary/fixtures/metrics_null_fraction/gen/pretty_False_perfect_False_top_False_slim_True_sample_rows_True_sample_pk_False.txt +++ b/tests/summary/fixtures/metrics_null_fraction/gen/pretty_False_perfect_False_top_False_slim_True_sample_rows_True_sample_pk_False.txt @@ -1,16 +1,25 @@ Rows ▔▔▔▔ - ┏━┯━┯━┯━┯━┓╌╌╌┏━┯━┯━┯━┯━┓╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╮ - ┃ │ │ │ │ ┃ = ┃ │ │ │ │ ┃ 2 equal (40.00%) │ - ┠─┼─┼─┼─┼─┨╌╌╌┠─┼─┼─┼─┼─┨╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌├╴ 5 joined - ┃ │ │ │ │ ┃ ≠ ┃ │ │ │ │ ┃ 3 unequal (60.00%) │ - ┗━┷━┷━┷━┷━┛╌╌╌┗━┷━┷━┷━┷━┛╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╯ + ┏━┯━┯━┯━┯━┓╌╌╌┏━┯━┯━┯━┯━┓╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╮ + ┃ │ │ │ │ ┃ ≠ ┃ │ │ │ │ ┃ 5 unequal (100.00%) │ + ┗━┷━┷━┷━┷━┛╌╌╌┗━┷━┷━┷━┷━┛╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╯ Columns ▔▔▔▔▔▔▔ - ┏━━━━━━━━┳━━━━━━━━━━━━┳━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┓ - ┃ Column ┃ Match Rate ┃ Mean ┃ Null% ┃ str_len_delta ┃ - ┡━━━━━━━━╇━━━━━━━━━━━━╇━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━┩ - │ price │ 40.00% │ 0.75 │ 20.0% -> 0.0% (-20.0) │ │ - │ status │ 40.00% │ │ 0.0% -> 40.0% (+40.0) │ 0 │ - └────────┴────────────┴──────┴───────────────────────┴───────────────┘ + ┏━━━━━━━━┳━━━━━━━━━━━━┳━━━━━━┳━━━━━━━┳━━━━━━━━━━━━━━━┓ + ┃ Column ┃ Match Rate ┃ Mean ┃ Trend ┃ str_len_delta ┃ + ┡━━━━━━━━╇━━━━━━━━━━━━╇━━━━━━╇━━━━━━━╇━━━━━━━━━━━━━━━┩ + │ price │ 40.00% │ 0.75 │ up │ │ + │ score │ 0.00% │ │ down │ │ + │ status │ 40.00% │ │ │ 0 │ + └────────┴────────────┴──────┴───────┴───────────────┘ + + Data Inspection + ▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔ + ┏━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━┳━━━━━━━━┓ + ┃ Column ┃ Null% ┃ Distinct ┃ Avg ┃ Max ┃ + ┡━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━╇━━━━━━━━┩ + │ price │ 20.0% -> 0.0% (-20.0) │ 5 -> 5 (+0) │ 30 -> 30.6 (+0.6) │ │ + │ score │ 0.0% -> 100.0% (+100.0) │ 5 -> 1 (-4) │ 3 -> None │ │ + │ status │ 0.0% -> 40.0% (+40.0) │ 5 -> 4 (-1) │ │ e -> x │ + └────────┴─────────────────────────┴─────────────┴───────────────────┴────────┘ diff --git a/tests/summary/fixtures/metrics_null_fraction/gen/pretty_False_perfect_False_top_True_slim_False_sample_rows_False_sample_pk_False.txt b/tests/summary/fixtures/metrics_null_fraction/gen/pretty_False_perfect_False_top_True_slim_False_sample_rows_False_sample_pk_False.txt index 18568f4..11367dc 100644 --- a/tests/summary/fixtures/metrics_null_fraction/gen/pretty_False_perfect_False_top_True_slim_False_sample_rows_False_sample_pk_False.txt +++ b/tests/summary/fixtures/metrics_null_fraction/gen/pretty_False_perfect_False_top_True_slim_False_sample_rows_False_sample_pk_False.txt @@ -5,32 +5,42 @@ Schemas ▔▔▔▔▔▔▔ - Schemas match exactly (column count: 3). + Schemas match exactly (column count: 4). Rows ▔▔▔▔ Left count Right count 5 (no change) 5 - ┏━┯━┯━┯━┯━┓╌╌╌┏━┯━┯━┯━┯━┓╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╮ - ┃ │ │ │ │ ┃ = ┃ │ │ │ │ ┃ 2 equal (40.00%) │ - ┠─┼─┼─┼─┼─┨╌╌╌┠─┼─┼─┼─┼─┨╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌├╴ 5 joined - ┃ │ │ │ │ ┃ ≠ ┃ │ │ │ │ ┃ 3 unequal (60.00%) │ - ┗━┷━┷━┷━┷━┛╌╌╌┗━┷━┷━┷━┷━┛╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╯ + ┏━┯━┯━┯━┯━┓╌╌╌┏━┯━┯━┯━┯━┓╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╮ + ┃ │ │ │ │ ┃ ≠ ┃ │ │ │ │ ┃ 5 unequal (100.00%) │ + ┗━┷━┷━┷━┷━┛╌╌╌┗━┷━┷━┷━┷━┛╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╯ Columns ▔▔▔▔▔▔▔ - ┏━━━━━━━━┳━━━━━━━━━━━━┳━━━━━━┳━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━┓ - ┃ Column ┃ Match Rate ┃ Mean ┃ Null% ┃ str_len_delta ┃ Top Changes ┃ - ┡━━━━━━━━╇━━━━━━━━━━━━╇━━━━━━╇━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━┩ - │ price │ 40.00% │ 0.75 │ 20.0% -> 0.0% │ │ None -> 30.0 │ - │ │ │ │ (-20.0) │ │ (1x) │ - │ │ │ │ │ │ 40.0 -> 42.0 │ - │ │ │ │ │ │ (1x) │ - │ │ │ │ │ │ 20.0 -> 21.0 │ - │ │ │ │ │ │ (1x) │ - ├────────┼────────────┼──────┼───────────────────┼───────────────┼──────────────────┤ - │ status │ 40.00% │ │ 0.0% -> 40.0% │ 0 │ "d" -> None (1x) │ - │ │ │ │ (+40.0) │ │ "c" -> "x" (1x) │ - │ │ │ │ │ │ "b" -> None (1x) │ - └────────┴────────────┴──────┴───────────────────┴───────────────┴──────────────────┘ + ┏━━━━━━━━┳━━━━━━━━━━━━┳━━━━━━┳━━━━━━━┳━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━┓ + ┃ Column ┃ Match Rate ┃ Mean ┃ Trend ┃ str_len_delta ┃ Top Changes ┃ + ┡━━━━━━━━╇━━━━━━━━━━━━╇━━━━━━╇━━━━━━━╇━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━┩ + │ price │ 40.00% │ 0.75 │ up │ │ None -> 30.0 (1x) │ + │ │ │ │ │ │ 40.0 -> 42.0 (1x) │ + │ │ │ │ │ │ 20.0 -> 21.0 (1x) │ + ├────────┼────────────┼──────┼───────┼───────────────┼───────────────────┤ + │ score │ 0.00% │ │ down │ │ 5.0 -> None (1x) │ + │ │ │ │ │ │ 4.0 -> None (1x) │ + │ │ │ │ │ │ 3.0 -> None (1x) │ + │ │ │ │ │ │ (...and 2 others) │ + ├────────┼────────────┼──────┼───────┼───────────────┼───────────────────┤ + │ status │ 40.00% │ │ │ 0 │ "d" -> None (1x) │ + │ │ │ │ │ │ "c" -> "x" (1x) │ + │ │ │ │ │ │ "b" -> None (1x) │ + └────────┴────────────┴──────┴───────┴───────────────┴───────────────────┘ + + Data Inspection + ▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔ + ┏━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━┳━━━━━━━━┓ + ┃ Column ┃ Null% ┃ Distinct ┃ Avg ┃ Max ┃ + ┡━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━╇━━━━━━━━┩ + │ price │ 20.0% -> 0.0% (-20.0) │ 5 -> 5 (+0) │ 30 -> 30.6 (+0.6) │ │ + │ score │ 0.0% -> 100.0% (+100.0) │ 5 -> 1 (-4) │ 3 -> None │ │ + │ status │ 0.0% -> 40.0% (+40.0) │ 5 -> 4 (-1) │ │ e -> x │ + └────────┴─────────────────────────┴─────────────┴───────────────────┴────────┘ diff --git a/tests/summary/fixtures/metrics_null_fraction/gen/pretty_False_perfect_False_top_True_slim_False_sample_rows_True_sample_pk_True.txt b/tests/summary/fixtures/metrics_null_fraction/gen/pretty_False_perfect_False_top_True_slim_False_sample_rows_True_sample_pk_True.txt index f2a498b..52011d2 100644 --- a/tests/summary/fixtures/metrics_null_fraction/gen/pretty_False_perfect_False_top_True_slim_False_sample_rows_True_sample_pk_True.txt +++ b/tests/summary/fixtures/metrics_null_fraction/gen/pretty_False_perfect_False_top_True_slim_False_sample_rows_True_sample_pk_True.txt @@ -5,35 +5,42 @@ Schemas ▔▔▔▔▔▔▔ - Schemas match exactly (column count: 3). + Schemas match exactly (column count: 4). Rows ▔▔▔▔ Left count Right count 5 (no change) 5 - ┏━┯━┯━┯━┯━┓╌╌╌┏━┯━┯━┯━┯━┓╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╮ - ┃ │ │ │ │ ┃ = ┃ │ │ │ │ ┃ 2 equal (40.00%) │ - ┠─┼─┼─┼─┼─┨╌╌╌┠─┼─┼─┼─┼─┨╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌├╴ 5 joined - ┃ │ │ │ │ ┃ ≠ ┃ │ │ │ │ ┃ 3 unequal (60.00%) │ - ┗━┷━┷━┷━┷━┛╌╌╌┗━┷━┷━┷━┷━┛╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╯ + ┏━┯━┯━┯━┯━┓╌╌╌┏━┯━┯━┯━┯━┓╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╮ + ┃ │ │ │ │ ┃ ≠ ┃ │ │ │ │ ┃ 5 unequal (100.00%) │ + ┗━┷━┷━┷━┷━┛╌╌╌┗━┷━┷━┷━┷━┛╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╯ Columns ▔▔▔▔▔▔▔ - ┏━━━━━━━━┳━━━━━━━━━━━━┳━━━━━━┳━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━┓ - ┃ Column ┃ Match Rate ┃ Mean ┃ Null% ┃ str_len_delta ┃ Top Changes ┃ - ┡━━━━━━━━╇━━━━━━━━━━━━╇━━━━━━╇━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━┩ - │ price │ 40.00% │ 0.75 │ 20.0% -> 0.0% │ │ None -> 30.0 │ - │ │ │ │ (-20.0) │ │ (1x, e.g. 3) │ - │ │ │ │ │ │ 40.0 -> 42.0 │ - │ │ │ │ │ │ (1x, e.g. 4) │ - │ │ │ │ │ │ 20.0 -> 21.0 │ - │ │ │ │ │ │ (1x, e.g. 2) │ - ├────────┼────────────┼──────┼───────────────────┼───────────────┼──────────────────┤ - │ status │ 40.00% │ │ 0.0% -> 40.0% │ 0 │ "d" -> None (1x, │ - │ │ │ │ (+40.0) │ │ e.g. 4) │ - │ │ │ │ │ │ "c" -> "x" (1x, │ - │ │ │ │ │ │ e.g. 3) │ - │ │ │ │ │ │ "b" -> None (1x, │ - │ │ │ │ │ │ e.g. 2) │ - └────────┴────────────┴──────┴───────────────────┴───────────────┴──────────────────┘ + ┏━━━━━━━━┳━━━━━━━━━━━━┳━━━━━━┳━━━━━━━┳━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━┓ + ┃ Column ┃ Match Rate ┃ Mean ┃ Trend ┃ str_len_delta ┃ Top Changes ┃ + ┡━━━━━━━━╇━━━━━━━━━━━━╇━━━━━━╇━━━━━━━╇━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━┩ + │ price │ 40.00% │ 0.75 │ up │ │ None -> 30.0 (1x, e.g. 3) │ + │ │ │ │ │ │ 40.0 -> 42.0 (1x, e.g. 4) │ + │ │ │ │ │ │ 20.0 -> 21.0 (1x, e.g. 2) │ + ├────────┼────────────┼──────┼───────┼───────────────┼───────────────────────────┤ + │ score │ 0.00% │ │ down │ │ 5.0 -> None (1x, e.g. 5) │ + │ │ │ │ │ │ 4.0 -> None (1x, e.g. 4) │ + │ │ │ │ │ │ 3.0 -> None (1x, e.g. 3) │ + │ │ │ │ │ │ (...and 2 others) │ + ├────────┼────────────┼──────┼───────┼───────────────┼───────────────────────────┤ + │ status │ 40.00% │ │ │ 0 │ "d" -> None (1x, e.g. 4) │ + │ │ │ │ │ │ "c" -> "x" (1x, e.g. 3) │ + │ │ │ │ │ │ "b" -> None (1x, e.g. 2) │ + └────────┴────────────┴──────┴───────┴───────────────┴───────────────────────────┘ + + Data Inspection + ▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔ + ┏━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━┳━━━━━━━━┓ + ┃ Column ┃ Null% ┃ Distinct ┃ Avg ┃ Max ┃ + ┡━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━╇━━━━━━━━┩ + │ price │ 20.0% -> 0.0% (-20.0) │ 5 -> 5 (+0) │ 30 -> 30.6 (+0.6) │ │ + │ score │ 0.0% -> 100.0% (+100.0) │ 5 -> 1 (-4) │ 3 -> None │ │ + │ status │ 0.0% -> 40.0% (+40.0) │ 5 -> 4 (-1) │ │ e -> x │ + └────────┴─────────────────────────┴─────────────┴───────────────────┴────────┘ diff --git a/tests/summary/fixtures/metrics_null_fraction/gen/pretty_False_perfect_False_top_True_slim_True_sample_rows_False_sample_pk_False.txt b/tests/summary/fixtures/metrics_null_fraction/gen/pretty_False_perfect_False_top_True_slim_True_sample_rows_False_sample_pk_False.txt index 06d07fe..f74f9a2 100644 --- a/tests/summary/fixtures/metrics_null_fraction/gen/pretty_False_perfect_False_top_True_slim_True_sample_rows_False_sample_pk_False.txt +++ b/tests/summary/fixtures/metrics_null_fraction/gen/pretty_False_perfect_False_top_True_slim_True_sample_rows_False_sample_pk_False.txt @@ -1,24 +1,34 @@ Rows ▔▔▔▔ - ┏━┯━┯━┯━┯━┓╌╌╌┏━┯━┯━┯━┯━┓╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╮ - ┃ │ │ │ │ ┃ = ┃ │ │ │ │ ┃ 2 equal (40.00%) │ - ┠─┼─┼─┼─┼─┨╌╌╌┠─┼─┼─┼─┼─┨╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌├╴ 5 joined - ┃ │ │ │ │ ┃ ≠ ┃ │ │ │ │ ┃ 3 unequal (60.00%) │ - ┗━┷━┷━┷━┷━┛╌╌╌┗━┷━┷━┷━┷━┛╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╯ + ┏━┯━┯━┯━┯━┓╌╌╌┏━┯━┯━┯━┯━┓╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╮ + ┃ │ │ │ │ ┃ ≠ ┃ │ │ │ │ ┃ 5 unequal (100.00%) │ + ┗━┷━┷━┷━┷━┛╌╌╌┗━┷━┷━┷━┷━┛╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╯ Columns ▔▔▔▔▔▔▔ - ┏━━━━━━━━┳━━━━━━━━━━━━┳━━━━━━┳━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━┓ - ┃ Column ┃ Match Rate ┃ Mean ┃ Null% ┃ str_len_delta ┃ Top Changes ┃ - ┡━━━━━━━━╇━━━━━━━━━━━━╇━━━━━━╇━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━┩ - │ price │ 40.00% │ 0.75 │ 20.0% -> 0.0% │ │ None -> 30.0 │ - │ │ │ │ (-20.0) │ │ (1x) │ - │ │ │ │ │ │ 40.0 -> 42.0 │ - │ │ │ │ │ │ (1x) │ - │ │ │ │ │ │ 20.0 -> 21.0 │ - │ │ │ │ │ │ (1x) │ - ├────────┼────────────┼──────┼───────────────────┼───────────────┼──────────────────┤ - │ status │ 40.00% │ │ 0.0% -> 40.0% │ 0 │ "d" -> None (1x) │ - │ │ │ │ (+40.0) │ │ "c" -> "x" (1x) │ - │ │ │ │ │ │ "b" -> None (1x) │ - └────────┴────────────┴──────┴───────────────────┴───────────────┴──────────────────┘ + ┏━━━━━━━━┳━━━━━━━━━━━━┳━━━━━━┳━━━━━━━┳━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━┓ + ┃ Column ┃ Match Rate ┃ Mean ┃ Trend ┃ str_len_delta ┃ Top Changes ┃ + ┡━━━━━━━━╇━━━━━━━━━━━━╇━━━━━━╇━━━━━━━╇━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━┩ + │ price │ 40.00% │ 0.75 │ up │ │ None -> 30.0 (1x) │ + │ │ │ │ │ │ 40.0 -> 42.0 (1x) │ + │ │ │ │ │ │ 20.0 -> 21.0 (1x) │ + ├────────┼────────────┼──────┼───────┼───────────────┼───────────────────┤ + │ score │ 0.00% │ │ down │ │ 5.0 -> None (1x) │ + │ │ │ │ │ │ 4.0 -> None (1x) │ + │ │ │ │ │ │ 3.0 -> None (1x) │ + │ │ │ │ │ │ (...and 2 others) │ + ├────────┼────────────┼──────┼───────┼───────────────┼───────────────────┤ + │ status │ 40.00% │ │ │ 0 │ "d" -> None (1x) │ + │ │ │ │ │ │ "c" -> "x" (1x) │ + │ │ │ │ │ │ "b" -> None (1x) │ + └────────┴────────────┴──────┴───────┴───────────────┴───────────────────┘ + + Data Inspection + ▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔ + ┏━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━┳━━━━━━━━┓ + ┃ Column ┃ Null% ┃ Distinct ┃ Avg ┃ Max ┃ + ┡━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━╇━━━━━━━━┩ + │ price │ 20.0% -> 0.0% (-20.0) │ 5 -> 5 (+0) │ 30 -> 30.6 (+0.6) │ │ + │ score │ 0.0% -> 100.0% (+100.0) │ 5 -> 1 (-4) │ 3 -> None │ │ + │ status │ 0.0% -> 40.0% (+40.0) │ 5 -> 4 (-1) │ │ e -> x │ + └────────┴─────────────────────────┴─────────────┴───────────────────┴────────┘ diff --git a/tests/summary/fixtures/metrics_null_fraction/gen/pretty_False_perfect_False_top_True_slim_True_sample_rows_True_sample_pk_True.txt b/tests/summary/fixtures/metrics_null_fraction/gen/pretty_False_perfect_False_top_True_slim_True_sample_rows_True_sample_pk_True.txt index 01c654b..ae277d0 100644 --- a/tests/summary/fixtures/metrics_null_fraction/gen/pretty_False_perfect_False_top_True_slim_True_sample_rows_True_sample_pk_True.txt +++ b/tests/summary/fixtures/metrics_null_fraction/gen/pretty_False_perfect_False_top_True_slim_True_sample_rows_True_sample_pk_True.txt @@ -1,27 +1,34 @@ Rows ▔▔▔▔ - ┏━┯━┯━┯━┯━┓╌╌╌┏━┯━┯━┯━┯━┓╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╮ - ┃ │ │ │ │ ┃ = ┃ │ │ │ │ ┃ 2 equal (40.00%) │ - ┠─┼─┼─┼─┼─┨╌╌╌┠─┼─┼─┼─┼─┨╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌├╴ 5 joined - ┃ │ │ │ │ ┃ ≠ ┃ │ │ │ │ ┃ 3 unequal (60.00%) │ - ┗━┷━┷━┷━┷━┛╌╌╌┗━┷━┷━┷━┷━┛╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╯ + ┏━┯━┯━┯━┯━┓╌╌╌┏━┯━┯━┯━┯━┓╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╮ + ┃ │ │ │ │ ┃ ≠ ┃ │ │ │ │ ┃ 5 unequal (100.00%) │ + ┗━┷━┷━┷━┷━┛╌╌╌┗━┷━┷━┷━┷━┛╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╯ Columns ▔▔▔▔▔▔▔ - ┏━━━━━━━━┳━━━━━━━━━━━━┳━━━━━━┳━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━┓ - ┃ Column ┃ Match Rate ┃ Mean ┃ Null% ┃ str_len_delta ┃ Top Changes ┃ - ┡━━━━━━━━╇━━━━━━━━━━━━╇━━━━━━╇━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━┩ - │ price │ 40.00% │ 0.75 │ 20.0% -> 0.0% │ │ None -> 30.0 │ - │ │ │ │ (-20.0) │ │ (1x, e.g. 3) │ - │ │ │ │ │ │ 40.0 -> 42.0 │ - │ │ │ │ │ │ (1x, e.g. 4) │ - │ │ │ │ │ │ 20.0 -> 21.0 │ - │ │ │ │ │ │ (1x, e.g. 2) │ - ├────────┼────────────┼──────┼───────────────────┼───────────────┼──────────────────┤ - │ status │ 40.00% │ │ 0.0% -> 40.0% │ 0 │ "d" -> None (1x, │ - │ │ │ │ (+40.0) │ │ e.g. 4) │ - │ │ │ │ │ │ "c" -> "x" (1x, │ - │ │ │ │ │ │ e.g. 3) │ - │ │ │ │ │ │ "b" -> None (1x, │ - │ │ │ │ │ │ e.g. 2) │ - └────────┴────────────┴──────┴───────────────────┴───────────────┴──────────────────┘ + ┏━━━━━━━━┳━━━━━━━━━━━━┳━━━━━━┳━━━━━━━┳━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━┓ + ┃ Column ┃ Match Rate ┃ Mean ┃ Trend ┃ str_len_delta ┃ Top Changes ┃ + ┡━━━━━━━━╇━━━━━━━━━━━━╇━━━━━━╇━━━━━━━╇━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━┩ + │ price │ 40.00% │ 0.75 │ up │ │ None -> 30.0 (1x, e.g. 3) │ + │ │ │ │ │ │ 40.0 -> 42.0 (1x, e.g. 4) │ + │ │ │ │ │ │ 20.0 -> 21.0 (1x, e.g. 2) │ + ├────────┼────────────┼──────┼───────┼───────────────┼───────────────────────────┤ + │ score │ 0.00% │ │ down │ │ 5.0 -> None (1x, e.g. 5) │ + │ │ │ │ │ │ 4.0 -> None (1x, e.g. 4) │ + │ │ │ │ │ │ 3.0 -> None (1x, e.g. 3) │ + │ │ │ │ │ │ (...and 2 others) │ + ├────────┼────────────┼──────┼───────┼───────────────┼───────────────────────────┤ + │ status │ 40.00% │ │ │ 0 │ "d" -> None (1x, e.g. 4) │ + │ │ │ │ │ │ "c" -> "x" (1x, e.g. 3) │ + │ │ │ │ │ │ "b" -> None (1x, e.g. 2) │ + └────────┴────────────┴──────┴───────┴───────────────┴───────────────────────────┘ + + Data Inspection + ▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔ + ┏━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━┳━━━━━━━━┓ + ┃ Column ┃ Null% ┃ Distinct ┃ Avg ┃ Max ┃ + ┡━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━╇━━━━━━━━┩ + │ price │ 20.0% -> 0.0% (-20.0) │ 5 -> 5 (+0) │ 30 -> 30.6 (+0.6) │ │ + │ score │ 0.0% -> 100.0% (+100.0) │ 5 -> 1 (-4) │ 3 -> None │ │ + │ status │ 0.0% -> 40.0% (+40.0) │ 5 -> 4 (-1) │ │ e -> x │ + └────────┴─────────────────────────┴─────────────┴───────────────────┴────────┘ diff --git a/tests/summary/fixtures/metrics_null_fraction/gen/pretty_False_perfect_True_top_False_slim_False_sample_rows_False_sample_pk_False.txt b/tests/summary/fixtures/metrics_null_fraction/gen/pretty_False_perfect_True_top_False_slim_False_sample_rows_False_sample_pk_False.txt index f3d3d5f..a341946 100644 --- a/tests/summary/fixtures/metrics_null_fraction/gen/pretty_False_perfect_True_top_False_slim_False_sample_rows_False_sample_pk_False.txt +++ b/tests/summary/fixtures/metrics_null_fraction/gen/pretty_False_perfect_True_top_False_slim_False_sample_rows_False_sample_pk_False.txt @@ -5,24 +5,33 @@ Schemas ▔▔▔▔▔▔▔ - Schemas match exactly (column count: 3). + Schemas match exactly (column count: 4). Rows ▔▔▔▔ Left count Right count 5 (no change) 5 - ┏━┯━┯━┯━┯━┓╌╌╌┏━┯━┯━┯━┯━┓╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╮ - ┃ │ │ │ │ ┃ = ┃ │ │ │ │ ┃ 2 equal (40.00%) │ - ┠─┼─┼─┼─┼─┨╌╌╌┠─┼─┼─┼─┼─┨╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌├╴ 5 joined - ┃ │ │ │ │ ┃ ≠ ┃ │ │ │ │ ┃ 3 unequal (60.00%) │ - ┗━┷━┷━┷━┷━┛╌╌╌┗━┷━┷━┷━┷━┛╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╯ + ┏━┯━┯━┯━┯━┓╌╌╌┏━┯━┯━┯━┯━┓╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╮ + ┃ │ │ │ │ ┃ ≠ ┃ │ │ │ │ ┃ 5 unequal (100.00%) │ + ┗━┷━┷━┷━┷━┛╌╌╌┗━┷━┷━┷━┷━┛╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╯ Columns ▔▔▔▔▔▔▔ - ┏━━━━━━━━┳━━━━━━━━━━━━┳━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┓ - ┃ Column ┃ Match Rate ┃ Mean ┃ Null% ┃ str_len_delta ┃ - ┡━━━━━━━━╇━━━━━━━━━━━━╇━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━┩ - │ price │ 40.00% │ 0.75 │ 20.0% -> 0.0% (-20.0) │ │ - │ status │ 40.00% │ │ 0.0% -> 40.0% (+40.0) │ 0 │ - └────────┴────────────┴──────┴───────────────────────┴───────────────┘ + ┏━━━━━━━━┳━━━━━━━━━━━━┳━━━━━━┳━━━━━━━┳━━━━━━━━━━━━━━━┓ + ┃ Column ┃ Match Rate ┃ Mean ┃ Trend ┃ str_len_delta ┃ + ┡━━━━━━━━╇━━━━━━━━━━━━╇━━━━━━╇━━━━━━━╇━━━━━━━━━━━━━━━┩ + │ price │ 40.00% │ 0.75 │ up │ │ + │ score │ 0.00% │ │ down │ │ + │ status │ 40.00% │ │ │ 0 │ + └────────┴────────────┴──────┴───────┴───────────────┘ + + Data Inspection + ▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔ + ┏━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━┳━━━━━━━━┓ + ┃ Column ┃ Null% ┃ Distinct ┃ Avg ┃ Max ┃ + ┡━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━╇━━━━━━━━┩ + │ price │ 20.0% -> 0.0% (-20.0) │ 5 -> 5 (+0) │ 30 -> 30.6 (+0.6) │ │ + │ score │ 0.0% -> 100.0% (+100.0) │ 5 -> 1 (-4) │ 3 -> None │ │ + │ status │ 0.0% -> 40.0% (+40.0) │ 5 -> 4 (-1) │ │ e -> x │ + └────────┴─────────────────────────┴─────────────┴───────────────────┴────────┘ diff --git a/tests/summary/fixtures/metrics_null_fraction/gen/pretty_False_perfect_True_top_False_slim_False_sample_rows_True_sample_pk_False.txt b/tests/summary/fixtures/metrics_null_fraction/gen/pretty_False_perfect_True_top_False_slim_False_sample_rows_True_sample_pk_False.txt index f3d3d5f..a341946 100644 --- a/tests/summary/fixtures/metrics_null_fraction/gen/pretty_False_perfect_True_top_False_slim_False_sample_rows_True_sample_pk_False.txt +++ b/tests/summary/fixtures/metrics_null_fraction/gen/pretty_False_perfect_True_top_False_slim_False_sample_rows_True_sample_pk_False.txt @@ -5,24 +5,33 @@ Schemas ▔▔▔▔▔▔▔ - Schemas match exactly (column count: 3). + Schemas match exactly (column count: 4). Rows ▔▔▔▔ Left count Right count 5 (no change) 5 - ┏━┯━┯━┯━┯━┓╌╌╌┏━┯━┯━┯━┯━┓╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╮ - ┃ │ │ │ │ ┃ = ┃ │ │ │ │ ┃ 2 equal (40.00%) │ - ┠─┼─┼─┼─┼─┨╌╌╌┠─┼─┼─┼─┼─┨╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌├╴ 5 joined - ┃ │ │ │ │ ┃ ≠ ┃ │ │ │ │ ┃ 3 unequal (60.00%) │ - ┗━┷━┷━┷━┷━┛╌╌╌┗━┷━┷━┷━┷━┛╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╯ + ┏━┯━┯━┯━┯━┓╌╌╌┏━┯━┯━┯━┯━┓╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╮ + ┃ │ │ │ │ ┃ ≠ ┃ │ │ │ │ ┃ 5 unequal (100.00%) │ + ┗━┷━┷━┷━┷━┛╌╌╌┗━┷━┷━┷━┷━┛╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╯ Columns ▔▔▔▔▔▔▔ - ┏━━━━━━━━┳━━━━━━━━━━━━┳━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┓ - ┃ Column ┃ Match Rate ┃ Mean ┃ Null% ┃ str_len_delta ┃ - ┡━━━━━━━━╇━━━━━━━━━━━━╇━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━┩ - │ price │ 40.00% │ 0.75 │ 20.0% -> 0.0% (-20.0) │ │ - │ status │ 40.00% │ │ 0.0% -> 40.0% (+40.0) │ 0 │ - └────────┴────────────┴──────┴───────────────────────┴───────────────┘ + ┏━━━━━━━━┳━━━━━━━━━━━━┳━━━━━━┳━━━━━━━┳━━━━━━━━━━━━━━━┓ + ┃ Column ┃ Match Rate ┃ Mean ┃ Trend ┃ str_len_delta ┃ + ┡━━━━━━━━╇━━━━━━━━━━━━╇━━━━━━╇━━━━━━━╇━━━━━━━━━━━━━━━┩ + │ price │ 40.00% │ 0.75 │ up │ │ + │ score │ 0.00% │ │ down │ │ + │ status │ 40.00% │ │ │ 0 │ + └────────┴────────────┴──────┴───────┴───────────────┘ + + Data Inspection + ▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔ + ┏━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━┳━━━━━━━━┓ + ┃ Column ┃ Null% ┃ Distinct ┃ Avg ┃ Max ┃ + ┡━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━╇━━━━━━━━┩ + │ price │ 20.0% -> 0.0% (-20.0) │ 5 -> 5 (+0) │ 30 -> 30.6 (+0.6) │ │ + │ score │ 0.0% -> 100.0% (+100.0) │ 5 -> 1 (-4) │ 3 -> None │ │ + │ status │ 0.0% -> 40.0% (+40.0) │ 5 -> 4 (-1) │ │ e -> x │ + └────────┴─────────────────────────┴─────────────┴───────────────────┴────────┘ diff --git a/tests/summary/fixtures/metrics_null_fraction/gen/pretty_False_perfect_True_top_False_slim_True_sample_rows_False_sample_pk_False.txt b/tests/summary/fixtures/metrics_null_fraction/gen/pretty_False_perfect_True_top_False_slim_True_sample_rows_False_sample_pk_False.txt index 2f849f9..c197aaf 100644 --- a/tests/summary/fixtures/metrics_null_fraction/gen/pretty_False_perfect_True_top_False_slim_True_sample_rows_False_sample_pk_False.txt +++ b/tests/summary/fixtures/metrics_null_fraction/gen/pretty_False_perfect_True_top_False_slim_True_sample_rows_False_sample_pk_False.txt @@ -1,16 +1,25 @@ Rows ▔▔▔▔ - ┏━┯━┯━┯━┯━┓╌╌╌┏━┯━┯━┯━┯━┓╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╮ - ┃ │ │ │ │ ┃ = ┃ │ │ │ │ ┃ 2 equal (40.00%) │ - ┠─┼─┼─┼─┼─┨╌╌╌┠─┼─┼─┼─┼─┨╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌├╴ 5 joined - ┃ │ │ │ │ ┃ ≠ ┃ │ │ │ │ ┃ 3 unequal (60.00%) │ - ┗━┷━┷━┷━┷━┛╌╌╌┗━┷━┷━┷━┷━┛╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╯ + ┏━┯━┯━┯━┯━┓╌╌╌┏━┯━┯━┯━┯━┓╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╮ + ┃ │ │ │ │ ┃ ≠ ┃ │ │ │ │ ┃ 5 unequal (100.00%) │ + ┗━┷━┷━┷━┷━┛╌╌╌┗━┷━┷━┷━┷━┛╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╯ Columns ▔▔▔▔▔▔▔ - ┏━━━━━━━━┳━━━━━━━━━━━━┳━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┓ - ┃ Column ┃ Match Rate ┃ Mean ┃ Null% ┃ str_len_delta ┃ - ┡━━━━━━━━╇━━━━━━━━━━━━╇━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━┩ - │ price │ 40.00% │ 0.75 │ 20.0% -> 0.0% (-20.0) │ │ - │ status │ 40.00% │ │ 0.0% -> 40.0% (+40.0) │ 0 │ - └────────┴────────────┴──────┴───────────────────────┴───────────────┘ + ┏━━━━━━━━┳━━━━━━━━━━━━┳━━━━━━┳━━━━━━━┳━━━━━━━━━━━━━━━┓ + ┃ Column ┃ Match Rate ┃ Mean ┃ Trend ┃ str_len_delta ┃ + ┡━━━━━━━━╇━━━━━━━━━━━━╇━━━━━━╇━━━━━━━╇━━━━━━━━━━━━━━━┩ + │ price │ 40.00% │ 0.75 │ up │ │ + │ score │ 0.00% │ │ down │ │ + │ status │ 40.00% │ │ │ 0 │ + └────────┴────────────┴──────┴───────┴───────────────┘ + + Data Inspection + ▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔ + ┏━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━┳━━━━━━━━┓ + ┃ Column ┃ Null% ┃ Distinct ┃ Avg ┃ Max ┃ + ┡━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━╇━━━━━━━━┩ + │ price │ 20.0% -> 0.0% (-20.0) │ 5 -> 5 (+0) │ 30 -> 30.6 (+0.6) │ │ + │ score │ 0.0% -> 100.0% (+100.0) │ 5 -> 1 (-4) │ 3 -> None │ │ + │ status │ 0.0% -> 40.0% (+40.0) │ 5 -> 4 (-1) │ │ e -> x │ + └────────┴─────────────────────────┴─────────────┴───────────────────┴────────┘ diff --git a/tests/summary/fixtures/metrics_null_fraction/gen/pretty_False_perfect_True_top_False_slim_True_sample_rows_True_sample_pk_False.txt b/tests/summary/fixtures/metrics_null_fraction/gen/pretty_False_perfect_True_top_False_slim_True_sample_rows_True_sample_pk_False.txt index 2f849f9..c197aaf 100644 --- a/tests/summary/fixtures/metrics_null_fraction/gen/pretty_False_perfect_True_top_False_slim_True_sample_rows_True_sample_pk_False.txt +++ b/tests/summary/fixtures/metrics_null_fraction/gen/pretty_False_perfect_True_top_False_slim_True_sample_rows_True_sample_pk_False.txt @@ -1,16 +1,25 @@ Rows ▔▔▔▔ - ┏━┯━┯━┯━┯━┓╌╌╌┏━┯━┯━┯━┯━┓╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╮ - ┃ │ │ │ │ ┃ = ┃ │ │ │ │ ┃ 2 equal (40.00%) │ - ┠─┼─┼─┼─┼─┨╌╌╌┠─┼─┼─┼─┼─┨╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌├╴ 5 joined - ┃ │ │ │ │ ┃ ≠ ┃ │ │ │ │ ┃ 3 unequal (60.00%) │ - ┗━┷━┷━┷━┷━┛╌╌╌┗━┷━┷━┷━┷━┛╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╯ + ┏━┯━┯━┯━┯━┓╌╌╌┏━┯━┯━┯━┯━┓╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╮ + ┃ │ │ │ │ ┃ ≠ ┃ │ │ │ │ ┃ 5 unequal (100.00%) │ + ┗━┷━┷━┷━┷━┛╌╌╌┗━┷━┷━┷━┷━┛╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╯ Columns ▔▔▔▔▔▔▔ - ┏━━━━━━━━┳━━━━━━━━━━━━┳━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┓ - ┃ Column ┃ Match Rate ┃ Mean ┃ Null% ┃ str_len_delta ┃ - ┡━━━━━━━━╇━━━━━━━━━━━━╇━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━┩ - │ price │ 40.00% │ 0.75 │ 20.0% -> 0.0% (-20.0) │ │ - │ status │ 40.00% │ │ 0.0% -> 40.0% (+40.0) │ 0 │ - └────────┴────────────┴──────┴───────────────────────┴───────────────┘ + ┏━━━━━━━━┳━━━━━━━━━━━━┳━━━━━━┳━━━━━━━┳━━━━━━━━━━━━━━━┓ + ┃ Column ┃ Match Rate ┃ Mean ┃ Trend ┃ str_len_delta ┃ + ┡━━━━━━━━╇━━━━━━━━━━━━╇━━━━━━╇━━━━━━━╇━━━━━━━━━━━━━━━┩ + │ price │ 40.00% │ 0.75 │ up │ │ + │ score │ 0.00% │ │ down │ │ + │ status │ 40.00% │ │ │ 0 │ + └────────┴────────────┴──────┴───────┴───────────────┘ + + Data Inspection + ▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔ + ┏━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━┳━━━━━━━━┓ + ┃ Column ┃ Null% ┃ Distinct ┃ Avg ┃ Max ┃ + ┡━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━╇━━━━━━━━┩ + │ price │ 20.0% -> 0.0% (-20.0) │ 5 -> 5 (+0) │ 30 -> 30.6 (+0.6) │ │ + │ score │ 0.0% -> 100.0% (+100.0) │ 5 -> 1 (-4) │ 3 -> None │ │ + │ status │ 0.0% -> 40.0% (+40.0) │ 5 -> 4 (-1) │ │ e -> x │ + └────────┴─────────────────────────┴─────────────┴───────────────────┴────────┘ diff --git a/tests/summary/fixtures/metrics_null_fraction/gen/pretty_False_perfect_True_top_True_slim_False_sample_rows_False_sample_pk_False.txt b/tests/summary/fixtures/metrics_null_fraction/gen/pretty_False_perfect_True_top_True_slim_False_sample_rows_False_sample_pk_False.txt index 18568f4..11367dc 100644 --- a/tests/summary/fixtures/metrics_null_fraction/gen/pretty_False_perfect_True_top_True_slim_False_sample_rows_False_sample_pk_False.txt +++ b/tests/summary/fixtures/metrics_null_fraction/gen/pretty_False_perfect_True_top_True_slim_False_sample_rows_False_sample_pk_False.txt @@ -5,32 +5,42 @@ Schemas ▔▔▔▔▔▔▔ - Schemas match exactly (column count: 3). + Schemas match exactly (column count: 4). Rows ▔▔▔▔ Left count Right count 5 (no change) 5 - ┏━┯━┯━┯━┯━┓╌╌╌┏━┯━┯━┯━┯━┓╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╮ - ┃ │ │ │ │ ┃ = ┃ │ │ │ │ ┃ 2 equal (40.00%) │ - ┠─┼─┼─┼─┼─┨╌╌╌┠─┼─┼─┼─┼─┨╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌├╴ 5 joined - ┃ │ │ │ │ ┃ ≠ ┃ │ │ │ │ ┃ 3 unequal (60.00%) │ - ┗━┷━┷━┷━┷━┛╌╌╌┗━┷━┷━┷━┷━┛╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╯ + ┏━┯━┯━┯━┯━┓╌╌╌┏━┯━┯━┯━┯━┓╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╮ + ┃ │ │ │ │ ┃ ≠ ┃ │ │ │ │ ┃ 5 unequal (100.00%) │ + ┗━┷━┷━┷━┷━┛╌╌╌┗━┷━┷━┷━┷━┛╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╯ Columns ▔▔▔▔▔▔▔ - ┏━━━━━━━━┳━━━━━━━━━━━━┳━━━━━━┳━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━┓ - ┃ Column ┃ Match Rate ┃ Mean ┃ Null% ┃ str_len_delta ┃ Top Changes ┃ - ┡━━━━━━━━╇━━━━━━━━━━━━╇━━━━━━╇━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━┩ - │ price │ 40.00% │ 0.75 │ 20.0% -> 0.0% │ │ None -> 30.0 │ - │ │ │ │ (-20.0) │ │ (1x) │ - │ │ │ │ │ │ 40.0 -> 42.0 │ - │ │ │ │ │ │ (1x) │ - │ │ │ │ │ │ 20.0 -> 21.0 │ - │ │ │ │ │ │ (1x) │ - ├────────┼────────────┼──────┼───────────────────┼───────────────┼──────────────────┤ - │ status │ 40.00% │ │ 0.0% -> 40.0% │ 0 │ "d" -> None (1x) │ - │ │ │ │ (+40.0) │ │ "c" -> "x" (1x) │ - │ │ │ │ │ │ "b" -> None (1x) │ - └────────┴────────────┴──────┴───────────────────┴───────────────┴──────────────────┘ + ┏━━━━━━━━┳━━━━━━━━━━━━┳━━━━━━┳━━━━━━━┳━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━┓ + ┃ Column ┃ Match Rate ┃ Mean ┃ Trend ┃ str_len_delta ┃ Top Changes ┃ + ┡━━━━━━━━╇━━━━━━━━━━━━╇━━━━━━╇━━━━━━━╇━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━┩ + │ price │ 40.00% │ 0.75 │ up │ │ None -> 30.0 (1x) │ + │ │ │ │ │ │ 40.0 -> 42.0 (1x) │ + │ │ │ │ │ │ 20.0 -> 21.0 (1x) │ + ├────────┼────────────┼──────┼───────┼───────────────┼───────────────────┤ + │ score │ 0.00% │ │ down │ │ 5.0 -> None (1x) │ + │ │ │ │ │ │ 4.0 -> None (1x) │ + │ │ │ │ │ │ 3.0 -> None (1x) │ + │ │ │ │ │ │ (...and 2 others) │ + ├────────┼────────────┼──────┼───────┼───────────────┼───────────────────┤ + │ status │ 40.00% │ │ │ 0 │ "d" -> None (1x) │ + │ │ │ │ │ │ "c" -> "x" (1x) │ + │ │ │ │ │ │ "b" -> None (1x) │ + └────────┴────────────┴──────┴───────┴───────────────┴───────────────────┘ + + Data Inspection + ▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔ + ┏━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━┳━━━━━━━━┓ + ┃ Column ┃ Null% ┃ Distinct ┃ Avg ┃ Max ┃ + ┡━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━╇━━━━━━━━┩ + │ price │ 20.0% -> 0.0% (-20.0) │ 5 -> 5 (+0) │ 30 -> 30.6 (+0.6) │ │ + │ score │ 0.0% -> 100.0% (+100.0) │ 5 -> 1 (-4) │ 3 -> None │ │ + │ status │ 0.0% -> 40.0% (+40.0) │ 5 -> 4 (-1) │ │ e -> x │ + └────────┴─────────────────────────┴─────────────┴───────────────────┴────────┘ diff --git a/tests/summary/fixtures/metrics_null_fraction/gen/pretty_False_perfect_True_top_True_slim_False_sample_rows_True_sample_pk_True.txt b/tests/summary/fixtures/metrics_null_fraction/gen/pretty_False_perfect_True_top_True_slim_False_sample_rows_True_sample_pk_True.txt index f2a498b..52011d2 100644 --- a/tests/summary/fixtures/metrics_null_fraction/gen/pretty_False_perfect_True_top_True_slim_False_sample_rows_True_sample_pk_True.txt +++ b/tests/summary/fixtures/metrics_null_fraction/gen/pretty_False_perfect_True_top_True_slim_False_sample_rows_True_sample_pk_True.txt @@ -5,35 +5,42 @@ Schemas ▔▔▔▔▔▔▔ - Schemas match exactly (column count: 3). + Schemas match exactly (column count: 4). Rows ▔▔▔▔ Left count Right count 5 (no change) 5 - ┏━┯━┯━┯━┯━┓╌╌╌┏━┯━┯━┯━┯━┓╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╮ - ┃ │ │ │ │ ┃ = ┃ │ │ │ │ ┃ 2 equal (40.00%) │ - ┠─┼─┼─┼─┼─┨╌╌╌┠─┼─┼─┼─┼─┨╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌├╴ 5 joined - ┃ │ │ │ │ ┃ ≠ ┃ │ │ │ │ ┃ 3 unequal (60.00%) │ - ┗━┷━┷━┷━┷━┛╌╌╌┗━┷━┷━┷━┷━┛╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╯ + ┏━┯━┯━┯━┯━┓╌╌╌┏━┯━┯━┯━┯━┓╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╮ + ┃ │ │ │ │ ┃ ≠ ┃ │ │ │ │ ┃ 5 unequal (100.00%) │ + ┗━┷━┷━┷━┷━┛╌╌╌┗━┷━┷━┷━┷━┛╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╯ Columns ▔▔▔▔▔▔▔ - ┏━━━━━━━━┳━━━━━━━━━━━━┳━━━━━━┳━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━┓ - ┃ Column ┃ Match Rate ┃ Mean ┃ Null% ┃ str_len_delta ┃ Top Changes ┃ - ┡━━━━━━━━╇━━━━━━━━━━━━╇━━━━━━╇━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━┩ - │ price │ 40.00% │ 0.75 │ 20.0% -> 0.0% │ │ None -> 30.0 │ - │ │ │ │ (-20.0) │ │ (1x, e.g. 3) │ - │ │ │ │ │ │ 40.0 -> 42.0 │ - │ │ │ │ │ │ (1x, e.g. 4) │ - │ │ │ │ │ │ 20.0 -> 21.0 │ - │ │ │ │ │ │ (1x, e.g. 2) │ - ├────────┼────────────┼──────┼───────────────────┼───────────────┼──────────────────┤ - │ status │ 40.00% │ │ 0.0% -> 40.0% │ 0 │ "d" -> None (1x, │ - │ │ │ │ (+40.0) │ │ e.g. 4) │ - │ │ │ │ │ │ "c" -> "x" (1x, │ - │ │ │ │ │ │ e.g. 3) │ - │ │ │ │ │ │ "b" -> None (1x, │ - │ │ │ │ │ │ e.g. 2) │ - └────────┴────────────┴──────┴───────────────────┴───────────────┴──────────────────┘ + ┏━━━━━━━━┳━━━━━━━━━━━━┳━━━━━━┳━━━━━━━┳━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━┓ + ┃ Column ┃ Match Rate ┃ Mean ┃ Trend ┃ str_len_delta ┃ Top Changes ┃ + ┡━━━━━━━━╇━━━━━━━━━━━━╇━━━━━━╇━━━━━━━╇━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━┩ + │ price │ 40.00% │ 0.75 │ up │ │ None -> 30.0 (1x, e.g. 3) │ + │ │ │ │ │ │ 40.0 -> 42.0 (1x, e.g. 4) │ + │ │ │ │ │ │ 20.0 -> 21.0 (1x, e.g. 2) │ + ├────────┼────────────┼──────┼───────┼───────────────┼───────────────────────────┤ + │ score │ 0.00% │ │ down │ │ 5.0 -> None (1x, e.g. 5) │ + │ │ │ │ │ │ 4.0 -> None (1x, e.g. 4) │ + │ │ │ │ │ │ 3.0 -> None (1x, e.g. 3) │ + │ │ │ │ │ │ (...and 2 others) │ + ├────────┼────────────┼──────┼───────┼───────────────┼───────────────────────────┤ + │ status │ 40.00% │ │ │ 0 │ "d" -> None (1x, e.g. 4) │ + │ │ │ │ │ │ "c" -> "x" (1x, e.g. 3) │ + │ │ │ │ │ │ "b" -> None (1x, e.g. 2) │ + └────────┴────────────┴──────┴───────┴───────────────┴───────────────────────────┘ + + Data Inspection + ▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔ + ┏━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━┳━━━━━━━━┓ + ┃ Column ┃ Null% ┃ Distinct ┃ Avg ┃ Max ┃ + ┡━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━╇━━━━━━━━┩ + │ price │ 20.0% -> 0.0% (-20.0) │ 5 -> 5 (+0) │ 30 -> 30.6 (+0.6) │ │ + │ score │ 0.0% -> 100.0% (+100.0) │ 5 -> 1 (-4) │ 3 -> None │ │ + │ status │ 0.0% -> 40.0% (+40.0) │ 5 -> 4 (-1) │ │ e -> x │ + └────────┴─────────────────────────┴─────────────┴───────────────────┴────────┘ diff --git a/tests/summary/fixtures/metrics_null_fraction/gen/pretty_False_perfect_True_top_True_slim_True_sample_rows_False_sample_pk_False.txt b/tests/summary/fixtures/metrics_null_fraction/gen/pretty_False_perfect_True_top_True_slim_True_sample_rows_False_sample_pk_False.txt index 06d07fe..f74f9a2 100644 --- a/tests/summary/fixtures/metrics_null_fraction/gen/pretty_False_perfect_True_top_True_slim_True_sample_rows_False_sample_pk_False.txt +++ b/tests/summary/fixtures/metrics_null_fraction/gen/pretty_False_perfect_True_top_True_slim_True_sample_rows_False_sample_pk_False.txt @@ -1,24 +1,34 @@ Rows ▔▔▔▔ - ┏━┯━┯━┯━┯━┓╌╌╌┏━┯━┯━┯━┯━┓╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╮ - ┃ │ │ │ │ ┃ = ┃ │ │ │ │ ┃ 2 equal (40.00%) │ - ┠─┼─┼─┼─┼─┨╌╌╌┠─┼─┼─┼─┼─┨╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌├╴ 5 joined - ┃ │ │ │ │ ┃ ≠ ┃ │ │ │ │ ┃ 3 unequal (60.00%) │ - ┗━┷━┷━┷━┷━┛╌╌╌┗━┷━┷━┷━┷━┛╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╯ + ┏━┯━┯━┯━┯━┓╌╌╌┏━┯━┯━┯━┯━┓╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╮ + ┃ │ │ │ │ ┃ ≠ ┃ │ │ │ │ ┃ 5 unequal (100.00%) │ + ┗━┷━┷━┷━┷━┛╌╌╌┗━┷━┷━┷━┷━┛╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╯ Columns ▔▔▔▔▔▔▔ - ┏━━━━━━━━┳━━━━━━━━━━━━┳━━━━━━┳━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━┓ - ┃ Column ┃ Match Rate ┃ Mean ┃ Null% ┃ str_len_delta ┃ Top Changes ┃ - ┡━━━━━━━━╇━━━━━━━━━━━━╇━━━━━━╇━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━┩ - │ price │ 40.00% │ 0.75 │ 20.0% -> 0.0% │ │ None -> 30.0 │ - │ │ │ │ (-20.0) │ │ (1x) │ - │ │ │ │ │ │ 40.0 -> 42.0 │ - │ │ │ │ │ │ (1x) │ - │ │ │ │ │ │ 20.0 -> 21.0 │ - │ │ │ │ │ │ (1x) │ - ├────────┼────────────┼──────┼───────────────────┼───────────────┼──────────────────┤ - │ status │ 40.00% │ │ 0.0% -> 40.0% │ 0 │ "d" -> None (1x) │ - │ │ │ │ (+40.0) │ │ "c" -> "x" (1x) │ - │ │ │ │ │ │ "b" -> None (1x) │ - └────────┴────────────┴──────┴───────────────────┴───────────────┴──────────────────┘ + ┏━━━━━━━━┳━━━━━━━━━━━━┳━━━━━━┳━━━━━━━┳━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━┓ + ┃ Column ┃ Match Rate ┃ Mean ┃ Trend ┃ str_len_delta ┃ Top Changes ┃ + ┡━━━━━━━━╇━━━━━━━━━━━━╇━━━━━━╇━━━━━━━╇━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━┩ + │ price │ 40.00% │ 0.75 │ up │ │ None -> 30.0 (1x) │ + │ │ │ │ │ │ 40.0 -> 42.0 (1x) │ + │ │ │ │ │ │ 20.0 -> 21.0 (1x) │ + ├────────┼────────────┼──────┼───────┼───────────────┼───────────────────┤ + │ score │ 0.00% │ │ down │ │ 5.0 -> None (1x) │ + │ │ │ │ │ │ 4.0 -> None (1x) │ + │ │ │ │ │ │ 3.0 -> None (1x) │ + │ │ │ │ │ │ (...and 2 others) │ + ├────────┼────────────┼──────┼───────┼───────────────┼───────────────────┤ + │ status │ 40.00% │ │ │ 0 │ "d" -> None (1x) │ + │ │ │ │ │ │ "c" -> "x" (1x) │ + │ │ │ │ │ │ "b" -> None (1x) │ + └────────┴────────────┴──────┴───────┴───────────────┴───────────────────┘ + + Data Inspection + ▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔ + ┏━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━┳━━━━━━━━┓ + ┃ Column ┃ Null% ┃ Distinct ┃ Avg ┃ Max ┃ + ┡━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━╇━━━━━━━━┩ + │ price │ 20.0% -> 0.0% (-20.0) │ 5 -> 5 (+0) │ 30 -> 30.6 (+0.6) │ │ + │ score │ 0.0% -> 100.0% (+100.0) │ 5 -> 1 (-4) │ 3 -> None │ │ + │ status │ 0.0% -> 40.0% (+40.0) │ 5 -> 4 (-1) │ │ e -> x │ + └────────┴─────────────────────────┴─────────────┴───────────────────┴────────┘ diff --git a/tests/summary/fixtures/metrics_null_fraction/gen/pretty_False_perfect_True_top_True_slim_True_sample_rows_True_sample_pk_True.txt b/tests/summary/fixtures/metrics_null_fraction/gen/pretty_False_perfect_True_top_True_slim_True_sample_rows_True_sample_pk_True.txt index 01c654b..ae277d0 100644 --- a/tests/summary/fixtures/metrics_null_fraction/gen/pretty_False_perfect_True_top_True_slim_True_sample_rows_True_sample_pk_True.txt +++ b/tests/summary/fixtures/metrics_null_fraction/gen/pretty_False_perfect_True_top_True_slim_True_sample_rows_True_sample_pk_True.txt @@ -1,27 +1,34 @@ Rows ▔▔▔▔ - ┏━┯━┯━┯━┯━┓╌╌╌┏━┯━┯━┯━┯━┓╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╮ - ┃ │ │ │ │ ┃ = ┃ │ │ │ │ ┃ 2 equal (40.00%) │ - ┠─┼─┼─┼─┼─┨╌╌╌┠─┼─┼─┼─┼─┨╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌├╴ 5 joined - ┃ │ │ │ │ ┃ ≠ ┃ │ │ │ │ ┃ 3 unequal (60.00%) │ - ┗━┷━┷━┷━┷━┛╌╌╌┗━┷━┷━┷━┷━┛╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╯ + ┏━┯━┯━┯━┯━┓╌╌╌┏━┯━┯━┯━┯━┓╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╮ + ┃ │ │ │ │ ┃ ≠ ┃ │ │ │ │ ┃ 5 unequal (100.00%) │ + ┗━┷━┷━┷━┷━┛╌╌╌┗━┷━┷━┷━┷━┛╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╯ Columns ▔▔▔▔▔▔▔ - ┏━━━━━━━━┳━━━━━━━━━━━━┳━━━━━━┳━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━┓ - ┃ Column ┃ Match Rate ┃ Mean ┃ Null% ┃ str_len_delta ┃ Top Changes ┃ - ┡━━━━━━━━╇━━━━━━━━━━━━╇━━━━━━╇━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━┩ - │ price │ 40.00% │ 0.75 │ 20.0% -> 0.0% │ │ None -> 30.0 │ - │ │ │ │ (-20.0) │ │ (1x, e.g. 3) │ - │ │ │ │ │ │ 40.0 -> 42.0 │ - │ │ │ │ │ │ (1x, e.g. 4) │ - │ │ │ │ │ │ 20.0 -> 21.0 │ - │ │ │ │ │ │ (1x, e.g. 2) │ - ├────────┼────────────┼──────┼───────────────────┼───────────────┼──────────────────┤ - │ status │ 40.00% │ │ 0.0% -> 40.0% │ 0 │ "d" -> None (1x, │ - │ │ │ │ (+40.0) │ │ e.g. 4) │ - │ │ │ │ │ │ "c" -> "x" (1x, │ - │ │ │ │ │ │ e.g. 3) │ - │ │ │ │ │ │ "b" -> None (1x, │ - │ │ │ │ │ │ e.g. 2) │ - └────────┴────────────┴──────┴───────────────────┴───────────────┴──────────────────┘ + ┏━━━━━━━━┳━━━━━━━━━━━━┳━━━━━━┳━━━━━━━┳━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━┓ + ┃ Column ┃ Match Rate ┃ Mean ┃ Trend ┃ str_len_delta ┃ Top Changes ┃ + ┡━━━━━━━━╇━━━━━━━━━━━━╇━━━━━━╇━━━━━━━╇━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━┩ + │ price │ 40.00% │ 0.75 │ up │ │ None -> 30.0 (1x, e.g. 3) │ + │ │ │ │ │ │ 40.0 -> 42.0 (1x, e.g. 4) │ + │ │ │ │ │ │ 20.0 -> 21.0 (1x, e.g. 2) │ + ├────────┼────────────┼──────┼───────┼───────────────┼───────────────────────────┤ + │ score │ 0.00% │ │ down │ │ 5.0 -> None (1x, e.g. 5) │ + │ │ │ │ │ │ 4.0 -> None (1x, e.g. 4) │ + │ │ │ │ │ │ 3.0 -> None (1x, e.g. 3) │ + │ │ │ │ │ │ (...and 2 others) │ + ├────────┼────────────┼──────┼───────┼───────────────┼───────────────────────────┤ + │ status │ 40.00% │ │ │ 0 │ "d" -> None (1x, e.g. 4) │ + │ │ │ │ │ │ "c" -> "x" (1x, e.g. 3) │ + │ │ │ │ │ │ "b" -> None (1x, e.g. 2) │ + └────────┴────────────┴──────┴───────┴───────────────┴───────────────────────────┘ + + Data Inspection + ▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔ + ┏━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━┳━━━━━━━━┓ + ┃ Column ┃ Null% ┃ Distinct ┃ Avg ┃ Max ┃ + ┡━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━╇━━━━━━━━┩ + │ price │ 20.0% -> 0.0% (-20.0) │ 5 -> 5 (+0) │ 30 -> 30.6 (+0.6) │ │ + │ score │ 0.0% -> 100.0% (+100.0) │ 5 -> 1 (-4) │ 3 -> None │ │ + │ status │ 0.0% -> 40.0% (+40.0) │ 5 -> 4 (-1) │ │ e -> x │ + └────────┴─────────────────────────┴─────────────┴───────────────────┴────────┘ diff --git a/tests/summary/fixtures/metrics_null_fraction/gen/pretty_True_perfect_False_top_False_slim_False_sample_rows_False_sample_pk_False.txt b/tests/summary/fixtures/metrics_null_fraction/gen/pretty_True_perfect_False_top_False_slim_False_sample_rows_False_sample_pk_False.txt index 3a2a43b..4cb5f94 100644 --- a/tests/summary/fixtures/metrics_null_fraction/gen/pretty_True_perfect_False_top_False_slim_False_sample_rows_False_sample_pk_False.txt +++ b/tests/summary/fixtures/metrics_null_fraction/gen/pretty_True_perfect_False_top_False_slim_False_sample_rows_False_sample_pk_False.txt @@ -5,24 +5,33 @@ Schemas ▔▔▔▔▔▔▔ - Schemas match exactly (column count: 3). + Schemas match exactly (column count: 4). Rows ▔▔▔▔ Left count Right count 5 (no change) 5 - ┏━┯━┯━┯━┯━┓╌╌╌┏━┯━┯━┯━┯━┓╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╮ - ┃ │ │ │ │ ┃ = ┃ │ │ │ │ ┃ 2 equal (40.00%) │ - ┠─┼─┼─┼─┼─┨╌╌╌┠─┼─┼─┼─┼─┨╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌├╴ 5 joined - ┃ │ │ │ │ ┃ ≠ ┃ │ │ │ │ ┃ 3 unequal (60.00%) │ - ┗━┷━┷━┷━┷━┛╌╌╌┗━┷━┷━┷━┷━┛╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╯ + ┏━┯━┯━┯━┯━┓╌╌╌┏━┯━┯━┯━┯━┓╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╮ + ┃ │ │ │ │ ┃ ≠ ┃ │ │ │ │ ┃ 5 unequal (100.00%) │ + ┗━┷━┷━┷━┷━┛╌╌╌┗━┷━┷━┷━┷━┛╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╯ Columns ▔▔▔▔▔▔▔ - ┏━━━━━━━━┳━━━━━━━━━━━━┳━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┓ - ┃ Column ┃ Match Rate ┃ Mean ┃  Null% ┃ str_len_delta ┃ - ┡━━━━━━━━╇━━━━━━━━━━━━╇━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━┩ - │ price  │ 40.00% │ 0.75 │ 20.0% -> 0.0% (-20.0) │ │ - │ status │ 40.00% │ │ 0.0% -> 40.0% (+40.0) │ 0 │ - └────────┴────────────┴──────┴───────────────────────┴───────────────┘ + ┏━━━━━━━━┳━━━━━━━━━━━━┳━━━━━━┳━━━━━━━┳━━━━━━━━━━━━━━━┓ + ┃ Column ┃ Match Rate ┃ Mean ┃ Trend ┃ str_len_delta ┃ + ┡━━━━━━━━╇━━━━━━━━━━━━╇━━━━━━╇━━━━━━━╇━━━━━━━━━━━━━━━┩ + │ price  │ 40.00% │ 0.75 │ up │ │ + │ score  │ 0.00% │ │ down │ │ + │ status │ 40.00% │ │ │ 0 │ + └────────┴────────────┴──────┴───────┴───────────────┘ + + Data Inspection + ▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔ + ┏━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━┳━━━━━━━━┓ + ┃ Column ┃  Null% ┃  Distinct ┃  Avg ┃  Max ┃ + ┡━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━╇━━━━━━━━┩ + │ price  │ 20.0% -> 0.0% (-20.0) │ 5 -> 5 (+0) │ 30 -> 30.6 (+0.6) │ │ + │ score  │ 0.0% -> 100.0% (+100.0) │ 5 -> 1 (-4) │ 3 -> None │ │ + │ status │ 0.0% -> 40.0% (+40.0) │ 5 -> 4 (-1) │ │ e -> x │ + └────────┴─────────────────────────┴─────────────┴───────────────────┴────────┘ diff --git a/tests/summary/fixtures/metrics_null_fraction/gen/pretty_True_perfect_False_top_False_slim_False_sample_rows_True_sample_pk_False.txt b/tests/summary/fixtures/metrics_null_fraction/gen/pretty_True_perfect_False_top_False_slim_False_sample_rows_True_sample_pk_False.txt index 3a2a43b..4cb5f94 100644 --- a/tests/summary/fixtures/metrics_null_fraction/gen/pretty_True_perfect_False_top_False_slim_False_sample_rows_True_sample_pk_False.txt +++ b/tests/summary/fixtures/metrics_null_fraction/gen/pretty_True_perfect_False_top_False_slim_False_sample_rows_True_sample_pk_False.txt @@ -5,24 +5,33 @@ Schemas ▔▔▔▔▔▔▔ - Schemas match exactly (column count: 3). + Schemas match exactly (column count: 4). Rows ▔▔▔▔ Left count Right count 5 (no change) 5 - ┏━┯━┯━┯━┯━┓╌╌╌┏━┯━┯━┯━┯━┓╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╮ - ┃ │ │ │ │ ┃ = ┃ │ │ │ │ ┃ 2 equal (40.00%) │ - ┠─┼─┼─┼─┼─┨╌╌╌┠─┼─┼─┼─┼─┨╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌├╴ 5 joined - ┃ │ │ │ │ ┃ ≠ ┃ │ │ │ │ ┃ 3 unequal (60.00%) │ - ┗━┷━┷━┷━┷━┛╌╌╌┗━┷━┷━┷━┷━┛╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╯ + ┏━┯━┯━┯━┯━┓╌╌╌┏━┯━┯━┯━┯━┓╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╮ + ┃ │ │ │ │ ┃ ≠ ┃ │ │ │ │ ┃ 5 unequal (100.00%) │ + ┗━┷━┷━┷━┷━┛╌╌╌┗━┷━┷━┷━┷━┛╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╯ Columns ▔▔▔▔▔▔▔ - ┏━━━━━━━━┳━━━━━━━━━━━━┳━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┓ - ┃ Column ┃ Match Rate ┃ Mean ┃  Null% ┃ str_len_delta ┃ - ┡━━━━━━━━╇━━━━━━━━━━━━╇━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━┩ - │ price  │ 40.00% │ 0.75 │ 20.0% -> 0.0% (-20.0) │ │ - │ status │ 40.00% │ │ 0.0% -> 40.0% (+40.0) │ 0 │ - └────────┴────────────┴──────┴───────────────────────┴───────────────┘ + ┏━━━━━━━━┳━━━━━━━━━━━━┳━━━━━━┳━━━━━━━┳━━━━━━━━━━━━━━━┓ + ┃ Column ┃ Match Rate ┃ Mean ┃ Trend ┃ str_len_delta ┃ + ┡━━━━━━━━╇━━━━━━━━━━━━╇━━━━━━╇━━━━━━━╇━━━━━━━━━━━━━━━┩ + │ price  │ 40.00% │ 0.75 │ up │ │ + │ score  │ 0.00% │ │ down │ │ + │ status │ 40.00% │ │ │ 0 │ + └────────┴────────────┴──────┴───────┴───────────────┘ + + Data Inspection + ▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔ + ┏━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━┳━━━━━━━━┓ + ┃ Column ┃  Null% ┃  Distinct ┃  Avg ┃  Max ┃ + ┡━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━╇━━━━━━━━┩ + │ price  │ 20.0% -> 0.0% (-20.0) │ 5 -> 5 (+0) │ 30 -> 30.6 (+0.6) │ │ + │ score  │ 0.0% -> 100.0% (+100.0) │ 5 -> 1 (-4) │ 3 -> None │ │ + │ status │ 0.0% -> 40.0% (+40.0) │ 5 -> 4 (-1) │ │ e -> x │ + └────────┴─────────────────────────┴─────────────┴───────────────────┴────────┘ diff --git a/tests/summary/fixtures/metrics_null_fraction/gen/pretty_True_perfect_False_top_False_slim_True_sample_rows_False_sample_pk_False.txt b/tests/summary/fixtures/metrics_null_fraction/gen/pretty_True_perfect_False_top_False_slim_True_sample_rows_False_sample_pk_False.txt index 1316f6b..dfda029 100644 --- a/tests/summary/fixtures/metrics_null_fraction/gen/pretty_True_perfect_False_top_False_slim_True_sample_rows_False_sample_pk_False.txt +++ b/tests/summary/fixtures/metrics_null_fraction/gen/pretty_True_perfect_False_top_False_slim_True_sample_rows_False_sample_pk_False.txt @@ -1,16 +1,25 @@ Rows ▔▔▔▔ - ┏━┯━┯━┯━┯━┓╌╌╌┏━┯━┯━┯━┯━┓╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╮ - ┃ │ │ │ │ ┃ = ┃ │ │ │ │ ┃ 2 equal (40.00%) │ - ┠─┼─┼─┼─┼─┨╌╌╌┠─┼─┼─┼─┼─┨╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌├╴ 5 joined - ┃ │ │ │ │ ┃ ≠ ┃ │ │ │ │ ┃ 3 unequal (60.00%) │ - ┗━┷━┷━┷━┷━┛╌╌╌┗━┷━┷━┷━┷━┛╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╯ + ┏━┯━┯━┯━┯━┓╌╌╌┏━┯━┯━┯━┯━┓╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╮ + ┃ │ │ │ │ ┃ ≠ ┃ │ │ │ │ ┃ 5 unequal (100.00%) │ + ┗━┷━┷━┷━┷━┛╌╌╌┗━┷━┷━┷━┷━┛╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╯ Columns ▔▔▔▔▔▔▔ - ┏━━━━━━━━┳━━━━━━━━━━━━┳━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┓ - ┃ Column ┃ Match Rate ┃ Mean ┃  Null% ┃ str_len_delta ┃ - ┡━━━━━━━━╇━━━━━━━━━━━━╇━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━┩ - │ price  │ 40.00% │ 0.75 │ 20.0% -> 0.0% (-20.0) │ │ - │ status │ 40.00% │ │ 0.0% -> 40.0% (+40.0) │ 0 │ - └────────┴────────────┴──────┴───────────────────────┴───────────────┘ + ┏━━━━━━━━┳━━━━━━━━━━━━┳━━━━━━┳━━━━━━━┳━━━━━━━━━━━━━━━┓ + ┃ Column ┃ Match Rate ┃ Mean ┃ Trend ┃ str_len_delta ┃ + ┡━━━━━━━━╇━━━━━━━━━━━━╇━━━━━━╇━━━━━━━╇━━━━━━━━━━━━━━━┩ + │ price  │ 40.00% │ 0.75 │ up │ │ + │ score  │ 0.00% │ │ down │ │ + │ status │ 40.00% │ │ │ 0 │ + └────────┴────────────┴──────┴───────┴───────────────┘ + + Data Inspection + ▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔ + ┏━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━┳━━━━━━━━┓ + ┃ Column ┃  Null% ┃  Distinct ┃  Avg ┃  Max ┃ + ┡━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━╇━━━━━━━━┩ + │ price  │ 20.0% -> 0.0% (-20.0) │ 5 -> 5 (+0) │ 30 -> 30.6 (+0.6) │ │ + │ score  │ 0.0% -> 100.0% (+100.0) │ 5 -> 1 (-4) │ 3 -> None │ │ + │ status │ 0.0% -> 40.0% (+40.0) │ 5 -> 4 (-1) │ │ e -> x │ + └────────┴─────────────────────────┴─────────────┴───────────────────┴────────┘ diff --git a/tests/summary/fixtures/metrics_null_fraction/gen/pretty_True_perfect_False_top_False_slim_True_sample_rows_True_sample_pk_False.txt b/tests/summary/fixtures/metrics_null_fraction/gen/pretty_True_perfect_False_top_False_slim_True_sample_rows_True_sample_pk_False.txt index 1316f6b..dfda029 100644 --- a/tests/summary/fixtures/metrics_null_fraction/gen/pretty_True_perfect_False_top_False_slim_True_sample_rows_True_sample_pk_False.txt +++ b/tests/summary/fixtures/metrics_null_fraction/gen/pretty_True_perfect_False_top_False_slim_True_sample_rows_True_sample_pk_False.txt @@ -1,16 +1,25 @@ Rows ▔▔▔▔ - ┏━┯━┯━┯━┯━┓╌╌╌┏━┯━┯━┯━┯━┓╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╮ - ┃ │ │ │ │ ┃ = ┃ │ │ │ │ ┃ 2 equal (40.00%) │ - ┠─┼─┼─┼─┼─┨╌╌╌┠─┼─┼─┼─┼─┨╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌├╴ 5 joined - ┃ │ │ │ │ ┃ ≠ ┃ │ │ │ │ ┃ 3 unequal (60.00%) │ - ┗━┷━┷━┷━┷━┛╌╌╌┗━┷━┷━┷━┷━┛╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╯ + ┏━┯━┯━┯━┯━┓╌╌╌┏━┯━┯━┯━┯━┓╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╮ + ┃ │ │ │ │ ┃ ≠ ┃ │ │ │ │ ┃ 5 unequal (100.00%) │ + ┗━┷━┷━┷━┷━┛╌╌╌┗━┷━┷━┷━┷━┛╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╯ Columns ▔▔▔▔▔▔▔ - ┏━━━━━━━━┳━━━━━━━━━━━━┳━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┓ - ┃ Column ┃ Match Rate ┃ Mean ┃  Null% ┃ str_len_delta ┃ - ┡━━━━━━━━╇━━━━━━━━━━━━╇━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━┩ - │ price  │ 40.00% │ 0.75 │ 20.0% -> 0.0% (-20.0) │ │ - │ status │ 40.00% │ │ 0.0% -> 40.0% (+40.0) │ 0 │ - └────────┴────────────┴──────┴───────────────────────┴───────────────┘ + ┏━━━━━━━━┳━━━━━━━━━━━━┳━━━━━━┳━━━━━━━┳━━━━━━━━━━━━━━━┓ + ┃ Column ┃ Match Rate ┃ Mean ┃ Trend ┃ str_len_delta ┃ + ┡━━━━━━━━╇━━━━━━━━━━━━╇━━━━━━╇━━━━━━━╇━━━━━━━━━━━━━━━┩ + │ price  │ 40.00% │ 0.75 │ up │ │ + │ score  │ 0.00% │ │ down │ │ + │ status │ 40.00% │ │ │ 0 │ + └────────┴────────────┴──────┴───────┴───────────────┘ + + Data Inspection + ▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔ + ┏━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━┳━━━━━━━━┓ + ┃ Column ┃  Null% ┃  Distinct ┃  Avg ┃  Max ┃ + ┡━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━╇━━━━━━━━┩ + │ price  │ 20.0% -> 0.0% (-20.0) │ 5 -> 5 (+0) │ 30 -> 30.6 (+0.6) │ │ + │ score  │ 0.0% -> 100.0% (+100.0) │ 5 -> 1 (-4) │ 3 -> None │ │ + │ status │ 0.0% -> 40.0% (+40.0) │ 5 -> 4 (-1) │ │ e -> x │ + └────────┴─────────────────────────┴─────────────┴───────────────────┴────────┘ diff --git a/tests/summary/fixtures/metrics_null_fraction/gen/pretty_True_perfect_False_top_True_slim_False_sample_rows_False_sample_pk_False.txt b/tests/summary/fixtures/metrics_null_fraction/gen/pretty_True_perfect_False_top_True_slim_False_sample_rows_False_sample_pk_False.txt index bdca125..ff3bcb9 100644 --- a/tests/summary/fixtures/metrics_null_fraction/gen/pretty_True_perfect_False_top_True_slim_False_sample_rows_False_sample_pk_False.txt +++ b/tests/summary/fixtures/metrics_null_fraction/gen/pretty_True_perfect_False_top_True_slim_False_sample_rows_False_sample_pk_False.txt @@ -5,32 +5,42 @@ Schemas ▔▔▔▔▔▔▔ - Schemas match exactly (column count: 3). + Schemas match exactly (column count: 4). Rows ▔▔▔▔ Left count Right count 5 (no change) 5 - ┏━┯━┯━┯━┯━┓╌╌╌┏━┯━┯━┯━┯━┓╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╮ - ┃ │ │ │ │ ┃ = ┃ │ │ │ │ ┃ 2 equal (40.00%) │ - ┠─┼─┼─┼─┼─┨╌╌╌┠─┼─┼─┼─┼─┨╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌├╴ 5 joined - ┃ │ │ │ │ ┃ ≠ ┃ │ │ │ │ ┃ 3 unequal (60.00%) │ - ┗━┷━┷━┷━┷━┛╌╌╌┗━┷━┷━┷━┷━┛╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╯ + ┏━┯━┯━┯━┯━┓╌╌╌┏━┯━┯━┯━┯━┓╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╮ + ┃ │ │ │ │ ┃ ≠ ┃ │ │ │ │ ┃ 5 unequal (100.00%) │ + ┗━┷━┷━┷━┷━┛╌╌╌┗━┷━┷━┷━┷━┛╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╯ Columns ▔▔▔▔▔▔▔ - ┏━━━━━━━━┳━━━━━━━━━━━━┳━━━━━━┳━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━┓ - ┃ Column ┃ Match Rate ┃ Mean ┃  Null% ┃ str_len_delta ┃  Top Changes ┃ - ┡━━━━━━━━╇━━━━━━━━━━━━╇━━━━━━╇━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━┩ - │ price  │ 40.00% │ 0.75 │ 20.0% -> 0.0% │ │ None -> 30.0 │ - │ │ │ │ (-20.0) │ │ (1x) │ - │ │ │ │ │ │ 40.0 -> 42.0 │ - │ │ │ │ │ │ (1x) │ - │ │ │ │ │ │ 20.0 -> 21.0 │ - │ │ │ │ │ │ (1x) │ - ├────────┼────────────┼──────┼───────────────────┼───────────────┼──────────────────┤ - │ status │ 40.00% │ │ 0.0% -> 40.0% │ 0 │ "d" -> None (1x) │ - │ │ │ │ (+40.0) │ │ "c" -> "x" (1x) │ - │ │ │ │ │ │ "b" -> None (1x) │ - └────────┴────────────┴──────┴───────────────────┴───────────────┴──────────────────┘ + ┏━━━━━━━━┳━━━━━━━━━━━━┳━━━━━━┳━━━━━━━┳━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━┓ + ┃ Column ┃ Match Rate ┃ Mean ┃ Trend ┃ str_len_delta ┃  Top Changes ┃ + ┡━━━━━━━━╇━━━━━━━━━━━━╇━━━━━━╇━━━━━━━╇━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━┩ + │ price  │ 40.00% │ 0.75 │ up │ │ None -> 30.0 (1x) │ + │ │ │ │ │ │ 40.0 -> 42.0 (1x) │ + │ │ │ │ │ │ 20.0 -> 21.0 (1x) │ + ├────────┼────────────┼──────┼───────┼───────────────┼───────────────────┤ + │ score  │ 0.00% │ │ down │ │ 5.0 -> None (1x) │ + │ │ │ │ │ │ 4.0 -> None (1x) │ + │ │ │ │ │ │ 3.0 -> None (1x) │ + │ │ │ │ │ │ (...and 2 others) │ + ├────────┼────────────┼──────┼───────┼───────────────┼───────────────────┤ + │ status │ 40.00% │ │ │ 0 │ "d" -> None (1x) │ + │ │ │ │ │ │ "c" -> "x" (1x) │ + │ │ │ │ │ │ "b" -> None (1x) │ + └────────┴────────────┴──────┴───────┴───────────────┴───────────────────┘ + + Data Inspection + ▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔ + ┏━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━┳━━━━━━━━┓ + ┃ Column ┃  Null% ┃  Distinct ┃  Avg ┃  Max ┃ + ┡━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━╇━━━━━━━━┩ + │ price  │ 20.0% -> 0.0% (-20.0) │ 5 -> 5 (+0) │ 30 -> 30.6 (+0.6) │ │ + │ score  │ 0.0% -> 100.0% (+100.0) │ 5 -> 1 (-4) │ 3 -> None │ │ + │ status │ 0.0% -> 40.0% (+40.0) │ 5 -> 4 (-1) │ │ e -> x │ + └────────┴─────────────────────────┴─────────────┴───────────────────┴────────┘ diff --git a/tests/summary/fixtures/metrics_null_fraction/gen/pretty_True_perfect_False_top_True_slim_False_sample_rows_True_sample_pk_True.txt b/tests/summary/fixtures/metrics_null_fraction/gen/pretty_True_perfect_False_top_True_slim_False_sample_rows_True_sample_pk_True.txt index cdd7114..877050f 100644 --- a/tests/summary/fixtures/metrics_null_fraction/gen/pretty_True_perfect_False_top_True_slim_False_sample_rows_True_sample_pk_True.txt +++ b/tests/summary/fixtures/metrics_null_fraction/gen/pretty_True_perfect_False_top_True_slim_False_sample_rows_True_sample_pk_True.txt @@ -5,35 +5,42 @@ Schemas ▔▔▔▔▔▔▔ - Schemas match exactly (column count: 3). + Schemas match exactly (column count: 4). Rows ▔▔▔▔ Left count Right count 5 (no change) 5 - ┏━┯━┯━┯━┯━┓╌╌╌┏━┯━┯━┯━┯━┓╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╮ - ┃ │ │ │ │ ┃ = ┃ │ │ │ │ ┃ 2 equal (40.00%) │ - ┠─┼─┼─┼─┼─┨╌╌╌┠─┼─┼─┼─┼─┨╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌├╴ 5 joined - ┃ │ │ │ │ ┃ ≠ ┃ │ │ │ │ ┃ 3 unequal (60.00%) │ - ┗━┷━┷━┷━┷━┛╌╌╌┗━┷━┷━┷━┷━┛╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╯ + ┏━┯━┯━┯━┯━┓╌╌╌┏━┯━┯━┯━┯━┓╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╮ + ┃ │ │ │ │ ┃ ≠ ┃ │ │ │ │ ┃ 5 unequal (100.00%) │ + ┗━┷━┷━┷━┷━┛╌╌╌┗━┷━┷━┷━┷━┛╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╯ Columns ▔▔▔▔▔▔▔ - ┏━━━━━━━━┳━━━━━━━━━━━━┳━━━━━━┳━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━┓ - ┃ Column ┃ Match Rate ┃ Mean ┃  Null% ┃ str_len_delta ┃  Top Changes ┃ - ┡━━━━━━━━╇━━━━━━━━━━━━╇━━━━━━╇━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━┩ - │ price  │ 40.00% │ 0.75 │ 20.0% -> 0.0% │ │ None -> 30.0 │ - │ │ │ │ (-20.0) │ │ (1x, e.g. 3) │ - │ │ │ │ │ │ 40.0 -> 42.0 │ - │ │ │ │ │ │ (1x, e.g. 4) │ - │ │ │ │ │ │ 20.0 -> 21.0 │ - │ │ │ │ │ │ (1x, e.g. 2) │ - ├────────┼────────────┼──────┼───────────────────┼───────────────┼──────────────────┤ - │ status │ 40.00% │ │ 0.0% -> 40.0% │ 0 │ "d" -> None (1x, │ - │ │ │ │ (+40.0) │ │ e.g. 4) │ - │ │ │ │ │ │ "c" -> "x" (1x, │ - │ │ │ │ │ │ e.g. 3) │ - │ │ │ │ │ │ "b" -> None (1x, │ - │ │ │ │ │ │ e.g. 2) │ - └────────┴────────────┴──────┴───────────────────┴───────────────┴──────────────────┘ + ┏━━━━━━━━┳━━━━━━━━━━━━┳━━━━━━┳━━━━━━━┳━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━┓ + ┃ Column ┃ Match Rate ┃ Mean ┃ Trend ┃ str_len_delta ┃  Top Changes ┃ + ┡━━━━━━━━╇━━━━━━━━━━━━╇━━━━━━╇━━━━━━━╇━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━┩ + │ price  │ 40.00% │ 0.75 │ up │ │ None -> 30.0 (1x, e.g. 3) │ + │ │ │ │ │ │ 40.0 -> 42.0 (1x, e.g. 4) │ + │ │ │ │ │ │ 20.0 -> 21.0 (1x, e.g. 2) │ + ├────────┼────────────┼──────┼───────┼───────────────┼───────────────────────────┤ + │ score  │ 0.00% │ │ down │ │ 5.0 -> None (1x, e.g. 5) │ + │ │ │ │ │ │ 4.0 -> None (1x, e.g. 4) │ + │ │ │ │ │ │ 3.0 -> None (1x, e.g. 3) │ + │ │ │ │ │ │ (...and 2 others) │ + ├────────┼────────────┼──────┼───────┼───────────────┼───────────────────────────┤ + │ status │ 40.00% │ │ │ 0 │ "d" -> None (1x, e.g. 4) │ + │ │ │ │ │ │ "c" -> "x" (1x, e.g. 3) │ + │ │ │ │ │ │ "b" -> None (1x, e.g. 2) │ + └────────┴────────────┴──────┴───────┴───────────────┴───────────────────────────┘ + + Data Inspection + ▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔ + ┏━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━┳━━━━━━━━┓ + ┃ Column ┃  Null% ┃  Distinct ┃  Avg ┃  Max ┃ + ┡━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━╇━━━━━━━━┩ + │ price  │ 20.0% -> 0.0% (-20.0) │ 5 -> 5 (+0) │ 30 -> 30.6 (+0.6) │ │ + │ score  │ 0.0% -> 100.0% (+100.0) │ 5 -> 1 (-4) │ 3 -> None │ │ + │ status │ 0.0% -> 40.0% (+40.0) │ 5 -> 4 (-1) │ │ e -> x │ + └────────┴─────────────────────────┴─────────────┴───────────────────┴────────┘ diff --git a/tests/summary/fixtures/metrics_null_fraction/gen/pretty_True_perfect_False_top_True_slim_True_sample_rows_False_sample_pk_False.txt b/tests/summary/fixtures/metrics_null_fraction/gen/pretty_True_perfect_False_top_True_slim_True_sample_rows_False_sample_pk_False.txt index 370a2d3..40f1837 100644 --- a/tests/summary/fixtures/metrics_null_fraction/gen/pretty_True_perfect_False_top_True_slim_True_sample_rows_False_sample_pk_False.txt +++ b/tests/summary/fixtures/metrics_null_fraction/gen/pretty_True_perfect_False_top_True_slim_True_sample_rows_False_sample_pk_False.txt @@ -1,24 +1,34 @@ Rows ▔▔▔▔ - ┏━┯━┯━┯━┯━┓╌╌╌┏━┯━┯━┯━┯━┓╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╮ - ┃ │ │ │ │ ┃ = ┃ │ │ │ │ ┃ 2 equal (40.00%) │ - ┠─┼─┼─┼─┼─┨╌╌╌┠─┼─┼─┼─┼─┨╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌├╴ 5 joined - ┃ │ │ │ │ ┃ ≠ ┃ │ │ │ │ ┃ 3 unequal (60.00%) │ - ┗━┷━┷━┷━┷━┛╌╌╌┗━┷━┷━┷━┷━┛╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╯ + ┏━┯━┯━┯━┯━┓╌╌╌┏━┯━┯━┯━┯━┓╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╮ + ┃ │ │ │ │ ┃ ≠ ┃ │ │ │ │ ┃ 5 unequal (100.00%) │ + ┗━┷━┷━┷━┷━┛╌╌╌┗━┷━┷━┷━┷━┛╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╯ Columns ▔▔▔▔▔▔▔ - ┏━━━━━━━━┳━━━━━━━━━━━━┳━━━━━━┳━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━┓ - ┃ Column ┃ Match Rate ┃ Mean ┃  Null% ┃ str_len_delta ┃  Top Changes ┃ - ┡━━━━━━━━╇━━━━━━━━━━━━╇━━━━━━╇━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━┩ - │ price  │ 40.00% │ 0.75 │ 20.0% -> 0.0% │ │ None -> 30.0 │ - │ │ │ │ (-20.0) │ │ (1x) │ - │ │ │ │ │ │ 40.0 -> 42.0 │ - │ │ │ │ │ │ (1x) │ - │ │ │ │ │ │ 20.0 -> 21.0 │ - │ │ │ │ │ │ (1x) │ - ├────────┼────────────┼──────┼───────────────────┼───────────────┼──────────────────┤ - │ status │ 40.00% │ │ 0.0% -> 40.0% │ 0 │ "d" -> None (1x) │ - │ │ │ │ (+40.0) │ │ "c" -> "x" (1x) │ - │ │ │ │ │ │ "b" -> None (1x) │ - └────────┴────────────┴──────┴───────────────────┴───────────────┴──────────────────┘ + ┏━━━━━━━━┳━━━━━━━━━━━━┳━━━━━━┳━━━━━━━┳━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━┓ + ┃ Column ┃ Match Rate ┃ Mean ┃ Trend ┃ str_len_delta ┃  Top Changes ┃ + ┡━━━━━━━━╇━━━━━━━━━━━━╇━━━━━━╇━━━━━━━╇━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━┩ + │ price  │ 40.00% │ 0.75 │ up │ │ None -> 30.0 (1x) │ + │ │ │ │ │ │ 40.0 -> 42.0 (1x) │ + │ │ │ │ │ │ 20.0 -> 21.0 (1x) │ + ├────────┼────────────┼──────┼───────┼───────────────┼───────────────────┤ + │ score  │ 0.00% │ │ down │ │ 5.0 -> None (1x) │ + │ │ │ │ │ │ 4.0 -> None (1x) │ + │ │ │ │ │ │ 3.0 -> None (1x) │ + │ │ │ │ │ │ (...and 2 others) │ + ├────────┼────────────┼──────┼───────┼───────────────┼───────────────────┤ + │ status │ 40.00% │ │ │ 0 │ "d" -> None (1x) │ + │ │ │ │ │ │ "c" -> "x" (1x) │ + │ │ │ │ │ │ "b" -> None (1x) │ + └────────┴────────────┴──────┴───────┴───────────────┴───────────────────┘ + + Data Inspection + ▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔ + ┏━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━┳━━━━━━━━┓ + ┃ Column ┃  Null% ┃  Distinct ┃  Avg ┃  Max ┃ + ┡━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━╇━━━━━━━━┩ + │ price  │ 20.0% -> 0.0% (-20.0) │ 5 -> 5 (+0) │ 30 -> 30.6 (+0.6) │ │ + │ score  │ 0.0% -> 100.0% (+100.0) │ 5 -> 1 (-4) │ 3 -> None │ │ + │ status │ 0.0% -> 40.0% (+40.0) │ 5 -> 4 (-1) │ │ e -> x │ + └────────┴─────────────────────────┴─────────────┴───────────────────┴────────┘ diff --git a/tests/summary/fixtures/metrics_null_fraction/gen/pretty_True_perfect_False_top_True_slim_True_sample_rows_True_sample_pk_True.txt b/tests/summary/fixtures/metrics_null_fraction/gen/pretty_True_perfect_False_top_True_slim_True_sample_rows_True_sample_pk_True.txt index 4a10c0c..268937c 100644 --- a/tests/summary/fixtures/metrics_null_fraction/gen/pretty_True_perfect_False_top_True_slim_True_sample_rows_True_sample_pk_True.txt +++ b/tests/summary/fixtures/metrics_null_fraction/gen/pretty_True_perfect_False_top_True_slim_True_sample_rows_True_sample_pk_True.txt @@ -1,27 +1,34 @@ Rows ▔▔▔▔ - ┏━┯━┯━┯━┯━┓╌╌╌┏━┯━┯━┯━┯━┓╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╮ - ┃ │ │ │ │ ┃ = ┃ │ │ │ │ ┃ 2 equal (40.00%) │ - ┠─┼─┼─┼─┼─┨╌╌╌┠─┼─┼─┼─┼─┨╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌├╴ 5 joined - ┃ │ │ │ │ ┃ ≠ ┃ │ │ │ │ ┃ 3 unequal (60.00%) │ - ┗━┷━┷━┷━┷━┛╌╌╌┗━┷━┷━┷━┷━┛╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╯ + ┏━┯━┯━┯━┯━┓╌╌╌┏━┯━┯━┯━┯━┓╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╮ + ┃ │ │ │ │ ┃ ≠ ┃ │ │ │ │ ┃ 5 unequal (100.00%) │ + ┗━┷━┷━┷━┷━┛╌╌╌┗━┷━┷━┷━┷━┛╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╯ Columns ▔▔▔▔▔▔▔ - ┏━━━━━━━━┳━━━━━━━━━━━━┳━━━━━━┳━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━┓ - ┃ Column ┃ Match Rate ┃ Mean ┃  Null% ┃ str_len_delta ┃  Top Changes ┃ - ┡━━━━━━━━╇━━━━━━━━━━━━╇━━━━━━╇━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━┩ - │ price  │ 40.00% │ 0.75 │ 20.0% -> 0.0% │ │ None -> 30.0 │ - │ │ │ │ (-20.0) │ │ (1x, e.g. 3) │ - │ │ │ │ │ │ 40.0 -> 42.0 │ - │ │ │ │ │ │ (1x, e.g. 4) │ - │ │ │ │ │ │ 20.0 -> 21.0 │ - │ │ │ │ │ │ (1x, e.g. 2) │ - ├────────┼────────────┼──────┼───────────────────┼───────────────┼──────────────────┤ - │ status │ 40.00% │ │ 0.0% -> 40.0% │ 0 │ "d" -> None (1x, │ - │ │ │ │ (+40.0) │ │ e.g. 4) │ - │ │ │ │ │ │ "c" -> "x" (1x, │ - │ │ │ │ │ │ e.g. 3) │ - │ │ │ │ │ │ "b" -> None (1x, │ - │ │ │ │ │ │ e.g. 2) │ - └────────┴────────────┴──────┴───────────────────┴───────────────┴──────────────────┘ + ┏━━━━━━━━┳━━━━━━━━━━━━┳━━━━━━┳━━━━━━━┳━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━┓ + ┃ Column ┃ Match Rate ┃ Mean ┃ Trend ┃ str_len_delta ┃  Top Changes ┃ + ┡━━━━━━━━╇━━━━━━━━━━━━╇━━━━━━╇━━━━━━━╇━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━┩ + │ price  │ 40.00% │ 0.75 │ up │ │ None -> 30.0 (1x, e.g. 3) │ + │ │ │ │ │ │ 40.0 -> 42.0 (1x, e.g. 4) │ + │ │ │ │ │ │ 20.0 -> 21.0 (1x, e.g. 2) │ + ├────────┼────────────┼──────┼───────┼───────────────┼───────────────────────────┤ + │ score  │ 0.00% │ │ down │ │ 5.0 -> None (1x, e.g. 5) │ + │ │ │ │ │ │ 4.0 -> None (1x, e.g. 4) │ + │ │ │ │ │ │ 3.0 -> None (1x, e.g. 3) │ + │ │ │ │ │ │ (...and 2 others) │ + ├────────┼────────────┼──────┼───────┼───────────────┼───────────────────────────┤ + │ status │ 40.00% │ │ │ 0 │ "d" -> None (1x, e.g. 4) │ + │ │ │ │ │ │ "c" -> "x" (1x, e.g. 3) │ + │ │ │ │ │ │ "b" -> None (1x, e.g. 2) │ + └────────┴────────────┴──────┴───────┴───────────────┴───────────────────────────┘ + + Data Inspection + ▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔ + ┏━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━┳━━━━━━━━┓ + ┃ Column ┃  Null% ┃  Distinct ┃  Avg ┃  Max ┃ + ┡━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━╇━━━━━━━━┩ + │ price  │ 20.0% -> 0.0% (-20.0) │ 5 -> 5 (+0) │ 30 -> 30.6 (+0.6) │ │ + │ score  │ 0.0% -> 100.0% (+100.0) │ 5 -> 1 (-4) │ 3 -> None │ │ + │ status │ 0.0% -> 40.0% (+40.0) │ 5 -> 4 (-1) │ │ e -> x │ + └────────┴─────────────────────────┴─────────────┴───────────────────┴────────┘ diff --git a/tests/summary/fixtures/metrics_null_fraction/gen/pretty_True_perfect_True_top_False_slim_False_sample_rows_False_sample_pk_False.txt b/tests/summary/fixtures/metrics_null_fraction/gen/pretty_True_perfect_True_top_False_slim_False_sample_rows_False_sample_pk_False.txt index 3a2a43b..4cb5f94 100644 --- a/tests/summary/fixtures/metrics_null_fraction/gen/pretty_True_perfect_True_top_False_slim_False_sample_rows_False_sample_pk_False.txt +++ b/tests/summary/fixtures/metrics_null_fraction/gen/pretty_True_perfect_True_top_False_slim_False_sample_rows_False_sample_pk_False.txt @@ -5,24 +5,33 @@ Schemas ▔▔▔▔▔▔▔ - Schemas match exactly (column count: 3). + Schemas match exactly (column count: 4). Rows ▔▔▔▔ Left count Right count 5 (no change) 5 - ┏━┯━┯━┯━┯━┓╌╌╌┏━┯━┯━┯━┯━┓╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╮ - ┃ │ │ │ │ ┃ = ┃ │ │ │ │ ┃ 2 equal (40.00%) │ - ┠─┼─┼─┼─┼─┨╌╌╌┠─┼─┼─┼─┼─┨╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌├╴ 5 joined - ┃ │ │ │ │ ┃ ≠ ┃ │ │ │ │ ┃ 3 unequal (60.00%) │ - ┗━┷━┷━┷━┷━┛╌╌╌┗━┷━┷━┷━┷━┛╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╯ + ┏━┯━┯━┯━┯━┓╌╌╌┏━┯━┯━┯━┯━┓╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╮ + ┃ │ │ │ │ ┃ ≠ ┃ │ │ │ │ ┃ 5 unequal (100.00%) │ + ┗━┷━┷━┷━┷━┛╌╌╌┗━┷━┷━┷━┷━┛╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╯ Columns ▔▔▔▔▔▔▔ - ┏━━━━━━━━┳━━━━━━━━━━━━┳━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┓ - ┃ Column ┃ Match Rate ┃ Mean ┃  Null% ┃ str_len_delta ┃ - ┡━━━━━━━━╇━━━━━━━━━━━━╇━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━┩ - │ price  │ 40.00% │ 0.75 │ 20.0% -> 0.0% (-20.0) │ │ - │ status │ 40.00% │ │ 0.0% -> 40.0% (+40.0) │ 0 │ - └────────┴────────────┴──────┴───────────────────────┴───────────────┘ + ┏━━━━━━━━┳━━━━━━━━━━━━┳━━━━━━┳━━━━━━━┳━━━━━━━━━━━━━━━┓ + ┃ Column ┃ Match Rate ┃ Mean ┃ Trend ┃ str_len_delta ┃ + ┡━━━━━━━━╇━━━━━━━━━━━━╇━━━━━━╇━━━━━━━╇━━━━━━━━━━━━━━━┩ + │ price  │ 40.00% │ 0.75 │ up │ │ + │ score  │ 0.00% │ │ down │ │ + │ status │ 40.00% │ │ │ 0 │ + └────────┴────────────┴──────┴───────┴───────────────┘ + + Data Inspection + ▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔ + ┏━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━┳━━━━━━━━┓ + ┃ Column ┃  Null% ┃  Distinct ┃  Avg ┃  Max ┃ + ┡━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━╇━━━━━━━━┩ + │ price  │ 20.0% -> 0.0% (-20.0) │ 5 -> 5 (+0) │ 30 -> 30.6 (+0.6) │ │ + │ score  │ 0.0% -> 100.0% (+100.0) │ 5 -> 1 (-4) │ 3 -> None │ │ + │ status │ 0.0% -> 40.0% (+40.0) │ 5 -> 4 (-1) │ │ e -> x │ + └────────┴─────────────────────────┴─────────────┴───────────────────┴────────┘ diff --git a/tests/summary/fixtures/metrics_null_fraction/gen/pretty_True_perfect_True_top_False_slim_False_sample_rows_True_sample_pk_False.txt b/tests/summary/fixtures/metrics_null_fraction/gen/pretty_True_perfect_True_top_False_slim_False_sample_rows_True_sample_pk_False.txt index 3a2a43b..4cb5f94 100644 --- a/tests/summary/fixtures/metrics_null_fraction/gen/pretty_True_perfect_True_top_False_slim_False_sample_rows_True_sample_pk_False.txt +++ b/tests/summary/fixtures/metrics_null_fraction/gen/pretty_True_perfect_True_top_False_slim_False_sample_rows_True_sample_pk_False.txt @@ -5,24 +5,33 @@ Schemas ▔▔▔▔▔▔▔ - Schemas match exactly (column count: 3). + Schemas match exactly (column count: 4). Rows ▔▔▔▔ Left count Right count 5 (no change) 5 - ┏━┯━┯━┯━┯━┓╌╌╌┏━┯━┯━┯━┯━┓╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╮ - ┃ │ │ │ │ ┃ = ┃ │ │ │ │ ┃ 2 equal (40.00%) │ - ┠─┼─┼─┼─┼─┨╌╌╌┠─┼─┼─┼─┼─┨╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌├╴ 5 joined - ┃ │ │ │ │ ┃ ≠ ┃ │ │ │ │ ┃ 3 unequal (60.00%) │ - ┗━┷━┷━┷━┷━┛╌╌╌┗━┷━┷━┷━┷━┛╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╯ + ┏━┯━┯━┯━┯━┓╌╌╌┏━┯━┯━┯━┯━┓╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╮ + ┃ │ │ │ │ ┃ ≠ ┃ │ │ │ │ ┃ 5 unequal (100.00%) │ + ┗━┷━┷━┷━┷━┛╌╌╌┗━┷━┷━┷━┷━┛╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╯ Columns ▔▔▔▔▔▔▔ - ┏━━━━━━━━┳━━━━━━━━━━━━┳━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┓ - ┃ Column ┃ Match Rate ┃ Mean ┃  Null% ┃ str_len_delta ┃ - ┡━━━━━━━━╇━━━━━━━━━━━━╇━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━┩ - │ price  │ 40.00% │ 0.75 │ 20.0% -> 0.0% (-20.0) │ │ - │ status │ 40.00% │ │ 0.0% -> 40.0% (+40.0) │ 0 │ - └────────┴────────────┴──────┴───────────────────────┴───────────────┘ + ┏━━━━━━━━┳━━━━━━━━━━━━┳━━━━━━┳━━━━━━━┳━━━━━━━━━━━━━━━┓ + ┃ Column ┃ Match Rate ┃ Mean ┃ Trend ┃ str_len_delta ┃ + ┡━━━━━━━━╇━━━━━━━━━━━━╇━━━━━━╇━━━━━━━╇━━━━━━━━━━━━━━━┩ + │ price  │ 40.00% │ 0.75 │ up │ │ + │ score  │ 0.00% │ │ down │ │ + │ status │ 40.00% │ │ │ 0 │ + └────────┴────────────┴──────┴───────┴───────────────┘ + + Data Inspection + ▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔ + ┏━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━┳━━━━━━━━┓ + ┃ Column ┃  Null% ┃  Distinct ┃  Avg ┃  Max ┃ + ┡━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━╇━━━━━━━━┩ + │ price  │ 20.0% -> 0.0% (-20.0) │ 5 -> 5 (+0) │ 30 -> 30.6 (+0.6) │ │ + │ score  │ 0.0% -> 100.0% (+100.0) │ 5 -> 1 (-4) │ 3 -> None │ │ + │ status │ 0.0% -> 40.0% (+40.0) │ 5 -> 4 (-1) │ │ e -> x │ + └────────┴─────────────────────────┴─────────────┴───────────────────┴────────┘ diff --git a/tests/summary/fixtures/metrics_null_fraction/gen/pretty_True_perfect_True_top_False_slim_True_sample_rows_False_sample_pk_False.txt b/tests/summary/fixtures/metrics_null_fraction/gen/pretty_True_perfect_True_top_False_slim_True_sample_rows_False_sample_pk_False.txt index 1316f6b..dfda029 100644 --- a/tests/summary/fixtures/metrics_null_fraction/gen/pretty_True_perfect_True_top_False_slim_True_sample_rows_False_sample_pk_False.txt +++ b/tests/summary/fixtures/metrics_null_fraction/gen/pretty_True_perfect_True_top_False_slim_True_sample_rows_False_sample_pk_False.txt @@ -1,16 +1,25 @@ Rows ▔▔▔▔ - ┏━┯━┯━┯━┯━┓╌╌╌┏━┯━┯━┯━┯━┓╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╮ - ┃ │ │ │ │ ┃ = ┃ │ │ │ │ ┃ 2 equal (40.00%) │ - ┠─┼─┼─┼─┼─┨╌╌╌┠─┼─┼─┼─┼─┨╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌├╴ 5 joined - ┃ │ │ │ │ ┃ ≠ ┃ │ │ │ │ ┃ 3 unequal (60.00%) │ - ┗━┷━┷━┷━┷━┛╌╌╌┗━┷━┷━┷━┷━┛╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╯ + ┏━┯━┯━┯━┯━┓╌╌╌┏━┯━┯━┯━┯━┓╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╮ + ┃ │ │ │ │ ┃ ≠ ┃ │ │ │ │ ┃ 5 unequal (100.00%) │ + ┗━┷━┷━┷━┷━┛╌╌╌┗━┷━┷━┷━┷━┛╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╯ Columns ▔▔▔▔▔▔▔ - ┏━━━━━━━━┳━━━━━━━━━━━━┳━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┓ - ┃ Column ┃ Match Rate ┃ Mean ┃  Null% ┃ str_len_delta ┃ - ┡━━━━━━━━╇━━━━━━━━━━━━╇━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━┩ - │ price  │ 40.00% │ 0.75 │ 20.0% -> 0.0% (-20.0) │ │ - │ status │ 40.00% │ │ 0.0% -> 40.0% (+40.0) │ 0 │ - └────────┴────────────┴──────┴───────────────────────┴───────────────┘ + ┏━━━━━━━━┳━━━━━━━━━━━━┳━━━━━━┳━━━━━━━┳━━━━━━━━━━━━━━━┓ + ┃ Column ┃ Match Rate ┃ Mean ┃ Trend ┃ str_len_delta ┃ + ┡━━━━━━━━╇━━━━━━━━━━━━╇━━━━━━╇━━━━━━━╇━━━━━━━━━━━━━━━┩ + │ price  │ 40.00% │ 0.75 │ up │ │ + │ score  │ 0.00% │ │ down │ │ + │ status │ 40.00% │ │ │ 0 │ + └────────┴────────────┴──────┴───────┴───────────────┘ + + Data Inspection + ▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔ + ┏━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━┳━━━━━━━━┓ + ┃ Column ┃  Null% ┃  Distinct ┃  Avg ┃  Max ┃ + ┡━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━╇━━━━━━━━┩ + │ price  │ 20.0% -> 0.0% (-20.0) │ 5 -> 5 (+0) │ 30 -> 30.6 (+0.6) │ │ + │ score  │ 0.0% -> 100.0% (+100.0) │ 5 -> 1 (-4) │ 3 -> None │ │ + │ status │ 0.0% -> 40.0% (+40.0) │ 5 -> 4 (-1) │ │ e -> x │ + └────────┴─────────────────────────┴─────────────┴───────────────────┴────────┘ diff --git a/tests/summary/fixtures/metrics_null_fraction/gen/pretty_True_perfect_True_top_False_slim_True_sample_rows_True_sample_pk_False.txt b/tests/summary/fixtures/metrics_null_fraction/gen/pretty_True_perfect_True_top_False_slim_True_sample_rows_True_sample_pk_False.txt index 1316f6b..dfda029 100644 --- a/tests/summary/fixtures/metrics_null_fraction/gen/pretty_True_perfect_True_top_False_slim_True_sample_rows_True_sample_pk_False.txt +++ b/tests/summary/fixtures/metrics_null_fraction/gen/pretty_True_perfect_True_top_False_slim_True_sample_rows_True_sample_pk_False.txt @@ -1,16 +1,25 @@ Rows ▔▔▔▔ - ┏━┯━┯━┯━┯━┓╌╌╌┏━┯━┯━┯━┯━┓╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╮ - ┃ │ │ │ │ ┃ = ┃ │ │ │ │ ┃ 2 equal (40.00%) │ - ┠─┼─┼─┼─┼─┨╌╌╌┠─┼─┼─┼─┼─┨╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌├╴ 5 joined - ┃ │ │ │ │ ┃ ≠ ┃ │ │ │ │ ┃ 3 unequal (60.00%) │ - ┗━┷━┷━┷━┷━┛╌╌╌┗━┷━┷━┷━┷━┛╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╯ + ┏━┯━┯━┯━┯━┓╌╌╌┏━┯━┯━┯━┯━┓╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╮ + ┃ │ │ │ │ ┃ ≠ ┃ │ │ │ │ ┃ 5 unequal (100.00%) │ + ┗━┷━┷━┷━┷━┛╌╌╌┗━┷━┷━┷━┷━┛╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╯ Columns ▔▔▔▔▔▔▔ - ┏━━━━━━━━┳━━━━━━━━━━━━┳━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┓ - ┃ Column ┃ Match Rate ┃ Mean ┃  Null% ┃ str_len_delta ┃ - ┡━━━━━━━━╇━━━━━━━━━━━━╇━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━┩ - │ price  │ 40.00% │ 0.75 │ 20.0% -> 0.0% (-20.0) │ │ - │ status │ 40.00% │ │ 0.0% -> 40.0% (+40.0) │ 0 │ - └────────┴────────────┴──────┴───────────────────────┴───────────────┘ + ┏━━━━━━━━┳━━━━━━━━━━━━┳━━━━━━┳━━━━━━━┳━━━━━━━━━━━━━━━┓ + ┃ Column ┃ Match Rate ┃ Mean ┃ Trend ┃ str_len_delta ┃ + ┡━━━━━━━━╇━━━━━━━━━━━━╇━━━━━━╇━━━━━━━╇━━━━━━━━━━━━━━━┩ + │ price  │ 40.00% │ 0.75 │ up │ │ + │ score  │ 0.00% │ │ down │ │ + │ status │ 40.00% │ │ │ 0 │ + └────────┴────────────┴──────┴───────┴───────────────┘ + + Data Inspection + ▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔ + ┏━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━┳━━━━━━━━┓ + ┃ Column ┃  Null% ┃  Distinct ┃  Avg ┃  Max ┃ + ┡━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━╇━━━━━━━━┩ + │ price  │ 20.0% -> 0.0% (-20.0) │ 5 -> 5 (+0) │ 30 -> 30.6 (+0.6) │ │ + │ score  │ 0.0% -> 100.0% (+100.0) │ 5 -> 1 (-4) │ 3 -> None │ │ + │ status │ 0.0% -> 40.0% (+40.0) │ 5 -> 4 (-1) │ │ e -> x │ + └────────┴─────────────────────────┴─────────────┴───────────────────┴────────┘ diff --git a/tests/summary/fixtures/metrics_null_fraction/gen/pretty_True_perfect_True_top_True_slim_False_sample_rows_False_sample_pk_False.txt b/tests/summary/fixtures/metrics_null_fraction/gen/pretty_True_perfect_True_top_True_slim_False_sample_rows_False_sample_pk_False.txt index bdca125..ff3bcb9 100644 --- a/tests/summary/fixtures/metrics_null_fraction/gen/pretty_True_perfect_True_top_True_slim_False_sample_rows_False_sample_pk_False.txt +++ b/tests/summary/fixtures/metrics_null_fraction/gen/pretty_True_perfect_True_top_True_slim_False_sample_rows_False_sample_pk_False.txt @@ -5,32 +5,42 @@ Schemas ▔▔▔▔▔▔▔ - Schemas match exactly (column count: 3). + Schemas match exactly (column count: 4). Rows ▔▔▔▔ Left count Right count 5 (no change) 5 - ┏━┯━┯━┯━┯━┓╌╌╌┏━┯━┯━┯━┯━┓╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╮ - ┃ │ │ │ │ ┃ = ┃ │ │ │ │ ┃ 2 equal (40.00%) │ - ┠─┼─┼─┼─┼─┨╌╌╌┠─┼─┼─┼─┼─┨╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌├╴ 5 joined - ┃ │ │ │ │ ┃ ≠ ┃ │ │ │ │ ┃ 3 unequal (60.00%) │ - ┗━┷━┷━┷━┷━┛╌╌╌┗━┷━┷━┷━┷━┛╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╯ + ┏━┯━┯━┯━┯━┓╌╌╌┏━┯━┯━┯━┯━┓╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╮ + ┃ │ │ │ │ ┃ ≠ ┃ │ │ │ │ ┃ 5 unequal (100.00%) │ + ┗━┷━┷━┷━┷━┛╌╌╌┗━┷━┷━┷━┷━┛╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╯ Columns ▔▔▔▔▔▔▔ - ┏━━━━━━━━┳━━━━━━━━━━━━┳━━━━━━┳━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━┓ - ┃ Column ┃ Match Rate ┃ Mean ┃  Null% ┃ str_len_delta ┃  Top Changes ┃ - ┡━━━━━━━━╇━━━━━━━━━━━━╇━━━━━━╇━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━┩ - │ price  │ 40.00% │ 0.75 │ 20.0% -> 0.0% │ │ None -> 30.0 │ - │ │ │ │ (-20.0) │ │ (1x) │ - │ │ │ │ │ │ 40.0 -> 42.0 │ - │ │ │ │ │ │ (1x) │ - │ │ │ │ │ │ 20.0 -> 21.0 │ - │ │ │ │ │ │ (1x) │ - ├────────┼────────────┼──────┼───────────────────┼───────────────┼──────────────────┤ - │ status │ 40.00% │ │ 0.0% -> 40.0% │ 0 │ "d" -> None (1x) │ - │ │ │ │ (+40.0) │ │ "c" -> "x" (1x) │ - │ │ │ │ │ │ "b" -> None (1x) │ - └────────┴────────────┴──────┴───────────────────┴───────────────┴──────────────────┘ + ┏━━━━━━━━┳━━━━━━━━━━━━┳━━━━━━┳━━━━━━━┳━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━┓ + ┃ Column ┃ Match Rate ┃ Mean ┃ Trend ┃ str_len_delta ┃  Top Changes ┃ + ┡━━━━━━━━╇━━━━━━━━━━━━╇━━━━━━╇━━━━━━━╇━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━┩ + │ price  │ 40.00% │ 0.75 │ up │ │ None -> 30.0 (1x) │ + │ │ │ │ │ │ 40.0 -> 42.0 (1x) │ + │ │ │ │ │ │ 20.0 -> 21.0 (1x) │ + ├────────┼────────────┼──────┼───────┼───────────────┼───────────────────┤ + │ score  │ 0.00% │ │ down │ │ 5.0 -> None (1x) │ + │ │ │ │ │ │ 4.0 -> None (1x) │ + │ │ │ │ │ │ 3.0 -> None (1x) │ + │ │ │ │ │ │ (...and 2 others) │ + ├────────┼────────────┼──────┼───────┼───────────────┼───────────────────┤ + │ status │ 40.00% │ │ │ 0 │ "d" -> None (1x) │ + │ │ │ │ │ │ "c" -> "x" (1x) │ + │ │ │ │ │ │ "b" -> None (1x) │ + └────────┴────────────┴──────┴───────┴───────────────┴───────────────────┘ + + Data Inspection + ▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔ + ┏━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━┳━━━━━━━━┓ + ┃ Column ┃  Null% ┃  Distinct ┃  Avg ┃  Max ┃ + ┡━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━╇━━━━━━━━┩ + │ price  │ 20.0% -> 0.0% (-20.0) │ 5 -> 5 (+0) │ 30 -> 30.6 (+0.6) │ │ + │ score  │ 0.0% -> 100.0% (+100.0) │ 5 -> 1 (-4) │ 3 -> None │ │ + │ status │ 0.0% -> 40.0% (+40.0) │ 5 -> 4 (-1) │ │ e -> x │ + └────────┴─────────────────────────┴─────────────┴───────────────────┴────────┘ diff --git a/tests/summary/fixtures/metrics_null_fraction/gen/pretty_True_perfect_True_top_True_slim_False_sample_rows_True_sample_pk_True.txt b/tests/summary/fixtures/metrics_null_fraction/gen/pretty_True_perfect_True_top_True_slim_False_sample_rows_True_sample_pk_True.txt index cdd7114..877050f 100644 --- a/tests/summary/fixtures/metrics_null_fraction/gen/pretty_True_perfect_True_top_True_slim_False_sample_rows_True_sample_pk_True.txt +++ b/tests/summary/fixtures/metrics_null_fraction/gen/pretty_True_perfect_True_top_True_slim_False_sample_rows_True_sample_pk_True.txt @@ -5,35 +5,42 @@ Schemas ▔▔▔▔▔▔▔ - Schemas match exactly (column count: 3). + Schemas match exactly (column count: 4). Rows ▔▔▔▔ Left count Right count 5 (no change) 5 - ┏━┯━┯━┯━┯━┓╌╌╌┏━┯━┯━┯━┯━┓╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╮ - ┃ │ │ │ │ ┃ = ┃ │ │ │ │ ┃ 2 equal (40.00%) │ - ┠─┼─┼─┼─┼─┨╌╌╌┠─┼─┼─┼─┼─┨╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌├╴ 5 joined - ┃ │ │ │ │ ┃ ≠ ┃ │ │ │ │ ┃ 3 unequal (60.00%) │ - ┗━┷━┷━┷━┷━┛╌╌╌┗━┷━┷━┷━┷━┛╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╯ + ┏━┯━┯━┯━┯━┓╌╌╌┏━┯━┯━┯━┯━┓╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╮ + ┃ │ │ │ │ ┃ ≠ ┃ │ │ │ │ ┃ 5 unequal (100.00%) │ + ┗━┷━┷━┷━┷━┛╌╌╌┗━┷━┷━┷━┷━┛╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╯ Columns ▔▔▔▔▔▔▔ - ┏━━━━━━━━┳━━━━━━━━━━━━┳━━━━━━┳━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━┓ - ┃ Column ┃ Match Rate ┃ Mean ┃  Null% ┃ str_len_delta ┃  Top Changes ┃ - ┡━━━━━━━━╇━━━━━━━━━━━━╇━━━━━━╇━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━┩ - │ price  │ 40.00% │ 0.75 │ 20.0% -> 0.0% │ │ None -> 30.0 │ - │ │ │ │ (-20.0) │ │ (1x, e.g. 3) │ - │ │ │ │ │ │ 40.0 -> 42.0 │ - │ │ │ │ │ │ (1x, e.g. 4) │ - │ │ │ │ │ │ 20.0 -> 21.0 │ - │ │ │ │ │ │ (1x, e.g. 2) │ - ├────────┼────────────┼──────┼───────────────────┼───────────────┼──────────────────┤ - │ status │ 40.00% │ │ 0.0% -> 40.0% │ 0 │ "d" -> None (1x, │ - │ │ │ │ (+40.0) │ │ e.g. 4) │ - │ │ │ │ │ │ "c" -> "x" (1x, │ - │ │ │ │ │ │ e.g. 3) │ - │ │ │ │ │ │ "b" -> None (1x, │ - │ │ │ │ │ │ e.g. 2) │ - └────────┴────────────┴──────┴───────────────────┴───────────────┴──────────────────┘ + ┏━━━━━━━━┳━━━━━━━━━━━━┳━━━━━━┳━━━━━━━┳━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━┓ + ┃ Column ┃ Match Rate ┃ Mean ┃ Trend ┃ str_len_delta ┃  Top Changes ┃ + ┡━━━━━━━━╇━━━━━━━━━━━━╇━━━━━━╇━━━━━━━╇━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━┩ + │ price  │ 40.00% │ 0.75 │ up │ │ None -> 30.0 (1x, e.g. 3) │ + │ │ │ │ │ │ 40.0 -> 42.0 (1x, e.g. 4) │ + │ │ │ │ │ │ 20.0 -> 21.0 (1x, e.g. 2) │ + ├────────┼────────────┼──────┼───────┼───────────────┼───────────────────────────┤ + │ score  │ 0.00% │ │ down │ │ 5.0 -> None (1x, e.g. 5) │ + │ │ │ │ │ │ 4.0 -> None (1x, e.g. 4) │ + │ │ │ │ │ │ 3.0 -> None (1x, e.g. 3) │ + │ │ │ │ │ │ (...and 2 others) │ + ├────────┼────────────┼──────┼───────┼───────────────┼───────────────────────────┤ + │ status │ 40.00% │ │ │ 0 │ "d" -> None (1x, e.g. 4) │ + │ │ │ │ │ │ "c" -> "x" (1x, e.g. 3) │ + │ │ │ │ │ │ "b" -> None (1x, e.g. 2) │ + └────────┴────────────┴──────┴───────┴───────────────┴───────────────────────────┘ + + Data Inspection + ▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔ + ┏━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━┳━━━━━━━━┓ + ┃ Column ┃  Null% ┃  Distinct ┃  Avg ┃  Max ┃ + ┡━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━╇━━━━━━━━┩ + │ price  │ 20.0% -> 0.0% (-20.0) │ 5 -> 5 (+0) │ 30 -> 30.6 (+0.6) │ │ + │ score  │ 0.0% -> 100.0% (+100.0) │ 5 -> 1 (-4) │ 3 -> None │ │ + │ status │ 0.0% -> 40.0% (+40.0) │ 5 -> 4 (-1) │ │ e -> x │ + └────────┴─────────────────────────┴─────────────┴───────────────────┴────────┘ diff --git a/tests/summary/fixtures/metrics_null_fraction/gen/pretty_True_perfect_True_top_True_slim_True_sample_rows_False_sample_pk_False.txt b/tests/summary/fixtures/metrics_null_fraction/gen/pretty_True_perfect_True_top_True_slim_True_sample_rows_False_sample_pk_False.txt index 370a2d3..40f1837 100644 --- a/tests/summary/fixtures/metrics_null_fraction/gen/pretty_True_perfect_True_top_True_slim_True_sample_rows_False_sample_pk_False.txt +++ b/tests/summary/fixtures/metrics_null_fraction/gen/pretty_True_perfect_True_top_True_slim_True_sample_rows_False_sample_pk_False.txt @@ -1,24 +1,34 @@ Rows ▔▔▔▔ - ┏━┯━┯━┯━┯━┓╌╌╌┏━┯━┯━┯━┯━┓╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╮ - ┃ │ │ │ │ ┃ = ┃ │ │ │ │ ┃ 2 equal (40.00%) │ - ┠─┼─┼─┼─┼─┨╌╌╌┠─┼─┼─┼─┼─┨╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌├╴ 5 joined - ┃ │ │ │ │ ┃ ≠ ┃ │ │ │ │ ┃ 3 unequal (60.00%) │ - ┗━┷━┷━┷━┷━┛╌╌╌┗━┷━┷━┷━┷━┛╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╯ + ┏━┯━┯━┯━┯━┓╌╌╌┏━┯━┯━┯━┯━┓╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╮ + ┃ │ │ │ │ ┃ ≠ ┃ │ │ │ │ ┃ 5 unequal (100.00%) │ + ┗━┷━┷━┷━┷━┛╌╌╌┗━┷━┷━┷━┷━┛╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╯ Columns ▔▔▔▔▔▔▔ - ┏━━━━━━━━┳━━━━━━━━━━━━┳━━━━━━┳━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━┓ - ┃ Column ┃ Match Rate ┃ Mean ┃  Null% ┃ str_len_delta ┃  Top Changes ┃ - ┡━━━━━━━━╇━━━━━━━━━━━━╇━━━━━━╇━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━┩ - │ price  │ 40.00% │ 0.75 │ 20.0% -> 0.0% │ │ None -> 30.0 │ - │ │ │ │ (-20.0) │ │ (1x) │ - │ │ │ │ │ │ 40.0 -> 42.0 │ - │ │ │ │ │ │ (1x) │ - │ │ │ │ │ │ 20.0 -> 21.0 │ - │ │ │ │ │ │ (1x) │ - ├────────┼────────────┼──────┼───────────────────┼───────────────┼──────────────────┤ - │ status │ 40.00% │ │ 0.0% -> 40.0% │ 0 │ "d" -> None (1x) │ - │ │ │ │ (+40.0) │ │ "c" -> "x" (1x) │ - │ │ │ │ │ │ "b" -> None (1x) │ - └────────┴────────────┴──────┴───────────────────┴───────────────┴──────────────────┘ + ┏━━━━━━━━┳━━━━━━━━━━━━┳━━━━━━┳━━━━━━━┳━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━┓ + ┃ Column ┃ Match Rate ┃ Mean ┃ Trend ┃ str_len_delta ┃  Top Changes ┃ + ┡━━━━━━━━╇━━━━━━━━━━━━╇━━━━━━╇━━━━━━━╇━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━┩ + │ price  │ 40.00% │ 0.75 │ up │ │ None -> 30.0 (1x) │ + │ │ │ │ │ │ 40.0 -> 42.0 (1x) │ + │ │ │ │ │ │ 20.0 -> 21.0 (1x) │ + ├────────┼────────────┼──────┼───────┼───────────────┼───────────────────┤ + │ score  │ 0.00% │ │ down │ │ 5.0 -> None (1x) │ + │ │ │ │ │ │ 4.0 -> None (1x) │ + │ │ │ │ │ │ 3.0 -> None (1x) │ + │ │ │ │ │ │ (...and 2 others) │ + ├────────┼────────────┼──────┼───────┼───────────────┼───────────────────┤ + │ status │ 40.00% │ │ │ 0 │ "d" -> None (1x) │ + │ │ │ │ │ │ "c" -> "x" (1x) │ + │ │ │ │ │ │ "b" -> None (1x) │ + └────────┴────────────┴──────┴───────┴───────────────┴───────────────────┘ + + Data Inspection + ▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔ + ┏━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━┳━━━━━━━━┓ + ┃ Column ┃  Null% ┃  Distinct ┃  Avg ┃  Max ┃ + ┡━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━╇━━━━━━━━┩ + │ price  │ 20.0% -> 0.0% (-20.0) │ 5 -> 5 (+0) │ 30 -> 30.6 (+0.6) │ │ + │ score  │ 0.0% -> 100.0% (+100.0) │ 5 -> 1 (-4) │ 3 -> None │ │ + │ status │ 0.0% -> 40.0% (+40.0) │ 5 -> 4 (-1) │ │ e -> x │ + └────────┴─────────────────────────┴─────────────┴───────────────────┴────────┘ diff --git a/tests/summary/fixtures/metrics_null_fraction/gen/pretty_True_perfect_True_top_True_slim_True_sample_rows_True_sample_pk_True.txt b/tests/summary/fixtures/metrics_null_fraction/gen/pretty_True_perfect_True_top_True_slim_True_sample_rows_True_sample_pk_True.txt index 4a10c0c..268937c 100644 --- a/tests/summary/fixtures/metrics_null_fraction/gen/pretty_True_perfect_True_top_True_slim_True_sample_rows_True_sample_pk_True.txt +++ b/tests/summary/fixtures/metrics_null_fraction/gen/pretty_True_perfect_True_top_True_slim_True_sample_rows_True_sample_pk_True.txt @@ -1,27 +1,34 @@ Rows ▔▔▔▔ - ┏━┯━┯━┯━┯━┓╌╌╌┏━┯━┯━┯━┯━┓╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╮ - ┃ │ │ │ │ ┃ = ┃ │ │ │ │ ┃ 2 equal (40.00%) │ - ┠─┼─┼─┼─┼─┨╌╌╌┠─┼─┼─┼─┼─┨╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌├╴ 5 joined - ┃ │ │ │ │ ┃ ≠ ┃ │ │ │ │ ┃ 3 unequal (60.00%) │ - ┗━┷━┷━┷━┷━┛╌╌╌┗━┷━┷━┷━┷━┛╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╯ + ┏━┯━┯━┯━┯━┓╌╌╌┏━┯━┯━┯━┯━┓╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╮ + ┃ │ │ │ │ ┃ ≠ ┃ │ │ │ │ ┃ 5 unequal (100.00%) │ + ┗━┷━┷━┷━┷━┛╌╌╌┗━┷━┷━┷━┷━┛╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╯ Columns ▔▔▔▔▔▔▔ - ┏━━━━━━━━┳━━━━━━━━━━━━┳━━━━━━┳━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━┓ - ┃ Column ┃ Match Rate ┃ Mean ┃  Null% ┃ str_len_delta ┃  Top Changes ┃ - ┡━━━━━━━━╇━━━━━━━━━━━━╇━━━━━━╇━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━┩ - │ price  │ 40.00% │ 0.75 │ 20.0% -> 0.0% │ │ None -> 30.0 │ - │ │ │ │ (-20.0) │ │ (1x, e.g. 3) │ - │ │ │ │ │ │ 40.0 -> 42.0 │ - │ │ │ │ │ │ (1x, e.g. 4) │ - │ │ │ │ │ │ 20.0 -> 21.0 │ - │ │ │ │ │ │ (1x, e.g. 2) │ - ├────────┼────────────┼──────┼───────────────────┼───────────────┼──────────────────┤ - │ status │ 40.00% │ │ 0.0% -> 40.0% │ 0 │ "d" -> None (1x, │ - │ │ │ │ (+40.0) │ │ e.g. 4) │ - │ │ │ │ │ │ "c" -> "x" (1x, │ - │ │ │ │ │ │ e.g. 3) │ - │ │ │ │ │ │ "b" -> None (1x, │ - │ │ │ │ │ │ e.g. 2) │ - └────────┴────────────┴──────┴───────────────────┴───────────────┴──────────────────┘ + ┏━━━━━━━━┳━━━━━━━━━━━━┳━━━━━━┳━━━━━━━┳━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━┓ + ┃ Column ┃ Match Rate ┃ Mean ┃ Trend ┃ str_len_delta ┃  Top Changes ┃ + ┡━━━━━━━━╇━━━━━━━━━━━━╇━━━━━━╇━━━━━━━╇━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━┩ + │ price  │ 40.00% │ 0.75 │ up │ │ None -> 30.0 (1x, e.g. 3) │ + │ │ │ │ │ │ 40.0 -> 42.0 (1x, e.g. 4) │ + │ │ │ │ │ │ 20.0 -> 21.0 (1x, e.g. 2) │ + ├────────┼────────────┼──────┼───────┼───────────────┼───────────────────────────┤ + │ score  │ 0.00% │ │ down │ │ 5.0 -> None (1x, e.g. 5) │ + │ │ │ │ │ │ 4.0 -> None (1x, e.g. 4) │ + │ │ │ │ │ │ 3.0 -> None (1x, e.g. 3) │ + │ │ │ │ │ │ (...and 2 others) │ + ├────────┼────────────┼──────┼───────┼───────────────┼───────────────────────────┤ + │ status │ 40.00% │ │ │ 0 │ "d" -> None (1x, e.g. 4) │ + │ │ │ │ │ │ "c" -> "x" (1x, e.g. 3) │ + │ │ │ │ │ │ "b" -> None (1x, e.g. 2) │ + └────────┴────────────┴──────┴───────┴───────────────┴───────────────────────────┘ + + Data Inspection + ▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔ + ┏━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━┳━━━━━━━━┓ + ┃ Column ┃  Null% ┃  Distinct ┃  Avg ┃  Max ┃ + ┡━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━╇━━━━━━━━┩ + │ price  │ 20.0% -> 0.0% (-20.0) │ 5 -> 5 (+0) │ 30 -> 30.6 (+0.6) │ │ + │ score  │ 0.0% -> 100.0% (+100.0) │ 5 -> 1 (-4) │ 3 -> None │ │ + │ status │ 0.0% -> 40.0% (+40.0) │ 5 -> 4 (-1) │ │ e -> x │ + └────────┴─────────────────────────┴─────────────┴───────────────────┴────────┘ diff --git a/tests/summary/fixtures/metrics_null_fraction/test_metrics_null_fraction.py b/tests/summary/fixtures/metrics_null_fraction/test_metrics_null_fraction.py index 9e26bd4..a25bbf4 100644 --- a/tests/summary/fixtures/metrics_null_fraction/test_metrics_null_fraction.py +++ b/tests/summary/fixtures/metrics_null_fraction/test_metrics_null_fraction.py @@ -6,8 +6,8 @@ import pytest from diffly import compare_frames, metrics -from diffly.metrics import Metric -from diffly.metrics.data import DEFAULT_DATA_METRICS +from diffly.metrics.change import ChangeMetric +from diffly.metrics.data import DEFAULT_DATA_METRICS, DataMetric from tests.utils import generate_summaries @@ -17,6 +17,9 @@ def test_generate() -> None: { "id": [1, 2, 3, 4, 5], "price": [10.0, 20.0, None, 40.0, 50.0], + # `score` is fully populated on the left but entirely null on the right, so a + # numeric data metric yields a ``float -> None`` pair. + "score": [1.0, 2.0, 3.0, 4.0, 5.0], "status": ["a", "b", "c", "d", "e"], } ) @@ -24,22 +27,40 @@ def test_generate() -> None: { "id": [1, 2, 3, 4, 5], "price": [10.0, 21.0, 30.0, 42.0, 50.0], + "score": pl.Series([None] * 5, dtype=pl.Float64), "status": ["a", None, "x", None, "e"], } ) comp = compare_frames(left, right, primary_key=["id"]) generate_summaries( comp, - metrics={ + change_metrics={ # Numeric-only preset alongside a metric applied to all columns. - "Mean": metrics.mean, - "Null%": DEFAULT_DATA_METRICS["Null%"], - # A user-supplied metric with a custom (string-only) selector. - "str_len_delta": Metric( + "Mean": metrics.change.mean, + # A change metric returning a (non-numeric) string value. + "Trend": ChangeMetric( + fn=lambda left, right: ( + pl.when((right - left).mean() >= 0) + .then(pl.lit("up")) + .otherwise(pl.lit("down")) + ), + ), + # A user-supplied change metric with a custom (string-only) selector. + "str_len_delta": ChangeMetric( fn=lambda left, right: ( right.str.len_chars() - left.str.len_chars() ).mean(), selector=cs.string(), ), }, + data_metrics={ + "Null%": DEFAULT_DATA_METRICS["Null%"], + # A second, numeric data metric to render more than one data column. + "Distinct": DataMetric(fn=lambda col: col.n_unique()), + # A numeric data metric without a custom formatter, so floats fall back to the + # default precision and a null side renders as ``None``. + "Avg": DataMetric(fn=lambda col: col.mean(), selector=cs.numeric()), + # A non-numeric data metric: rendered as ``left -> right`` without a delta. + "Max": DataMetric(fn=lambda col: col.max(), selector=cs.string()), + }, ) diff --git a/tests/summary/fixtures/metrics_presets_few/gen/pretty_False_perfect_False_top_False_slim_False_sample_rows_False_sample_pk_False.txt b/tests/summary/fixtures/metrics_presets_few/gen/pretty_False_perfect_False_top_False_slim_False_sample_rows_False_sample_pk_False.txt index 93c45a8..46032f4 100644 --- a/tests/summary/fixtures/metrics_presets_few/gen/pretty_False_perfect_False_top_False_slim_False_sample_rows_False_sample_pk_False.txt +++ b/tests/summary/fixtures/metrics_presets_few/gen/pretty_False_perfect_False_top_False_slim_False_sample_rows_False_sample_pk_False.txt @@ -20,10 +20,10 @@ Columns ▔▔▔▔▔▔▔ - ┏━━━━━━━━┳━━━━━━━━━━━━┳━━━━━━┳━━━━━┓ - ┃ Column ┃ Match Rate ┃ Mean ┃ Max ┃ - ┡━━━━━━━━╇━━━━━━━━━━━━╇━━━━━━╇━━━━━┩ - │ price │ 60.00% │ 0.6 │ 2 │ - │ qty │ 80.00% │ 0.2 │ 1 │ - │ status │ 80.00% │ │ │ - └────────┴────────────┴──────┴─────┘ + ┏━━━━━━━━┳━━━━━━━━━━━━┳━━━━━━━━━━━┳━━━━━━━━━━┓ + ┃ Column ┃ Match Rate ┃ Mean diff ┃ Max diff ┃ + ┡━━━━━━━━╇━━━━━━━━━━━━╇━━━━━━━━━━━╇━━━━━━━━━━┩ + │ price │ 60.00% │ 0.6 │ 2 │ + │ qty │ 80.00% │ 0.2 │ 1 │ + │ status │ 80.00% │ │ │ + └────────┴────────────┴───────────┴──────────┘ diff --git a/tests/summary/fixtures/metrics_presets_few/gen/pretty_False_perfect_False_top_False_slim_False_sample_rows_True_sample_pk_False.txt b/tests/summary/fixtures/metrics_presets_few/gen/pretty_False_perfect_False_top_False_slim_False_sample_rows_True_sample_pk_False.txt index 93c45a8..46032f4 100644 --- a/tests/summary/fixtures/metrics_presets_few/gen/pretty_False_perfect_False_top_False_slim_False_sample_rows_True_sample_pk_False.txt +++ b/tests/summary/fixtures/metrics_presets_few/gen/pretty_False_perfect_False_top_False_slim_False_sample_rows_True_sample_pk_False.txt @@ -20,10 +20,10 @@ Columns ▔▔▔▔▔▔▔ - ┏━━━━━━━━┳━━━━━━━━━━━━┳━━━━━━┳━━━━━┓ - ┃ Column ┃ Match Rate ┃ Mean ┃ Max ┃ - ┡━━━━━━━━╇━━━━━━━━━━━━╇━━━━━━╇━━━━━┩ - │ price │ 60.00% │ 0.6 │ 2 │ - │ qty │ 80.00% │ 0.2 │ 1 │ - │ status │ 80.00% │ │ │ - └────────┴────────────┴──────┴─────┘ + ┏━━━━━━━━┳━━━━━━━━━━━━┳━━━━━━━━━━━┳━━━━━━━━━━┓ + ┃ Column ┃ Match Rate ┃ Mean diff ┃ Max diff ┃ + ┡━━━━━━━━╇━━━━━━━━━━━━╇━━━━━━━━━━━╇━━━━━━━━━━┩ + │ price │ 60.00% │ 0.6 │ 2 │ + │ qty │ 80.00% │ 0.2 │ 1 │ + │ status │ 80.00% │ │ │ + └────────┴────────────┴───────────┴──────────┘ diff --git a/tests/summary/fixtures/metrics_presets_few/gen/pretty_False_perfect_False_top_False_slim_True_sample_rows_False_sample_pk_False.txt b/tests/summary/fixtures/metrics_presets_few/gen/pretty_False_perfect_False_top_False_slim_True_sample_rows_False_sample_pk_False.txt index 8d4e5fc..ddcae53 100644 --- a/tests/summary/fixtures/metrics_presets_few/gen/pretty_False_perfect_False_top_False_slim_True_sample_rows_False_sample_pk_False.txt +++ b/tests/summary/fixtures/metrics_presets_few/gen/pretty_False_perfect_False_top_False_slim_True_sample_rows_False_sample_pk_False.txt @@ -8,10 +8,10 @@ Columns ▔▔▔▔▔▔▔ - ┏━━━━━━━━┳━━━━━━━━━━━━┳━━━━━━┳━━━━━┓ - ┃ Column ┃ Match Rate ┃ Mean ┃ Max ┃ - ┡━━━━━━━━╇━━━━━━━━━━━━╇━━━━━━╇━━━━━┩ - │ price │ 60.00% │ 0.6 │ 2 │ - │ qty │ 80.00% │ 0.2 │ 1 │ - │ status │ 80.00% │ │ │ - └────────┴────────────┴──────┴─────┘ + ┏━━━━━━━━┳━━━━━━━━━━━━┳━━━━━━━━━━━┳━━━━━━━━━━┓ + ┃ Column ┃ Match Rate ┃ Mean diff ┃ Max diff ┃ + ┡━━━━━━━━╇━━━━━━━━━━━━╇━━━━━━━━━━━╇━━━━━━━━━━┩ + │ price │ 60.00% │ 0.6 │ 2 │ + │ qty │ 80.00% │ 0.2 │ 1 │ + │ status │ 80.00% │ │ │ + └────────┴────────────┴───────────┴──────────┘ diff --git a/tests/summary/fixtures/metrics_presets_few/gen/pretty_False_perfect_False_top_False_slim_True_sample_rows_True_sample_pk_False.txt b/tests/summary/fixtures/metrics_presets_few/gen/pretty_False_perfect_False_top_False_slim_True_sample_rows_True_sample_pk_False.txt index 8d4e5fc..ddcae53 100644 --- a/tests/summary/fixtures/metrics_presets_few/gen/pretty_False_perfect_False_top_False_slim_True_sample_rows_True_sample_pk_False.txt +++ b/tests/summary/fixtures/metrics_presets_few/gen/pretty_False_perfect_False_top_False_slim_True_sample_rows_True_sample_pk_False.txt @@ -8,10 +8,10 @@ Columns ▔▔▔▔▔▔▔ - ┏━━━━━━━━┳━━━━━━━━━━━━┳━━━━━━┳━━━━━┓ - ┃ Column ┃ Match Rate ┃ Mean ┃ Max ┃ - ┡━━━━━━━━╇━━━━━━━━━━━━╇━━━━━━╇━━━━━┩ - │ price │ 60.00% │ 0.6 │ 2 │ - │ qty │ 80.00% │ 0.2 │ 1 │ - │ status │ 80.00% │ │ │ - └────────┴────────────┴──────┴─────┘ + ┏━━━━━━━━┳━━━━━━━━━━━━┳━━━━━━━━━━━┳━━━━━━━━━━┓ + ┃ Column ┃ Match Rate ┃ Mean diff ┃ Max diff ┃ + ┡━━━━━━━━╇━━━━━━━━━━━━╇━━━━━━━━━━━╇━━━━━━━━━━┩ + │ price │ 60.00% │ 0.6 │ 2 │ + │ qty │ 80.00% │ 0.2 │ 1 │ + │ status │ 80.00% │ │ │ + └────────┴────────────┴───────────┴──────────┘ diff --git a/tests/summary/fixtures/metrics_presets_few/gen/pretty_False_perfect_False_top_True_slim_False_sample_rows_False_sample_pk_False.txt b/tests/summary/fixtures/metrics_presets_few/gen/pretty_False_perfect_False_top_True_slim_False_sample_rows_False_sample_pk_False.txt index 78312e9..3e1aa3c 100644 --- a/tests/summary/fixtures/metrics_presets_few/gen/pretty_False_perfect_False_top_True_slim_False_sample_rows_False_sample_pk_False.txt +++ b/tests/summary/fixtures/metrics_presets_few/gen/pretty_False_perfect_False_top_True_slim_False_sample_rows_False_sample_pk_False.txt @@ -20,13 +20,13 @@ Columns ▔▔▔▔▔▔▔ - ┏━━━━━━━━┳━━━━━━━━━━━━┳━━━━━━┳━━━━━┳━━━━━━━━━━━━━━━━━━━┓ - ┃ Column ┃ Match Rate ┃ Mean ┃ Max ┃ Top Changes ┃ - ┡━━━━━━━━╇━━━━━━━━━━━━╇━━━━━━╇━━━━━╇━━━━━━━━━━━━━━━━━━━┩ - │ price │ 60.00% │ 0.6 │ 2 │ 40.0 -> 42.0 (1x) │ - │ │ │ │ │ 20.0 -> 21.0 (1x) │ - ├────────┼────────────┼──────┼─────┼───────────────────┤ - │ qty │ 80.00% │ 0.2 │ 1 │ 4 -> 5 (1x) │ - ├────────┼────────────┼──────┼─────┼───────────────────┤ - │ status │ 80.00% │ │ │ "c" -> "x" (1x) │ - └────────┴────────────┴──────┴─────┴───────────────────┘ + ┏━━━━━━━━┳━━━━━━━━━━━━┳━━━━━━━━━━━┳━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━┓ + ┃ Column ┃ Match Rate ┃ Mean diff ┃ Max diff ┃ Top Changes ┃ + ┡━━━━━━━━╇━━━━━━━━━━━━╇━━━━━━━━━━━╇━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━┩ + │ price │ 60.00% │ 0.6 │ 2 │ 40.0 -> 42.0 (1x) │ + │ │ │ │ │ 20.0 -> 21.0 (1x) │ + ├────────┼────────────┼───────────┼──────────┼───────────────────┤ + │ qty │ 80.00% │ 0.2 │ 1 │ 4 -> 5 (1x) │ + ├────────┼────────────┼───────────┼──────────┼───────────────────┤ + │ status │ 80.00% │ │ │ "c" -> "x" (1x) │ + └────────┴────────────┴───────────┴──────────┴───────────────────┘ diff --git a/tests/summary/fixtures/metrics_presets_few/gen/pretty_False_perfect_False_top_True_slim_False_sample_rows_True_sample_pk_True.txt b/tests/summary/fixtures/metrics_presets_few/gen/pretty_False_perfect_False_top_True_slim_False_sample_rows_True_sample_pk_True.txt index 3f8a229..981538a 100644 --- a/tests/summary/fixtures/metrics_presets_few/gen/pretty_False_perfect_False_top_True_slim_False_sample_rows_True_sample_pk_True.txt +++ b/tests/summary/fixtures/metrics_presets_few/gen/pretty_False_perfect_False_top_True_slim_False_sample_rows_True_sample_pk_True.txt @@ -20,13 +20,13 @@ Columns ▔▔▔▔▔▔▔ - ┏━━━━━━━━┳━━━━━━━━━━━━┳━━━━━━┳━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━┓ - ┃ Column ┃ Match Rate ┃ Mean ┃ Max ┃ Top Changes ┃ - ┡━━━━━━━━╇━━━━━━━━━━━━╇━━━━━━╇━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━┩ - │ price │ 60.00% │ 0.6 │ 2 │ 40.0 -> 42.0 (1x, e.g. 4) │ - │ │ │ │ │ 20.0 -> 21.0 (1x, e.g. 2) │ - ├────────┼────────────┼──────┼─────┼───────────────────────────┤ - │ qty │ 80.00% │ 0.2 │ 1 │ 4 -> 5 (1x, e.g. 4) │ - ├────────┼────────────┼──────┼─────┼───────────────────────────┤ - │ status │ 80.00% │ │ │ "c" -> "x" (1x, e.g. 3) │ - └────────┴────────────┴──────┴─────┴───────────────────────────┘ + ┏━━━━━━━━┳━━━━━━━━━━━━┳━━━━━━━━━━━┳━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━┓ + ┃ Column ┃ Match Rate ┃ Mean diff ┃ Max diff ┃ Top Changes ┃ + ┡━━━━━━━━╇━━━━━━━━━━━━╇━━━━━━━━━━━╇━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━┩ + │ price │ 60.00% │ 0.6 │ 2 │ 40.0 -> 42.0 (1x, e.g. 4) │ + │ │ │ │ │ 20.0 -> 21.0 (1x, e.g. 2) │ + ├────────┼────────────┼───────────┼──────────┼───────────────────────────┤ + │ qty │ 80.00% │ 0.2 │ 1 │ 4 -> 5 (1x, e.g. 4) │ + ├────────┼────────────┼───────────┼──────────┼───────────────────────────┤ + │ status │ 80.00% │ │ │ "c" -> "x" (1x, e.g. 3) │ + └────────┴────────────┴───────────┴──────────┴───────────────────────────┘ diff --git a/tests/summary/fixtures/metrics_presets_few/gen/pretty_False_perfect_False_top_True_slim_True_sample_rows_False_sample_pk_False.txt b/tests/summary/fixtures/metrics_presets_few/gen/pretty_False_perfect_False_top_True_slim_True_sample_rows_False_sample_pk_False.txt index 7218d6c..ea19692 100644 --- a/tests/summary/fixtures/metrics_presets_few/gen/pretty_False_perfect_False_top_True_slim_True_sample_rows_False_sample_pk_False.txt +++ b/tests/summary/fixtures/metrics_presets_few/gen/pretty_False_perfect_False_top_True_slim_True_sample_rows_False_sample_pk_False.txt @@ -8,13 +8,13 @@ Columns ▔▔▔▔▔▔▔ - ┏━━━━━━━━┳━━━━━━━━━━━━┳━━━━━━┳━━━━━┳━━━━━━━━━━━━━━━━━━━┓ - ┃ Column ┃ Match Rate ┃ Mean ┃ Max ┃ Top Changes ┃ - ┡━━━━━━━━╇━━━━━━━━━━━━╇━━━━━━╇━━━━━╇━━━━━━━━━━━━━━━━━━━┩ - │ price │ 60.00% │ 0.6 │ 2 │ 40.0 -> 42.0 (1x) │ - │ │ │ │ │ 20.0 -> 21.0 (1x) │ - ├────────┼────────────┼──────┼─────┼───────────────────┤ - │ qty │ 80.00% │ 0.2 │ 1 │ 4 -> 5 (1x) │ - ├────────┼────────────┼──────┼─────┼───────────────────┤ - │ status │ 80.00% │ │ │ "c" -> "x" (1x) │ - └────────┴────────────┴──────┴─────┴───────────────────┘ + ┏━━━━━━━━┳━━━━━━━━━━━━┳━━━━━━━━━━━┳━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━┓ + ┃ Column ┃ Match Rate ┃ Mean diff ┃ Max diff ┃ Top Changes ┃ + ┡━━━━━━━━╇━━━━━━━━━━━━╇━━━━━━━━━━━╇━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━┩ + │ price │ 60.00% │ 0.6 │ 2 │ 40.0 -> 42.0 (1x) │ + │ │ │ │ │ 20.0 -> 21.0 (1x) │ + ├────────┼────────────┼───────────┼──────────┼───────────────────┤ + │ qty │ 80.00% │ 0.2 │ 1 │ 4 -> 5 (1x) │ + ├────────┼────────────┼───────────┼──────────┼───────────────────┤ + │ status │ 80.00% │ │ │ "c" -> "x" (1x) │ + └────────┴────────────┴───────────┴──────────┴───────────────────┘ diff --git a/tests/summary/fixtures/metrics_presets_few/gen/pretty_False_perfect_False_top_True_slim_True_sample_rows_True_sample_pk_True.txt b/tests/summary/fixtures/metrics_presets_few/gen/pretty_False_perfect_False_top_True_slim_True_sample_rows_True_sample_pk_True.txt index 4c8c7ce..3b7d07d 100644 --- a/tests/summary/fixtures/metrics_presets_few/gen/pretty_False_perfect_False_top_True_slim_True_sample_rows_True_sample_pk_True.txt +++ b/tests/summary/fixtures/metrics_presets_few/gen/pretty_False_perfect_False_top_True_slim_True_sample_rows_True_sample_pk_True.txt @@ -8,13 +8,13 @@ Columns ▔▔▔▔▔▔▔ - ┏━━━━━━━━┳━━━━━━━━━━━━┳━━━━━━┳━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━┓ - ┃ Column ┃ Match Rate ┃ Mean ┃ Max ┃ Top Changes ┃ - ┡━━━━━━━━╇━━━━━━━━━━━━╇━━━━━━╇━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━┩ - │ price │ 60.00% │ 0.6 │ 2 │ 40.0 -> 42.0 (1x, e.g. 4) │ - │ │ │ │ │ 20.0 -> 21.0 (1x, e.g. 2) │ - ├────────┼────────────┼──────┼─────┼───────────────────────────┤ - │ qty │ 80.00% │ 0.2 │ 1 │ 4 -> 5 (1x, e.g. 4) │ - ├────────┼────────────┼──────┼─────┼───────────────────────────┤ - │ status │ 80.00% │ │ │ "c" -> "x" (1x, e.g. 3) │ - └────────┴────────────┴──────┴─────┴───────────────────────────┘ + ┏━━━━━━━━┳━━━━━━━━━━━━┳━━━━━━━━━━━┳━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━┓ + ┃ Column ┃ Match Rate ┃ Mean diff ┃ Max diff ┃ Top Changes ┃ + ┡━━━━━━━━╇━━━━━━━━━━━━╇━━━━━━━━━━━╇━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━┩ + │ price │ 60.00% │ 0.6 │ 2 │ 40.0 -> 42.0 (1x, e.g. 4) │ + │ │ │ │ │ 20.0 -> 21.0 (1x, e.g. 2) │ + ├────────┼────────────┼───────────┼──────────┼───────────────────────────┤ + │ qty │ 80.00% │ 0.2 │ 1 │ 4 -> 5 (1x, e.g. 4) │ + ├────────┼────────────┼───────────┼──────────┼───────────────────────────┤ + │ status │ 80.00% │ │ │ "c" -> "x" (1x, e.g. 3) │ + └────────┴────────────┴───────────┴──────────┴───────────────────────────┘ diff --git a/tests/summary/fixtures/metrics_presets_few/gen/pretty_False_perfect_True_top_False_slim_False_sample_rows_False_sample_pk_False.txt b/tests/summary/fixtures/metrics_presets_few/gen/pretty_False_perfect_True_top_False_slim_False_sample_rows_False_sample_pk_False.txt index 93c45a8..46032f4 100644 --- a/tests/summary/fixtures/metrics_presets_few/gen/pretty_False_perfect_True_top_False_slim_False_sample_rows_False_sample_pk_False.txt +++ b/tests/summary/fixtures/metrics_presets_few/gen/pretty_False_perfect_True_top_False_slim_False_sample_rows_False_sample_pk_False.txt @@ -20,10 +20,10 @@ Columns ▔▔▔▔▔▔▔ - ┏━━━━━━━━┳━━━━━━━━━━━━┳━━━━━━┳━━━━━┓ - ┃ Column ┃ Match Rate ┃ Mean ┃ Max ┃ - ┡━━━━━━━━╇━━━━━━━━━━━━╇━━━━━━╇━━━━━┩ - │ price │ 60.00% │ 0.6 │ 2 │ - │ qty │ 80.00% │ 0.2 │ 1 │ - │ status │ 80.00% │ │ │ - └────────┴────────────┴──────┴─────┘ + ┏━━━━━━━━┳━━━━━━━━━━━━┳━━━━━━━━━━━┳━━━━━━━━━━┓ + ┃ Column ┃ Match Rate ┃ Mean diff ┃ Max diff ┃ + ┡━━━━━━━━╇━━━━━━━━━━━━╇━━━━━━━━━━━╇━━━━━━━━━━┩ + │ price │ 60.00% │ 0.6 │ 2 │ + │ qty │ 80.00% │ 0.2 │ 1 │ + │ status │ 80.00% │ │ │ + └────────┴────────────┴───────────┴──────────┘ diff --git a/tests/summary/fixtures/metrics_presets_few/gen/pretty_False_perfect_True_top_False_slim_False_sample_rows_True_sample_pk_False.txt b/tests/summary/fixtures/metrics_presets_few/gen/pretty_False_perfect_True_top_False_slim_False_sample_rows_True_sample_pk_False.txt index 93c45a8..46032f4 100644 --- a/tests/summary/fixtures/metrics_presets_few/gen/pretty_False_perfect_True_top_False_slim_False_sample_rows_True_sample_pk_False.txt +++ b/tests/summary/fixtures/metrics_presets_few/gen/pretty_False_perfect_True_top_False_slim_False_sample_rows_True_sample_pk_False.txt @@ -20,10 +20,10 @@ Columns ▔▔▔▔▔▔▔ - ┏━━━━━━━━┳━━━━━━━━━━━━┳━━━━━━┳━━━━━┓ - ┃ Column ┃ Match Rate ┃ Mean ┃ Max ┃ - ┡━━━━━━━━╇━━━━━━━━━━━━╇━━━━━━╇━━━━━┩ - │ price │ 60.00% │ 0.6 │ 2 │ - │ qty │ 80.00% │ 0.2 │ 1 │ - │ status │ 80.00% │ │ │ - └────────┴────────────┴──────┴─────┘ + ┏━━━━━━━━┳━━━━━━━━━━━━┳━━━━━━━━━━━┳━━━━━━━━━━┓ + ┃ Column ┃ Match Rate ┃ Mean diff ┃ Max diff ┃ + ┡━━━━━━━━╇━━━━━━━━━━━━╇━━━━━━━━━━━╇━━━━━━━━━━┩ + │ price │ 60.00% │ 0.6 │ 2 │ + │ qty │ 80.00% │ 0.2 │ 1 │ + │ status │ 80.00% │ │ │ + └────────┴────────────┴───────────┴──────────┘ diff --git a/tests/summary/fixtures/metrics_presets_few/gen/pretty_False_perfect_True_top_False_slim_True_sample_rows_False_sample_pk_False.txt b/tests/summary/fixtures/metrics_presets_few/gen/pretty_False_perfect_True_top_False_slim_True_sample_rows_False_sample_pk_False.txt index 8d4e5fc..ddcae53 100644 --- a/tests/summary/fixtures/metrics_presets_few/gen/pretty_False_perfect_True_top_False_slim_True_sample_rows_False_sample_pk_False.txt +++ b/tests/summary/fixtures/metrics_presets_few/gen/pretty_False_perfect_True_top_False_slim_True_sample_rows_False_sample_pk_False.txt @@ -8,10 +8,10 @@ Columns ▔▔▔▔▔▔▔ - ┏━━━━━━━━┳━━━━━━━━━━━━┳━━━━━━┳━━━━━┓ - ┃ Column ┃ Match Rate ┃ Mean ┃ Max ┃ - ┡━━━━━━━━╇━━━━━━━━━━━━╇━━━━━━╇━━━━━┩ - │ price │ 60.00% │ 0.6 │ 2 │ - │ qty │ 80.00% │ 0.2 │ 1 │ - │ status │ 80.00% │ │ │ - └────────┴────────────┴──────┴─────┘ + ┏━━━━━━━━┳━━━━━━━━━━━━┳━━━━━━━━━━━┳━━━━━━━━━━┓ + ┃ Column ┃ Match Rate ┃ Mean diff ┃ Max diff ┃ + ┡━━━━━━━━╇━━━━━━━━━━━━╇━━━━━━━━━━━╇━━━━━━━━━━┩ + │ price │ 60.00% │ 0.6 │ 2 │ + │ qty │ 80.00% │ 0.2 │ 1 │ + │ status │ 80.00% │ │ │ + └────────┴────────────┴───────────┴──────────┘ diff --git a/tests/summary/fixtures/metrics_presets_few/gen/pretty_False_perfect_True_top_False_slim_True_sample_rows_True_sample_pk_False.txt b/tests/summary/fixtures/metrics_presets_few/gen/pretty_False_perfect_True_top_False_slim_True_sample_rows_True_sample_pk_False.txt index 8d4e5fc..ddcae53 100644 --- a/tests/summary/fixtures/metrics_presets_few/gen/pretty_False_perfect_True_top_False_slim_True_sample_rows_True_sample_pk_False.txt +++ b/tests/summary/fixtures/metrics_presets_few/gen/pretty_False_perfect_True_top_False_slim_True_sample_rows_True_sample_pk_False.txt @@ -8,10 +8,10 @@ Columns ▔▔▔▔▔▔▔ - ┏━━━━━━━━┳━━━━━━━━━━━━┳━━━━━━┳━━━━━┓ - ┃ Column ┃ Match Rate ┃ Mean ┃ Max ┃ - ┡━━━━━━━━╇━━━━━━━━━━━━╇━━━━━━╇━━━━━┩ - │ price │ 60.00% │ 0.6 │ 2 │ - │ qty │ 80.00% │ 0.2 │ 1 │ - │ status │ 80.00% │ │ │ - └────────┴────────────┴──────┴─────┘ + ┏━━━━━━━━┳━━━━━━━━━━━━┳━━━━━━━━━━━┳━━━━━━━━━━┓ + ┃ Column ┃ Match Rate ┃ Mean diff ┃ Max diff ┃ + ┡━━━━━━━━╇━━━━━━━━━━━━╇━━━━━━━━━━━╇━━━━━━━━━━┩ + │ price │ 60.00% │ 0.6 │ 2 │ + │ qty │ 80.00% │ 0.2 │ 1 │ + │ status │ 80.00% │ │ │ + └────────┴────────────┴───────────┴──────────┘ diff --git a/tests/summary/fixtures/metrics_presets_few/gen/pretty_False_perfect_True_top_True_slim_False_sample_rows_False_sample_pk_False.txt b/tests/summary/fixtures/metrics_presets_few/gen/pretty_False_perfect_True_top_True_slim_False_sample_rows_False_sample_pk_False.txt index 78312e9..3e1aa3c 100644 --- a/tests/summary/fixtures/metrics_presets_few/gen/pretty_False_perfect_True_top_True_slim_False_sample_rows_False_sample_pk_False.txt +++ b/tests/summary/fixtures/metrics_presets_few/gen/pretty_False_perfect_True_top_True_slim_False_sample_rows_False_sample_pk_False.txt @@ -20,13 +20,13 @@ Columns ▔▔▔▔▔▔▔ - ┏━━━━━━━━┳━━━━━━━━━━━━┳━━━━━━┳━━━━━┳━━━━━━━━━━━━━━━━━━━┓ - ┃ Column ┃ Match Rate ┃ Mean ┃ Max ┃ Top Changes ┃ - ┡━━━━━━━━╇━━━━━━━━━━━━╇━━━━━━╇━━━━━╇━━━━━━━━━━━━━━━━━━━┩ - │ price │ 60.00% │ 0.6 │ 2 │ 40.0 -> 42.0 (1x) │ - │ │ │ │ │ 20.0 -> 21.0 (1x) │ - ├────────┼────────────┼──────┼─────┼───────────────────┤ - │ qty │ 80.00% │ 0.2 │ 1 │ 4 -> 5 (1x) │ - ├────────┼────────────┼──────┼─────┼───────────────────┤ - │ status │ 80.00% │ │ │ "c" -> "x" (1x) │ - └────────┴────────────┴──────┴─────┴───────────────────┘ + ┏━━━━━━━━┳━━━━━━━━━━━━┳━━━━━━━━━━━┳━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━┓ + ┃ Column ┃ Match Rate ┃ Mean diff ┃ Max diff ┃ Top Changes ┃ + ┡━━━━━━━━╇━━━━━━━━━━━━╇━━━━━━━━━━━╇━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━┩ + │ price │ 60.00% │ 0.6 │ 2 │ 40.0 -> 42.0 (1x) │ + │ │ │ │ │ 20.0 -> 21.0 (1x) │ + ├────────┼────────────┼───────────┼──────────┼───────────────────┤ + │ qty │ 80.00% │ 0.2 │ 1 │ 4 -> 5 (1x) │ + ├────────┼────────────┼───────────┼──────────┼───────────────────┤ + │ status │ 80.00% │ │ │ "c" -> "x" (1x) │ + └────────┴────────────┴───────────┴──────────┴───────────────────┘ diff --git a/tests/summary/fixtures/metrics_presets_few/gen/pretty_False_perfect_True_top_True_slim_False_sample_rows_True_sample_pk_True.txt b/tests/summary/fixtures/metrics_presets_few/gen/pretty_False_perfect_True_top_True_slim_False_sample_rows_True_sample_pk_True.txt index 3f8a229..981538a 100644 --- a/tests/summary/fixtures/metrics_presets_few/gen/pretty_False_perfect_True_top_True_slim_False_sample_rows_True_sample_pk_True.txt +++ b/tests/summary/fixtures/metrics_presets_few/gen/pretty_False_perfect_True_top_True_slim_False_sample_rows_True_sample_pk_True.txt @@ -20,13 +20,13 @@ Columns ▔▔▔▔▔▔▔ - ┏━━━━━━━━┳━━━━━━━━━━━━┳━━━━━━┳━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━┓ - ┃ Column ┃ Match Rate ┃ Mean ┃ Max ┃ Top Changes ┃ - ┡━━━━━━━━╇━━━━━━━━━━━━╇━━━━━━╇━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━┩ - │ price │ 60.00% │ 0.6 │ 2 │ 40.0 -> 42.0 (1x, e.g. 4) │ - │ │ │ │ │ 20.0 -> 21.0 (1x, e.g. 2) │ - ├────────┼────────────┼──────┼─────┼───────────────────────────┤ - │ qty │ 80.00% │ 0.2 │ 1 │ 4 -> 5 (1x, e.g. 4) │ - ├────────┼────────────┼──────┼─────┼───────────────────────────┤ - │ status │ 80.00% │ │ │ "c" -> "x" (1x, e.g. 3) │ - └────────┴────────────┴──────┴─────┴───────────────────────────┘ + ┏━━━━━━━━┳━━━━━━━━━━━━┳━━━━━━━━━━━┳━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━┓ + ┃ Column ┃ Match Rate ┃ Mean diff ┃ Max diff ┃ Top Changes ┃ + ┡━━━━━━━━╇━━━━━━━━━━━━╇━━━━━━━━━━━╇━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━┩ + │ price │ 60.00% │ 0.6 │ 2 │ 40.0 -> 42.0 (1x, e.g. 4) │ + │ │ │ │ │ 20.0 -> 21.0 (1x, e.g. 2) │ + ├────────┼────────────┼───────────┼──────────┼───────────────────────────┤ + │ qty │ 80.00% │ 0.2 │ 1 │ 4 -> 5 (1x, e.g. 4) │ + ├────────┼────────────┼───────────┼──────────┼───────────────────────────┤ + │ status │ 80.00% │ │ │ "c" -> "x" (1x, e.g. 3) │ + └────────┴────────────┴───────────┴──────────┴───────────────────────────┘ diff --git a/tests/summary/fixtures/metrics_presets_few/gen/pretty_False_perfect_True_top_True_slim_True_sample_rows_False_sample_pk_False.txt b/tests/summary/fixtures/metrics_presets_few/gen/pretty_False_perfect_True_top_True_slim_True_sample_rows_False_sample_pk_False.txt index 7218d6c..ea19692 100644 --- a/tests/summary/fixtures/metrics_presets_few/gen/pretty_False_perfect_True_top_True_slim_True_sample_rows_False_sample_pk_False.txt +++ b/tests/summary/fixtures/metrics_presets_few/gen/pretty_False_perfect_True_top_True_slim_True_sample_rows_False_sample_pk_False.txt @@ -8,13 +8,13 @@ Columns ▔▔▔▔▔▔▔ - ┏━━━━━━━━┳━━━━━━━━━━━━┳━━━━━━┳━━━━━┳━━━━━━━━━━━━━━━━━━━┓ - ┃ Column ┃ Match Rate ┃ Mean ┃ Max ┃ Top Changes ┃ - ┡━━━━━━━━╇━━━━━━━━━━━━╇━━━━━━╇━━━━━╇━━━━━━━━━━━━━━━━━━━┩ - │ price │ 60.00% │ 0.6 │ 2 │ 40.0 -> 42.0 (1x) │ - │ │ │ │ │ 20.0 -> 21.0 (1x) │ - ├────────┼────────────┼──────┼─────┼───────────────────┤ - │ qty │ 80.00% │ 0.2 │ 1 │ 4 -> 5 (1x) │ - ├────────┼────────────┼──────┼─────┼───────────────────┤ - │ status │ 80.00% │ │ │ "c" -> "x" (1x) │ - └────────┴────────────┴──────┴─────┴───────────────────┘ + ┏━━━━━━━━┳━━━━━━━━━━━━┳━━━━━━━━━━━┳━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━┓ + ┃ Column ┃ Match Rate ┃ Mean diff ┃ Max diff ┃ Top Changes ┃ + ┡━━━━━━━━╇━━━━━━━━━━━━╇━━━━━━━━━━━╇━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━┩ + │ price │ 60.00% │ 0.6 │ 2 │ 40.0 -> 42.0 (1x) │ + │ │ │ │ │ 20.0 -> 21.0 (1x) │ + ├────────┼────────────┼───────────┼──────────┼───────────────────┤ + │ qty │ 80.00% │ 0.2 │ 1 │ 4 -> 5 (1x) │ + ├────────┼────────────┼───────────┼──────────┼───────────────────┤ + │ status │ 80.00% │ │ │ "c" -> "x" (1x) │ + └────────┴────────────┴───────────┴──────────┴───────────────────┘ diff --git a/tests/summary/fixtures/metrics_presets_few/gen/pretty_False_perfect_True_top_True_slim_True_sample_rows_True_sample_pk_True.txt b/tests/summary/fixtures/metrics_presets_few/gen/pretty_False_perfect_True_top_True_slim_True_sample_rows_True_sample_pk_True.txt index 4c8c7ce..3b7d07d 100644 --- a/tests/summary/fixtures/metrics_presets_few/gen/pretty_False_perfect_True_top_True_slim_True_sample_rows_True_sample_pk_True.txt +++ b/tests/summary/fixtures/metrics_presets_few/gen/pretty_False_perfect_True_top_True_slim_True_sample_rows_True_sample_pk_True.txt @@ -8,13 +8,13 @@ Columns ▔▔▔▔▔▔▔ - ┏━━━━━━━━┳━━━━━━━━━━━━┳━━━━━━┳━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━┓ - ┃ Column ┃ Match Rate ┃ Mean ┃ Max ┃ Top Changes ┃ - ┡━━━━━━━━╇━━━━━━━━━━━━╇━━━━━━╇━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━┩ - │ price │ 60.00% │ 0.6 │ 2 │ 40.0 -> 42.0 (1x, e.g. 4) │ - │ │ │ │ │ 20.0 -> 21.0 (1x, e.g. 2) │ - ├────────┼────────────┼──────┼─────┼───────────────────────────┤ - │ qty │ 80.00% │ 0.2 │ 1 │ 4 -> 5 (1x, e.g. 4) │ - ├────────┼────────────┼──────┼─────┼───────────────────────────┤ - │ status │ 80.00% │ │ │ "c" -> "x" (1x, e.g. 3) │ - └────────┴────────────┴──────┴─────┴───────────────────────────┘ + ┏━━━━━━━━┳━━━━━━━━━━━━┳━━━━━━━━━━━┳━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━┓ + ┃ Column ┃ Match Rate ┃ Mean diff ┃ Max diff ┃ Top Changes ┃ + ┡━━━━━━━━╇━━━━━━━━━━━━╇━━━━━━━━━━━╇━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━┩ + │ price │ 60.00% │ 0.6 │ 2 │ 40.0 -> 42.0 (1x, e.g. 4) │ + │ │ │ │ │ 20.0 -> 21.0 (1x, e.g. 2) │ + ├────────┼────────────┼───────────┼──────────┼───────────────────────────┤ + │ qty │ 80.00% │ 0.2 │ 1 │ 4 -> 5 (1x, e.g. 4) │ + ├────────┼────────────┼───────────┼──────────┼───────────────────────────┤ + │ status │ 80.00% │ │ │ "c" -> "x" (1x, e.g. 3) │ + └────────┴────────────┴───────────┴──────────┴───────────────────────────┘ diff --git a/tests/summary/fixtures/metrics_presets_few/gen/pretty_True_perfect_False_top_False_slim_False_sample_rows_False_sample_pk_False.txt b/tests/summary/fixtures/metrics_presets_few/gen/pretty_True_perfect_False_top_False_slim_False_sample_rows_False_sample_pk_False.txt index ee90b34..1b0247f 100644 --- a/tests/summary/fixtures/metrics_presets_few/gen/pretty_True_perfect_False_top_False_slim_False_sample_rows_False_sample_pk_False.txt +++ b/tests/summary/fixtures/metrics_presets_few/gen/pretty_True_perfect_False_top_False_slim_False_sample_rows_False_sample_pk_False.txt @@ -20,10 +20,10 @@ Columns ▔▔▔▔▔▔▔ - ┏━━━━━━━━┳━━━━━━━━━━━━┳━━━━━━┳━━━━━┓ - ┃ Column ┃ Match Rate ┃ Mean ┃ Max ┃ - ┡━━━━━━━━╇━━━━━━━━━━━━╇━━━━━━╇━━━━━┩ - │ price  │ 60.00% │ 0.6 │ 2 │ - │ qty  │ 80.00% │ 0.2 │ 1 │ - │ status │ 80.00% │ │ │ - └────────┴────────────┴──────┴─────┘ + ┏━━━━━━━━┳━━━━━━━━━━━━┳━━━━━━━━━━━┳━━━━━━━━━━┓ + ┃ Column ┃ Match Rate ┃ Mean diff ┃ Max diff ┃ + ┡━━━━━━━━╇━━━━━━━━━━━━╇━━━━━━━━━━━╇━━━━━━━━━━┩ + │ price  │ 60.00% │ 0.6 │ 2 │ + │ qty  │ 80.00% │ 0.2 │ 1 │ + │ status │ 80.00% │ │ │ + └────────┴────────────┴───────────┴──────────┘ diff --git a/tests/summary/fixtures/metrics_presets_few/gen/pretty_True_perfect_False_top_False_slim_False_sample_rows_True_sample_pk_False.txt b/tests/summary/fixtures/metrics_presets_few/gen/pretty_True_perfect_False_top_False_slim_False_sample_rows_True_sample_pk_False.txt index ee90b34..1b0247f 100644 --- a/tests/summary/fixtures/metrics_presets_few/gen/pretty_True_perfect_False_top_False_slim_False_sample_rows_True_sample_pk_False.txt +++ b/tests/summary/fixtures/metrics_presets_few/gen/pretty_True_perfect_False_top_False_slim_False_sample_rows_True_sample_pk_False.txt @@ -20,10 +20,10 @@ Columns ▔▔▔▔▔▔▔ - ┏━━━━━━━━┳━━━━━━━━━━━━┳━━━━━━┳━━━━━┓ - ┃ Column ┃ Match Rate ┃ Mean ┃ Max ┃ - ┡━━━━━━━━╇━━━━━━━━━━━━╇━━━━━━╇━━━━━┩ - │ price  │ 60.00% │ 0.6 │ 2 │ - │ qty  │ 80.00% │ 0.2 │ 1 │ - │ status │ 80.00% │ │ │ - └────────┴────────────┴──────┴─────┘ + ┏━━━━━━━━┳━━━━━━━━━━━━┳━━━━━━━━━━━┳━━━━━━━━━━┓ + ┃ Column ┃ Match Rate ┃ Mean diff ┃ Max diff ┃ + ┡━━━━━━━━╇━━━━━━━━━━━━╇━━━━━━━━━━━╇━━━━━━━━━━┩ + │ price  │ 60.00% │ 0.6 │ 2 │ + │ qty  │ 80.00% │ 0.2 │ 1 │ + │ status │ 80.00% │ │ │ + └────────┴────────────┴───────────┴──────────┘ diff --git a/tests/summary/fixtures/metrics_presets_few/gen/pretty_True_perfect_False_top_False_slim_True_sample_rows_False_sample_pk_False.txt b/tests/summary/fixtures/metrics_presets_few/gen/pretty_True_perfect_False_top_False_slim_True_sample_rows_False_sample_pk_False.txt index b106802..16a08ec 100644 --- a/tests/summary/fixtures/metrics_presets_few/gen/pretty_True_perfect_False_top_False_slim_True_sample_rows_False_sample_pk_False.txt +++ b/tests/summary/fixtures/metrics_presets_few/gen/pretty_True_perfect_False_top_False_slim_True_sample_rows_False_sample_pk_False.txt @@ -8,10 +8,10 @@ Columns ▔▔▔▔▔▔▔ - ┏━━━━━━━━┳━━━━━━━━━━━━┳━━━━━━┳━━━━━┓ - ┃ Column ┃ Match Rate ┃ Mean ┃ Max ┃ - ┡━━━━━━━━╇━━━━━━━━━━━━╇━━━━━━╇━━━━━┩ - │ price  │ 60.00% │ 0.6 │ 2 │ - │ qty  │ 80.00% │ 0.2 │ 1 │ - │ status │ 80.00% │ │ │ - └────────┴────────────┴──────┴─────┘ + ┏━━━━━━━━┳━━━━━━━━━━━━┳━━━━━━━━━━━┳━━━━━━━━━━┓ + ┃ Column ┃ Match Rate ┃ Mean diff ┃ Max diff ┃ + ┡━━━━━━━━╇━━━━━━━━━━━━╇━━━━━━━━━━━╇━━━━━━━━━━┩ + │ price  │ 60.00% │ 0.6 │ 2 │ + │ qty  │ 80.00% │ 0.2 │ 1 │ + │ status │ 80.00% │ │ │ + └────────┴────────────┴───────────┴──────────┘ diff --git a/tests/summary/fixtures/metrics_presets_few/gen/pretty_True_perfect_False_top_False_slim_True_sample_rows_True_sample_pk_False.txt b/tests/summary/fixtures/metrics_presets_few/gen/pretty_True_perfect_False_top_False_slim_True_sample_rows_True_sample_pk_False.txt index b106802..16a08ec 100644 --- a/tests/summary/fixtures/metrics_presets_few/gen/pretty_True_perfect_False_top_False_slim_True_sample_rows_True_sample_pk_False.txt +++ b/tests/summary/fixtures/metrics_presets_few/gen/pretty_True_perfect_False_top_False_slim_True_sample_rows_True_sample_pk_False.txt @@ -8,10 +8,10 @@ Columns ▔▔▔▔▔▔▔ - ┏━━━━━━━━┳━━━━━━━━━━━━┳━━━━━━┳━━━━━┓ - ┃ Column ┃ Match Rate ┃ Mean ┃ Max ┃ - ┡━━━━━━━━╇━━━━━━━━━━━━╇━━━━━━╇━━━━━┩ - │ price  │ 60.00% │ 0.6 │ 2 │ - │ qty  │ 80.00% │ 0.2 │ 1 │ - │ status │ 80.00% │ │ │ - └────────┴────────────┴──────┴─────┘ + ┏━━━━━━━━┳━━━━━━━━━━━━┳━━━━━━━━━━━┳━━━━━━━━━━┓ + ┃ Column ┃ Match Rate ┃ Mean diff ┃ Max diff ┃ + ┡━━━━━━━━╇━━━━━━━━━━━━╇━━━━━━━━━━━╇━━━━━━━━━━┩ + │ price  │ 60.00% │ 0.6 │ 2 │ + │ qty  │ 80.00% │ 0.2 │ 1 │ + │ status │ 80.00% │ │ │ + └────────┴────────────┴───────────┴──────────┘ diff --git a/tests/summary/fixtures/metrics_presets_few/gen/pretty_True_perfect_False_top_True_slim_False_sample_rows_False_sample_pk_False.txt b/tests/summary/fixtures/metrics_presets_few/gen/pretty_True_perfect_False_top_True_slim_False_sample_rows_False_sample_pk_False.txt index 43bd1a8..04d78f7 100644 --- a/tests/summary/fixtures/metrics_presets_few/gen/pretty_True_perfect_False_top_True_slim_False_sample_rows_False_sample_pk_False.txt +++ b/tests/summary/fixtures/metrics_presets_few/gen/pretty_True_perfect_False_top_True_slim_False_sample_rows_False_sample_pk_False.txt @@ -20,13 +20,13 @@ Columns ▔▔▔▔▔▔▔ - ┏━━━━━━━━┳━━━━━━━━━━━━┳━━━━━━┳━━━━━┳━━━━━━━━━━━━━━━━━━━┓ - ┃ Column ┃ Match Rate ┃ Mean ┃ Max ┃  Top Changes ┃ - ┡━━━━━━━━╇━━━━━━━━━━━━╇━━━━━━╇━━━━━╇━━━━━━━━━━━━━━━━━━━┩ - │ price  │ 60.00% │ 0.6 │ 2 │ 40.0 -> 42.0 (1x) │ - │ │ │ │ │ 20.0 -> 21.0 (1x) │ - ├────────┼────────────┼──────┼─────┼───────────────────┤ - │ qty  │ 80.00% │ 0.2 │ 1 │ 4 -> 5 (1x) │ - ├────────┼────────────┼──────┼─────┼───────────────────┤ - │ status │ 80.00% │ │ │ "c" -> "x" (1x) │ - └────────┴────────────┴──────┴─────┴───────────────────┘ + ┏━━━━━━━━┳━━━━━━━━━━━━┳━━━━━━━━━━━┳━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━┓ + ┃ Column ┃ Match Rate ┃ Mean diff ┃ Max diff ┃  Top Changes ┃ + ┡━━━━━━━━╇━━━━━━━━━━━━╇━━━━━━━━━━━╇━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━┩ + │ price  │ 60.00% │ 0.6 │ 2 │ 40.0 -> 42.0 (1x) │ + │ │ │ │ │ 20.0 -> 21.0 (1x) │ + ├────────┼────────────┼───────────┼──────────┼───────────────────┤ + │ qty  │ 80.00% │ 0.2 │ 1 │ 4 -> 5 (1x) │ + ├────────┼────────────┼───────────┼──────────┼───────────────────┤ + │ status │ 80.00% │ │ │ "c" -> "x" (1x) │ + └────────┴────────────┴───────────┴──────────┴───────────────────┘ diff --git a/tests/summary/fixtures/metrics_presets_few/gen/pretty_True_perfect_False_top_True_slim_False_sample_rows_True_sample_pk_True.txt b/tests/summary/fixtures/metrics_presets_few/gen/pretty_True_perfect_False_top_True_slim_False_sample_rows_True_sample_pk_True.txt index 67c851c..75445cf 100644 --- a/tests/summary/fixtures/metrics_presets_few/gen/pretty_True_perfect_False_top_True_slim_False_sample_rows_True_sample_pk_True.txt +++ b/tests/summary/fixtures/metrics_presets_few/gen/pretty_True_perfect_False_top_True_slim_False_sample_rows_True_sample_pk_True.txt @@ -20,13 +20,13 @@ Columns ▔▔▔▔▔▔▔ - ┏━━━━━━━━┳━━━━━━━━━━━━┳━━━━━━┳━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━┓ - ┃ Column ┃ Match Rate ┃ Mean ┃ Max ┃  Top Changes ┃ - ┡━━━━━━━━╇━━━━━━━━━━━━╇━━━━━━╇━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━┩ - │ price  │ 60.00% │ 0.6 │ 2 │ 40.0 -> 42.0 (1x, e.g. 4) │ - │ │ │ │ │ 20.0 -> 21.0 (1x, e.g. 2) │ - ├────────┼────────────┼──────┼─────┼───────────────────────────┤ - │ qty  │ 80.00% │ 0.2 │ 1 │ 4 -> 5 (1x, e.g. 4) │ - ├────────┼────────────┼──────┼─────┼───────────────────────────┤ - │ status │ 80.00% │ │ │ "c" -> "x" (1x, e.g. 3) │ - └────────┴────────────┴──────┴─────┴───────────────────────────┘ + ┏━━━━━━━━┳━━━━━━━━━━━━┳━━━━━━━━━━━┳━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━┓ + ┃ Column ┃ Match Rate ┃ Mean diff ┃ Max diff ┃  Top Changes ┃ + ┡━━━━━━━━╇━━━━━━━━━━━━╇━━━━━━━━━━━╇━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━┩ + │ price  │ 60.00% │ 0.6 │ 2 │ 40.0 -> 42.0 (1x, e.g. 4) │ + │ │ │ │ │ 20.0 -> 21.0 (1x, e.g. 2) │ + ├────────┼────────────┼───────────┼──────────┼───────────────────────────┤ + │ qty  │ 80.00% │ 0.2 │ 1 │ 4 -> 5 (1x, e.g. 4) │ + ├────────┼────────────┼───────────┼──────────┼───────────────────────────┤ + │ status │ 80.00% │ │ │ "c" -> "x" (1x, e.g. 3) │ + └────────┴────────────┴───────────┴──────────┴───────────────────────────┘ diff --git a/tests/summary/fixtures/metrics_presets_few/gen/pretty_True_perfect_False_top_True_slim_True_sample_rows_False_sample_pk_False.txt b/tests/summary/fixtures/metrics_presets_few/gen/pretty_True_perfect_False_top_True_slim_True_sample_rows_False_sample_pk_False.txt index 01d0278..709a290 100644 --- a/tests/summary/fixtures/metrics_presets_few/gen/pretty_True_perfect_False_top_True_slim_True_sample_rows_False_sample_pk_False.txt +++ b/tests/summary/fixtures/metrics_presets_few/gen/pretty_True_perfect_False_top_True_slim_True_sample_rows_False_sample_pk_False.txt @@ -8,13 +8,13 @@ Columns ▔▔▔▔▔▔▔ - ┏━━━━━━━━┳━━━━━━━━━━━━┳━━━━━━┳━━━━━┳━━━━━━━━━━━━━━━━━━━┓ - ┃ Column ┃ Match Rate ┃ Mean ┃ Max ┃  Top Changes ┃ - ┡━━━━━━━━╇━━━━━━━━━━━━╇━━━━━━╇━━━━━╇━━━━━━━━━━━━━━━━━━━┩ - │ price  │ 60.00% │ 0.6 │ 2 │ 40.0 -> 42.0 (1x) │ - │ │ │ │ │ 20.0 -> 21.0 (1x) │ - ├────────┼────────────┼──────┼─────┼───────────────────┤ - │ qty  │ 80.00% │ 0.2 │ 1 │ 4 -> 5 (1x) │ - ├────────┼────────────┼──────┼─────┼───────────────────┤ - │ status │ 80.00% │ │ │ "c" -> "x" (1x) │ - └────────┴────────────┴──────┴─────┴───────────────────┘ + ┏━━━━━━━━┳━━━━━━━━━━━━┳━━━━━━━━━━━┳━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━┓ + ┃ Column ┃ Match Rate ┃ Mean diff ┃ Max diff ┃  Top Changes ┃ + ┡━━━━━━━━╇━━━━━━━━━━━━╇━━━━━━━━━━━╇━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━┩ + │ price  │ 60.00% │ 0.6 │ 2 │ 40.0 -> 42.0 (1x) │ + │ │ │ │ │ 20.0 -> 21.0 (1x) │ + ├────────┼────────────┼───────────┼──────────┼───────────────────┤ + │ qty  │ 80.00% │ 0.2 │ 1 │ 4 -> 5 (1x) │ + ├────────┼────────────┼───────────┼──────────┼───────────────────┤ + │ status │ 80.00% │ │ │ "c" -> "x" (1x) │ + └────────┴────────────┴───────────┴──────────┴───────────────────┘ diff --git a/tests/summary/fixtures/metrics_presets_few/gen/pretty_True_perfect_False_top_True_slim_True_sample_rows_True_sample_pk_True.txt b/tests/summary/fixtures/metrics_presets_few/gen/pretty_True_perfect_False_top_True_slim_True_sample_rows_True_sample_pk_True.txt index e4f58e8..c55adc5 100644 --- a/tests/summary/fixtures/metrics_presets_few/gen/pretty_True_perfect_False_top_True_slim_True_sample_rows_True_sample_pk_True.txt +++ b/tests/summary/fixtures/metrics_presets_few/gen/pretty_True_perfect_False_top_True_slim_True_sample_rows_True_sample_pk_True.txt @@ -8,13 +8,13 @@ Columns ▔▔▔▔▔▔▔ - ┏━━━━━━━━┳━━━━━━━━━━━━┳━━━━━━┳━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━┓ - ┃ Column ┃ Match Rate ┃ Mean ┃ Max ┃  Top Changes ┃ - ┡━━━━━━━━╇━━━━━━━━━━━━╇━━━━━━╇━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━┩ - │ price  │ 60.00% │ 0.6 │ 2 │ 40.0 -> 42.0 (1x, e.g. 4) │ - │ │ │ │ │ 20.0 -> 21.0 (1x, e.g. 2) │ - ├────────┼────────────┼──────┼─────┼───────────────────────────┤ - │ qty  │ 80.00% │ 0.2 │ 1 │ 4 -> 5 (1x, e.g. 4) │ - ├────────┼────────────┼──────┼─────┼───────────────────────────┤ - │ status │ 80.00% │ │ │ "c" -> "x" (1x, e.g. 3) │ - └────────┴────────────┴──────┴─────┴───────────────────────────┘ + ┏━━━━━━━━┳━━━━━━━━━━━━┳━━━━━━━━━━━┳━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━┓ + ┃ Column ┃ Match Rate ┃ Mean diff ┃ Max diff ┃  Top Changes ┃ + ┡━━━━━━━━╇━━━━━━━━━━━━╇━━━━━━━━━━━╇━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━┩ + │ price  │ 60.00% │ 0.6 │ 2 │ 40.0 -> 42.0 (1x, e.g. 4) │ + │ │ │ │ │ 20.0 -> 21.0 (1x, e.g. 2) │ + ├────────┼────────────┼───────────┼──────────┼───────────────────────────┤ + │ qty  │ 80.00% │ 0.2 │ 1 │ 4 -> 5 (1x, e.g. 4) │ + ├────────┼────────────┼───────────┼──────────┼───────────────────────────┤ + │ status │ 80.00% │ │ │ "c" -> "x" (1x, e.g. 3) │ + └────────┴────────────┴───────────┴──────────┴───────────────────────────┘ diff --git a/tests/summary/fixtures/metrics_presets_few/gen/pretty_True_perfect_True_top_False_slim_False_sample_rows_False_sample_pk_False.txt b/tests/summary/fixtures/metrics_presets_few/gen/pretty_True_perfect_True_top_False_slim_False_sample_rows_False_sample_pk_False.txt index ee90b34..1b0247f 100644 --- a/tests/summary/fixtures/metrics_presets_few/gen/pretty_True_perfect_True_top_False_slim_False_sample_rows_False_sample_pk_False.txt +++ b/tests/summary/fixtures/metrics_presets_few/gen/pretty_True_perfect_True_top_False_slim_False_sample_rows_False_sample_pk_False.txt @@ -20,10 +20,10 @@ Columns ▔▔▔▔▔▔▔ - ┏━━━━━━━━┳━━━━━━━━━━━━┳━━━━━━┳━━━━━┓ - ┃ Column ┃ Match Rate ┃ Mean ┃ Max ┃ - ┡━━━━━━━━╇━━━━━━━━━━━━╇━━━━━━╇━━━━━┩ - │ price  │ 60.00% │ 0.6 │ 2 │ - │ qty  │ 80.00% │ 0.2 │ 1 │ - │ status │ 80.00% │ │ │ - └────────┴────────────┴──────┴─────┘ + ┏━━━━━━━━┳━━━━━━━━━━━━┳━━━━━━━━━━━┳━━━━━━━━━━┓ + ┃ Column ┃ Match Rate ┃ Mean diff ┃ Max diff ┃ + ┡━━━━━━━━╇━━━━━━━━━━━━╇━━━━━━━━━━━╇━━━━━━━━━━┩ + │ price  │ 60.00% │ 0.6 │ 2 │ + │ qty  │ 80.00% │ 0.2 │ 1 │ + │ status │ 80.00% │ │ │ + └────────┴────────────┴───────────┴──────────┘ diff --git a/tests/summary/fixtures/metrics_presets_few/gen/pretty_True_perfect_True_top_False_slim_False_sample_rows_True_sample_pk_False.txt b/tests/summary/fixtures/metrics_presets_few/gen/pretty_True_perfect_True_top_False_slim_False_sample_rows_True_sample_pk_False.txt index ee90b34..1b0247f 100644 --- a/tests/summary/fixtures/metrics_presets_few/gen/pretty_True_perfect_True_top_False_slim_False_sample_rows_True_sample_pk_False.txt +++ b/tests/summary/fixtures/metrics_presets_few/gen/pretty_True_perfect_True_top_False_slim_False_sample_rows_True_sample_pk_False.txt @@ -20,10 +20,10 @@ Columns ▔▔▔▔▔▔▔ - ┏━━━━━━━━┳━━━━━━━━━━━━┳━━━━━━┳━━━━━┓ - ┃ Column ┃ Match Rate ┃ Mean ┃ Max ┃ - ┡━━━━━━━━╇━━━━━━━━━━━━╇━━━━━━╇━━━━━┩ - │ price  │ 60.00% │ 0.6 │ 2 │ - │ qty  │ 80.00% │ 0.2 │ 1 │ - │ status │ 80.00% │ │ │ - └────────┴────────────┴──────┴─────┘ + ┏━━━━━━━━┳━━━━━━━━━━━━┳━━━━━━━━━━━┳━━━━━━━━━━┓ + ┃ Column ┃ Match Rate ┃ Mean diff ┃ Max diff ┃ + ┡━━━━━━━━╇━━━━━━━━━━━━╇━━━━━━━━━━━╇━━━━━━━━━━┩ + │ price  │ 60.00% │ 0.6 │ 2 │ + │ qty  │ 80.00% │ 0.2 │ 1 │ + │ status │ 80.00% │ │ │ + └────────┴────────────┴───────────┴──────────┘ diff --git a/tests/summary/fixtures/metrics_presets_few/gen/pretty_True_perfect_True_top_False_slim_True_sample_rows_False_sample_pk_False.txt b/tests/summary/fixtures/metrics_presets_few/gen/pretty_True_perfect_True_top_False_slim_True_sample_rows_False_sample_pk_False.txt index b106802..16a08ec 100644 --- a/tests/summary/fixtures/metrics_presets_few/gen/pretty_True_perfect_True_top_False_slim_True_sample_rows_False_sample_pk_False.txt +++ b/tests/summary/fixtures/metrics_presets_few/gen/pretty_True_perfect_True_top_False_slim_True_sample_rows_False_sample_pk_False.txt @@ -8,10 +8,10 @@ Columns ▔▔▔▔▔▔▔ - ┏━━━━━━━━┳━━━━━━━━━━━━┳━━━━━━┳━━━━━┓ - ┃ Column ┃ Match Rate ┃ Mean ┃ Max ┃ - ┡━━━━━━━━╇━━━━━━━━━━━━╇━━━━━━╇━━━━━┩ - │ price  │ 60.00% │ 0.6 │ 2 │ - │ qty  │ 80.00% │ 0.2 │ 1 │ - │ status │ 80.00% │ │ │ - └────────┴────────────┴──────┴─────┘ + ┏━━━━━━━━┳━━━━━━━━━━━━┳━━━━━━━━━━━┳━━━━━━━━━━┓ + ┃ Column ┃ Match Rate ┃ Mean diff ┃ Max diff ┃ + ┡━━━━━━━━╇━━━━━━━━━━━━╇━━━━━━━━━━━╇━━━━━━━━━━┩ + │ price  │ 60.00% │ 0.6 │ 2 │ + │ qty  │ 80.00% │ 0.2 │ 1 │ + │ status │ 80.00% │ │ │ + └────────┴────────────┴───────────┴──────────┘ diff --git a/tests/summary/fixtures/metrics_presets_few/gen/pretty_True_perfect_True_top_False_slim_True_sample_rows_True_sample_pk_False.txt b/tests/summary/fixtures/metrics_presets_few/gen/pretty_True_perfect_True_top_False_slim_True_sample_rows_True_sample_pk_False.txt index b106802..16a08ec 100644 --- a/tests/summary/fixtures/metrics_presets_few/gen/pretty_True_perfect_True_top_False_slim_True_sample_rows_True_sample_pk_False.txt +++ b/tests/summary/fixtures/metrics_presets_few/gen/pretty_True_perfect_True_top_False_slim_True_sample_rows_True_sample_pk_False.txt @@ -8,10 +8,10 @@ Columns ▔▔▔▔▔▔▔ - ┏━━━━━━━━┳━━━━━━━━━━━━┳━━━━━━┳━━━━━┓ - ┃ Column ┃ Match Rate ┃ Mean ┃ Max ┃ - ┡━━━━━━━━╇━━━━━━━━━━━━╇━━━━━━╇━━━━━┩ - │ price  │ 60.00% │ 0.6 │ 2 │ - │ qty  │ 80.00% │ 0.2 │ 1 │ - │ status │ 80.00% │ │ │ - └────────┴────────────┴──────┴─────┘ + ┏━━━━━━━━┳━━━━━━━━━━━━┳━━━━━━━━━━━┳━━━━━━━━━━┓ + ┃ Column ┃ Match Rate ┃ Mean diff ┃ Max diff ┃ + ┡━━━━━━━━╇━━━━━━━━━━━━╇━━━━━━━━━━━╇━━━━━━━━━━┩ + │ price  │ 60.00% │ 0.6 │ 2 │ + │ qty  │ 80.00% │ 0.2 │ 1 │ + │ status │ 80.00% │ │ │ + └────────┴────────────┴───────────┴──────────┘ diff --git a/tests/summary/fixtures/metrics_presets_few/gen/pretty_True_perfect_True_top_True_slim_False_sample_rows_False_sample_pk_False.txt b/tests/summary/fixtures/metrics_presets_few/gen/pretty_True_perfect_True_top_True_slim_False_sample_rows_False_sample_pk_False.txt index 43bd1a8..04d78f7 100644 --- a/tests/summary/fixtures/metrics_presets_few/gen/pretty_True_perfect_True_top_True_slim_False_sample_rows_False_sample_pk_False.txt +++ b/tests/summary/fixtures/metrics_presets_few/gen/pretty_True_perfect_True_top_True_slim_False_sample_rows_False_sample_pk_False.txt @@ -20,13 +20,13 @@ Columns ▔▔▔▔▔▔▔ - ┏━━━━━━━━┳━━━━━━━━━━━━┳━━━━━━┳━━━━━┳━━━━━━━━━━━━━━━━━━━┓ - ┃ Column ┃ Match Rate ┃ Mean ┃ Max ┃  Top Changes ┃ - ┡━━━━━━━━╇━━━━━━━━━━━━╇━━━━━━╇━━━━━╇━━━━━━━━━━━━━━━━━━━┩ - │ price  │ 60.00% │ 0.6 │ 2 │ 40.0 -> 42.0 (1x) │ - │ │ │ │ │ 20.0 -> 21.0 (1x) │ - ├────────┼────────────┼──────┼─────┼───────────────────┤ - │ qty  │ 80.00% │ 0.2 │ 1 │ 4 -> 5 (1x) │ - ├────────┼────────────┼──────┼─────┼───────────────────┤ - │ status │ 80.00% │ │ │ "c" -> "x" (1x) │ - └────────┴────────────┴──────┴─────┴───────────────────┘ + ┏━━━━━━━━┳━━━━━━━━━━━━┳━━━━━━━━━━━┳━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━┓ + ┃ Column ┃ Match Rate ┃ Mean diff ┃ Max diff ┃  Top Changes ┃ + ┡━━━━━━━━╇━━━━━━━━━━━━╇━━━━━━━━━━━╇━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━┩ + │ price  │ 60.00% │ 0.6 │ 2 │ 40.0 -> 42.0 (1x) │ + │ │ │ │ │ 20.0 -> 21.0 (1x) │ + ├────────┼────────────┼───────────┼──────────┼───────────────────┤ + │ qty  │ 80.00% │ 0.2 │ 1 │ 4 -> 5 (1x) │ + ├────────┼────────────┼───────────┼──────────┼───────────────────┤ + │ status │ 80.00% │ │ │ "c" -> "x" (1x) │ + └────────┴────────────┴───────────┴──────────┴───────────────────┘ diff --git a/tests/summary/fixtures/metrics_presets_few/gen/pretty_True_perfect_True_top_True_slim_False_sample_rows_True_sample_pk_True.txt b/tests/summary/fixtures/metrics_presets_few/gen/pretty_True_perfect_True_top_True_slim_False_sample_rows_True_sample_pk_True.txt index 67c851c..75445cf 100644 --- a/tests/summary/fixtures/metrics_presets_few/gen/pretty_True_perfect_True_top_True_slim_False_sample_rows_True_sample_pk_True.txt +++ b/tests/summary/fixtures/metrics_presets_few/gen/pretty_True_perfect_True_top_True_slim_False_sample_rows_True_sample_pk_True.txt @@ -20,13 +20,13 @@ Columns ▔▔▔▔▔▔▔ - ┏━━━━━━━━┳━━━━━━━━━━━━┳━━━━━━┳━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━┓ - ┃ Column ┃ Match Rate ┃ Mean ┃ Max ┃  Top Changes ┃ - ┡━━━━━━━━╇━━━━━━━━━━━━╇━━━━━━╇━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━┩ - │ price  │ 60.00% │ 0.6 │ 2 │ 40.0 -> 42.0 (1x, e.g. 4) │ - │ │ │ │ │ 20.0 -> 21.0 (1x, e.g. 2) │ - ├────────┼────────────┼──────┼─────┼───────────────────────────┤ - │ qty  │ 80.00% │ 0.2 │ 1 │ 4 -> 5 (1x, e.g. 4) │ - ├────────┼────────────┼──────┼─────┼───────────────────────────┤ - │ status │ 80.00% │ │ │ "c" -> "x" (1x, e.g. 3) │ - └────────┴────────────┴──────┴─────┴───────────────────────────┘ + ┏━━━━━━━━┳━━━━━━━━━━━━┳━━━━━━━━━━━┳━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━┓ + ┃ Column ┃ Match Rate ┃ Mean diff ┃ Max diff ┃  Top Changes ┃ + ┡━━━━━━━━╇━━━━━━━━━━━━╇━━━━━━━━━━━╇━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━┩ + │ price  │ 60.00% │ 0.6 │ 2 │ 40.0 -> 42.0 (1x, e.g. 4) │ + │ │ │ │ │ 20.0 -> 21.0 (1x, e.g. 2) │ + ├────────┼────────────┼───────────┼──────────┼───────────────────────────┤ + │ qty  │ 80.00% │ 0.2 │ 1 │ 4 -> 5 (1x, e.g. 4) │ + ├────────┼────────────┼───────────┼──────────┼───────────────────────────┤ + │ status │ 80.00% │ │ │ "c" -> "x" (1x, e.g. 3) │ + └────────┴────────────┴───────────┴──────────┴───────────────────────────┘ diff --git a/tests/summary/fixtures/metrics_presets_few/gen/pretty_True_perfect_True_top_True_slim_True_sample_rows_False_sample_pk_False.txt b/tests/summary/fixtures/metrics_presets_few/gen/pretty_True_perfect_True_top_True_slim_True_sample_rows_False_sample_pk_False.txt index 01d0278..709a290 100644 --- a/tests/summary/fixtures/metrics_presets_few/gen/pretty_True_perfect_True_top_True_slim_True_sample_rows_False_sample_pk_False.txt +++ b/tests/summary/fixtures/metrics_presets_few/gen/pretty_True_perfect_True_top_True_slim_True_sample_rows_False_sample_pk_False.txt @@ -8,13 +8,13 @@ Columns ▔▔▔▔▔▔▔ - ┏━━━━━━━━┳━━━━━━━━━━━━┳━━━━━━┳━━━━━┳━━━━━━━━━━━━━━━━━━━┓ - ┃ Column ┃ Match Rate ┃ Mean ┃ Max ┃  Top Changes ┃ - ┡━━━━━━━━╇━━━━━━━━━━━━╇━━━━━━╇━━━━━╇━━━━━━━━━━━━━━━━━━━┩ - │ price  │ 60.00% │ 0.6 │ 2 │ 40.0 -> 42.0 (1x) │ - │ │ │ │ │ 20.0 -> 21.0 (1x) │ - ├────────┼────────────┼──────┼─────┼───────────────────┤ - │ qty  │ 80.00% │ 0.2 │ 1 │ 4 -> 5 (1x) │ - ├────────┼────────────┼──────┼─────┼───────────────────┤ - │ status │ 80.00% │ │ │ "c" -> "x" (1x) │ - └────────┴────────────┴──────┴─────┴───────────────────┘ + ┏━━━━━━━━┳━━━━━━━━━━━━┳━━━━━━━━━━━┳━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━┓ + ┃ Column ┃ Match Rate ┃ Mean diff ┃ Max diff ┃  Top Changes ┃ + ┡━━━━━━━━╇━━━━━━━━━━━━╇━━━━━━━━━━━╇━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━┩ + │ price  │ 60.00% │ 0.6 │ 2 │ 40.0 -> 42.0 (1x) │ + │ │ │ │ │ 20.0 -> 21.0 (1x) │ + ├────────┼────────────┼───────────┼──────────┼───────────────────┤ + │ qty  │ 80.00% │ 0.2 │ 1 │ 4 -> 5 (1x) │ + ├────────┼────────────┼───────────┼──────────┼───────────────────┤ + │ status │ 80.00% │ │ │ "c" -> "x" (1x) │ + └────────┴────────────┴───────────┴──────────┴───────────────────┘ diff --git a/tests/summary/fixtures/metrics_presets_few/gen/pretty_True_perfect_True_top_True_slim_True_sample_rows_True_sample_pk_True.txt b/tests/summary/fixtures/metrics_presets_few/gen/pretty_True_perfect_True_top_True_slim_True_sample_rows_True_sample_pk_True.txt index e4f58e8..c55adc5 100644 --- a/tests/summary/fixtures/metrics_presets_few/gen/pretty_True_perfect_True_top_True_slim_True_sample_rows_True_sample_pk_True.txt +++ b/tests/summary/fixtures/metrics_presets_few/gen/pretty_True_perfect_True_top_True_slim_True_sample_rows_True_sample_pk_True.txt @@ -8,13 +8,13 @@ Columns ▔▔▔▔▔▔▔ - ┏━━━━━━━━┳━━━━━━━━━━━━┳━━━━━━┳━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━┓ - ┃ Column ┃ Match Rate ┃ Mean ┃ Max ┃  Top Changes ┃ - ┡━━━━━━━━╇━━━━━━━━━━━━╇━━━━━━╇━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━┩ - │ price  │ 60.00% │ 0.6 │ 2 │ 40.0 -> 42.0 (1x, e.g. 4) │ - │ │ │ │ │ 20.0 -> 21.0 (1x, e.g. 2) │ - ├────────┼────────────┼──────┼─────┼───────────────────────────┤ - │ qty  │ 80.00% │ 0.2 │ 1 │ 4 -> 5 (1x, e.g. 4) │ - ├────────┼────────────┼──────┼─────┼───────────────────────────┤ - │ status │ 80.00% │ │ │ "c" -> "x" (1x, e.g. 3) │ - └────────┴────────────┴──────┴─────┴───────────────────────────┘ + ┏━━━━━━━━┳━━━━━━━━━━━━┳━━━━━━━━━━━┳━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━━━━━━━━━┓ + ┃ Column ┃ Match Rate ┃ Mean diff ┃ Max diff ┃  Top Changes ┃ + ┡━━━━━━━━╇━━━━━━━━━━━━╇━━━━━━━━━━━╇━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━━━━━━━━━┩ + │ price  │ 60.00% │ 0.6 │ 2 │ 40.0 -> 42.0 (1x, e.g. 4) │ + │ │ │ │ │ 20.0 -> 21.0 (1x, e.g. 2) │ + ├────────┼────────────┼───────────┼──────────┼───────────────────────────┤ + │ qty  │ 80.00% │ 0.2 │ 1 │ 4 -> 5 (1x, e.g. 4) │ + ├────────┼────────────┼───────────┼──────────┼───────────────────────────┤ + │ status │ 80.00% │ │ │ "c" -> "x" (1x, e.g. 3) │ + └────────┴────────────┴───────────┴──────────┴───────────────────────────┘ diff --git a/tests/summary/fixtures/metrics_presets_few/test_metrics_presets_few.py b/tests/summary/fixtures/metrics_presets_few/test_metrics_presets_few.py index 4fcd6d1..e3955ef 100644 --- a/tests/summary/fixtures/metrics_presets_few/test_metrics_presets_few.py +++ b/tests/summary/fixtures/metrics_presets_few/test_metrics_presets_few.py @@ -29,5 +29,8 @@ def test_generate() -> None: comp = compare_frames(left, right, primary_key=["id"]) generate_summaries( comp, - metrics={"Mean": metrics.mean, "Max": metrics.max}, + change_metrics={ + "Mean diff": metrics.change.mean, + "Max diff": metrics.change.max, + }, ) diff --git a/tests/summary/fixtures/metrics_presets_many/gen/pretty_False_perfect_False_top_False_slim_False_sample_rows_False_sample_pk_False.txt b/tests/summary/fixtures/metrics_presets_many/gen/pretty_False_perfect_False_top_False_slim_False_sample_rows_False_sample_pk_False.txt index 5893689..385eba3 100644 --- a/tests/summary/fixtures/metrics_presets_many/gen/pretty_False_perfect_False_top_False_slim_False_sample_rows_False_sample_pk_False.txt +++ b/tests/summary/fixtures/metrics_presets_many/gen/pretty_False_perfect_False_top_False_slim_False_sample_rows_False_sample_pk_False.txt @@ -20,12 +20,12 @@ Columns ▔▔▔▔▔▔▔ - ┏━━━━━━━━┳━━━━━━━━━━━━┳━━━━━━┳━━━━━━━━┳━━━━━┳━━━━━┳━━━━━━━━┳━━━━━━━━━━━━┳━━━━━━━━━━━┓ - ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ Mean ┃ Mean ┃ - ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ absolute ┃ relative ┃ - ┃ Column ┃ Match Rate ┃ Mean ┃ Median ┃ Min ┃ Max ┃ Std ┃ deviation ┃ deviation ┃ - ┡━━━━━━━━╇━━━━━━━━━━━━╇━━━━━━╇━━━━━━━━╇━━━━━╇━━━━━╇━━━━━━━━╇━━━━━━━━━━━━╇━━━━━━━━━━━┩ - │ price │ 60.00% │ 0.6 │ 0 │ 0 │ 2 │ 0.8944 │ 0.6 │ 0.02 │ - │ qty │ 80.00% │ 0.2 │ 0 │ 0 │ 1 │ 0.4472 │ 0.2 │ 0.05 │ - │ status │ 80.00% │ │ │ │ │ │ │ │ - └────────┴────────────┴──────┴────────┴─────┴─────┴────────┴────────────┴───────────┘ + ┏━━━━━━━━┳━━━━━━━━┳━━━━━━━━┳━━━━━━━━┳━━━━━━━━━┳━━━━━━━━┳━━━━━━━━━┳━━━━━━━━┳━━━━━━━━━┓ + ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ Mean ┃ Mean ┃ + ┃ ┃ Match ┃ Mean ┃ Median ┃ Min ┃ Max ┃ Std ┃ absol… ┃ relati… ┃ + ┃ Column ┃ Rate ┃ diff ┃ diff ┃ diff ┃ diff ┃ diff ┃ diff ┃ diff ┃ + ┡━━━━━━━━╇━━━━━━━━╇━━━━━━━━╇━━━━━━━━╇━━━━━━━━━╇━━━━━━━━╇━━━━━━━━━╇━━━━━━━━╇━━━━━━━━━┩ + │ price │ 60.00% │ 0.6 │ 0 │ 0 │ 2 │ 0.8944 │ 0.6 │ 0.02 │ + │ qty │ 80.00% │ 0.2 │ 0 │ 0 │ 1 │ 0.4472 │ 0.2 │ 0.05 │ + │ status │ 80.00% │ │ │ │ │ │ │ │ + └────────┴────────┴────────┴────────┴─────────┴────────┴─────────┴────────┴─────────┘ diff --git a/tests/summary/fixtures/metrics_presets_many/gen/pretty_False_perfect_False_top_False_slim_False_sample_rows_True_sample_pk_False.txt b/tests/summary/fixtures/metrics_presets_many/gen/pretty_False_perfect_False_top_False_slim_False_sample_rows_True_sample_pk_False.txt index 5893689..385eba3 100644 --- a/tests/summary/fixtures/metrics_presets_many/gen/pretty_False_perfect_False_top_False_slim_False_sample_rows_True_sample_pk_False.txt +++ b/tests/summary/fixtures/metrics_presets_many/gen/pretty_False_perfect_False_top_False_slim_False_sample_rows_True_sample_pk_False.txt @@ -20,12 +20,12 @@ Columns ▔▔▔▔▔▔▔ - ┏━━━━━━━━┳━━━━━━━━━━━━┳━━━━━━┳━━━━━━━━┳━━━━━┳━━━━━┳━━━━━━━━┳━━━━━━━━━━━━┳━━━━━━━━━━━┓ - ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ Mean ┃ Mean ┃ - ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ absolute ┃ relative ┃ - ┃ Column ┃ Match Rate ┃ Mean ┃ Median ┃ Min ┃ Max ┃ Std ┃ deviation ┃ deviation ┃ - ┡━━━━━━━━╇━━━━━━━━━━━━╇━━━━━━╇━━━━━━━━╇━━━━━╇━━━━━╇━━━━━━━━╇━━━━━━━━━━━━╇━━━━━━━━━━━┩ - │ price │ 60.00% │ 0.6 │ 0 │ 0 │ 2 │ 0.8944 │ 0.6 │ 0.02 │ - │ qty │ 80.00% │ 0.2 │ 0 │ 0 │ 1 │ 0.4472 │ 0.2 │ 0.05 │ - │ status │ 80.00% │ │ │ │ │ │ │ │ - └────────┴────────────┴──────┴────────┴─────┴─────┴────────┴────────────┴───────────┘ + ┏━━━━━━━━┳━━━━━━━━┳━━━━━━━━┳━━━━━━━━┳━━━━━━━━━┳━━━━━━━━┳━━━━━━━━━┳━━━━━━━━┳━━━━━━━━━┓ + ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ Mean ┃ Mean ┃ + ┃ ┃ Match ┃ Mean ┃ Median ┃ Min ┃ Max ┃ Std ┃ absol… ┃ relati… ┃ + ┃ Column ┃ Rate ┃ diff ┃ diff ┃ diff ┃ diff ┃ diff ┃ diff ┃ diff ┃ + ┡━━━━━━━━╇━━━━━━━━╇━━━━━━━━╇━━━━━━━━╇━━━━━━━━━╇━━━━━━━━╇━━━━━━━━━╇━━━━━━━━╇━━━━━━━━━┩ + │ price │ 60.00% │ 0.6 │ 0 │ 0 │ 2 │ 0.8944 │ 0.6 │ 0.02 │ + │ qty │ 80.00% │ 0.2 │ 0 │ 0 │ 1 │ 0.4472 │ 0.2 │ 0.05 │ + │ status │ 80.00% │ │ │ │ │ │ │ │ + └────────┴────────┴────────┴────────┴─────────┴────────┴─────────┴────────┴─────────┘ diff --git a/tests/summary/fixtures/metrics_presets_many/gen/pretty_False_perfect_False_top_False_slim_True_sample_rows_False_sample_pk_False.txt b/tests/summary/fixtures/metrics_presets_many/gen/pretty_False_perfect_False_top_False_slim_True_sample_rows_False_sample_pk_False.txt index dc9a50a..9242da0 100644 --- a/tests/summary/fixtures/metrics_presets_many/gen/pretty_False_perfect_False_top_False_slim_True_sample_rows_False_sample_pk_False.txt +++ b/tests/summary/fixtures/metrics_presets_many/gen/pretty_False_perfect_False_top_False_slim_True_sample_rows_False_sample_pk_False.txt @@ -8,12 +8,12 @@ Columns ▔▔▔▔▔▔▔ - ┏━━━━━━━━┳━━━━━━━━━━━━┳━━━━━━┳━━━━━━━━┳━━━━━┳━━━━━┳━━━━━━━━┳━━━━━━━━━━━━┳━━━━━━━━━━━┓ - ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ Mean ┃ Mean ┃ - ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ absolute ┃ relative ┃ - ┃ Column ┃ Match Rate ┃ Mean ┃ Median ┃ Min ┃ Max ┃ Std ┃ deviation ┃ deviation ┃ - ┡━━━━━━━━╇━━━━━━━━━━━━╇━━━━━━╇━━━━━━━━╇━━━━━╇━━━━━╇━━━━━━━━╇━━━━━━━━━━━━╇━━━━━━━━━━━┩ - │ price │ 60.00% │ 0.6 │ 0 │ 0 │ 2 │ 0.8944 │ 0.6 │ 0.02 │ - │ qty │ 80.00% │ 0.2 │ 0 │ 0 │ 1 │ 0.4472 │ 0.2 │ 0.05 │ - │ status │ 80.00% │ │ │ │ │ │ │ │ - └────────┴────────────┴──────┴────────┴─────┴─────┴────────┴────────────┴───────────┘ + ┏━━━━━━━━┳━━━━━━━━┳━━━━━━━━┳━━━━━━━━┳━━━━━━━━━┳━━━━━━━━┳━━━━━━━━━┳━━━━━━━━┳━━━━━━━━━┓ + ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ Mean ┃ Mean ┃ + ┃ ┃ Match ┃ Mean ┃ Median ┃ Min ┃ Max ┃ Std ┃ absol… ┃ relati… ┃ + ┃ Column ┃ Rate ┃ diff ┃ diff ┃ diff ┃ diff ┃ diff ┃ diff ┃ diff ┃ + ┡━━━━━━━━╇━━━━━━━━╇━━━━━━━━╇━━━━━━━━╇━━━━━━━━━╇━━━━━━━━╇━━━━━━━━━╇━━━━━━━━╇━━━━━━━━━┩ + │ price │ 60.00% │ 0.6 │ 0 │ 0 │ 2 │ 0.8944 │ 0.6 │ 0.02 │ + │ qty │ 80.00% │ 0.2 │ 0 │ 0 │ 1 │ 0.4472 │ 0.2 │ 0.05 │ + │ status │ 80.00% │ │ │ │ │ │ │ │ + └────────┴────────┴────────┴────────┴─────────┴────────┴─────────┴────────┴─────────┘ diff --git a/tests/summary/fixtures/metrics_presets_many/gen/pretty_False_perfect_False_top_False_slim_True_sample_rows_True_sample_pk_False.txt b/tests/summary/fixtures/metrics_presets_many/gen/pretty_False_perfect_False_top_False_slim_True_sample_rows_True_sample_pk_False.txt index dc9a50a..9242da0 100644 --- a/tests/summary/fixtures/metrics_presets_many/gen/pretty_False_perfect_False_top_False_slim_True_sample_rows_True_sample_pk_False.txt +++ b/tests/summary/fixtures/metrics_presets_many/gen/pretty_False_perfect_False_top_False_slim_True_sample_rows_True_sample_pk_False.txt @@ -8,12 +8,12 @@ Columns ▔▔▔▔▔▔▔ - ┏━━━━━━━━┳━━━━━━━━━━━━┳━━━━━━┳━━━━━━━━┳━━━━━┳━━━━━┳━━━━━━━━┳━━━━━━━━━━━━┳━━━━━━━━━━━┓ - ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ Mean ┃ Mean ┃ - ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ absolute ┃ relative ┃ - ┃ Column ┃ Match Rate ┃ Mean ┃ Median ┃ Min ┃ Max ┃ Std ┃ deviation ┃ deviation ┃ - ┡━━━━━━━━╇━━━━━━━━━━━━╇━━━━━━╇━━━━━━━━╇━━━━━╇━━━━━╇━━━━━━━━╇━━━━━━━━━━━━╇━━━━━━━━━━━┩ - │ price │ 60.00% │ 0.6 │ 0 │ 0 │ 2 │ 0.8944 │ 0.6 │ 0.02 │ - │ qty │ 80.00% │ 0.2 │ 0 │ 0 │ 1 │ 0.4472 │ 0.2 │ 0.05 │ - │ status │ 80.00% │ │ │ │ │ │ │ │ - └────────┴────────────┴──────┴────────┴─────┴─────┴────────┴────────────┴───────────┘ + ┏━━━━━━━━┳━━━━━━━━┳━━━━━━━━┳━━━━━━━━┳━━━━━━━━━┳━━━━━━━━┳━━━━━━━━━┳━━━━━━━━┳━━━━━━━━━┓ + ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ Mean ┃ Mean ┃ + ┃ ┃ Match ┃ Mean ┃ Median ┃ Min ┃ Max ┃ Std ┃ absol… ┃ relati… ┃ + ┃ Column ┃ Rate ┃ diff ┃ diff ┃ diff ┃ diff ┃ diff ┃ diff ┃ diff ┃ + ┡━━━━━━━━╇━━━━━━━━╇━━━━━━━━╇━━━━━━━━╇━━━━━━━━━╇━━━━━━━━╇━━━━━━━━━╇━━━━━━━━╇━━━━━━━━━┩ + │ price │ 60.00% │ 0.6 │ 0 │ 0 │ 2 │ 0.8944 │ 0.6 │ 0.02 │ + │ qty │ 80.00% │ 0.2 │ 0 │ 0 │ 1 │ 0.4472 │ 0.2 │ 0.05 │ + │ status │ 80.00% │ │ │ │ │ │ │ │ + └────────┴────────┴────────┴────────┴─────────┴────────┴─────────┴────────┴─────────┘ diff --git a/tests/summary/fixtures/metrics_presets_many/gen/pretty_False_perfect_False_top_True_slim_False_sample_rows_False_sample_pk_False.txt b/tests/summary/fixtures/metrics_presets_many/gen/pretty_False_perfect_False_top_True_slim_False_sample_rows_False_sample_pk_False.txt index 0334464..3d8e920 100644 --- a/tests/summary/fixtures/metrics_presets_many/gen/pretty_False_perfect_False_top_True_slim_False_sample_rows_False_sample_pk_False.txt +++ b/tests/summary/fixtures/metrics_presets_many/gen/pretty_False_perfect_False_top_True_slim_False_sample_rows_False_sample_pk_False.txt @@ -20,22 +20,26 @@ Columns ▔▔▔▔▔▔▔ - ┏━━━━━━━━┳━━━━━━━━┳━━━━━━┳━━━━━━━━┳━━━━━┳━━━━━┳━━━━━━━━┳━━━━━━━━━┳━━━━━━━━┳━━━━━━━━━┓ - ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ Mean ┃ Mean ┃ ┃ - ┃ ┃ Match ┃ ┃ ┃ ┃ ┃ ┃ absolu… ┃ relat… ┃ Top ┃ - ┃ Column ┃ Rate ┃ Mean ┃ Median ┃ Min ┃ Max ┃ Std ┃ deviat… ┃ devia… ┃ Changes ┃ - ┡━━━━━━━━╇━━━━━━━━╇━━━━━━╇━━━━━━━━╇━━━━━╇━━━━━╇━━━━━━━━╇━━━━━━━━━╇━━━━━━━━╇━━━━━━━━━┩ - │ price │ 60.00% │ 0.6 │ 0 │ 0 │ 2 │ 0.8944 │ 0.6 │ 0.02 │ 40.0 -> │ - │ │ │ │ │ │ │ │ │ │ 42.0 │ - │ │ │ │ │ │ │ │ │ │ (1x) │ - │ │ │ │ │ │ │ │ │ │ 20.0 -> │ - │ │ │ │ │ │ │ │ │ │ 21.0 │ - │ │ │ │ │ │ │ │ │ │ (1x) │ - ├────────┼────────┼──────┼────────┼─────┼─────┼────────┼─────────┼────────┼─────────┤ - │ qty │ 80.00% │ 0.2 │ 0 │ 0 │ 1 │ 0.4472 │ 0.2 │ 0.05 │ 4 -> 5 │ - │ │ │ │ │ │ │ │ │ │ (1x) │ - ├────────┼────────┼──────┼────────┼─────┼─────┼────────┼─────────┼────────┼─────────┤ - │ status │ 80.00% │ │ │ │ │ │ │ │ "c" -> │ - │ │ │ │ │ │ │ │ │ │ "x" │ - │ │ │ │ │ │ │ │ │ │ (1x) │ - └────────┴────────┴──────┴────────┴─────┴─────┴────────┴─────────┴────────┴─────────┘ + ┏━━━━━━━┳━━━━━━━┳━━━━━━━━┳━━━━━━━┳━━━━━━━━┳━━━━━━━┳━━━━━━━━┳━━━━━━━┳━━━━━━━━┳━━━━━━━┓ + ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ Mean ┃ Mean ┃ ┃ + ┃ Colum ┃ Match ┃ Mean ┃ Medi… ┃ Min ┃ Max ┃ Std ┃ abso… ┃ relat… ┃ Top ┃ + ┃ n ┃ Rate ┃ diff ┃ diff ┃ diff ┃ diff ┃ diff ┃ diff ┃ diff ┃ Chan… ┃ + ┡━━━━━━━╇━━━━━━━╇━━━━━━━━╇━━━━━━━╇━━━━━━━━╇━━━━━━━╇━━━━━━━━╇━━━━━━━╇━━━━━━━━╇━━━━━━━┩ + │ price │ 60.0… │ 0.6 │ 0 │ 0 │ 2 │ 0.8944 │ 0.6 │ 0.02 │ 40.0 │ + │ │ │ │ │ │ │ │ │ │ -> │ + │ │ │ │ │ │ │ │ │ │ 42.0 │ + │ │ │ │ │ │ │ │ │ │ (1x) │ + │ │ │ │ │ │ │ │ │ │ 20.0 │ + │ │ │ │ │ │ │ │ │ │ -> │ + │ │ │ │ │ │ │ │ │ │ 21.0 │ + │ │ │ │ │ │ │ │ │ │ (1x) │ + ├───────┼───────┼────────┼───────┼────────┼───────┼────────┼───────┼────────┼───────┤ + │ qty │ 80.0… │ 0.2 │ 0 │ 0 │ 1 │ 0.4472 │ 0.2 │ 0.05 │ 4 -> │ + │ │ │ │ │ │ │ │ │ │ 5 │ + │ │ │ │ │ │ │ │ │ │ (1x) │ + ├───────┼───────┼────────┼───────┼────────┼───────┼────────┼───────┼────────┼───────┤ + │ statu │ 80.0… │ │ │ │ │ │ │ │ "c" │ + │ s │ │ │ │ │ │ │ │ │ -> │ + │ │ │ │ │ │ │ │ │ │ "x" │ + │ │ │ │ │ │ │ │ │ │ (1x) │ + └───────┴───────┴────────┴───────┴────────┴───────┴────────┴───────┴────────┴───────┘ diff --git a/tests/summary/fixtures/metrics_presets_many/gen/pretty_False_perfect_False_top_True_slim_False_sample_rows_True_sample_pk_True.txt b/tests/summary/fixtures/metrics_presets_many/gen/pretty_False_perfect_False_top_True_slim_False_sample_rows_True_sample_pk_True.txt index 2fd9096..a269734 100644 --- a/tests/summary/fixtures/metrics_presets_many/gen/pretty_False_perfect_False_top_True_slim_False_sample_rows_True_sample_pk_True.txt +++ b/tests/summary/fixtures/metrics_presets_many/gen/pretty_False_perfect_False_top_True_slim_False_sample_rows_True_sample_pk_True.txt @@ -20,26 +20,34 @@ Columns ▔▔▔▔▔▔▔ - ┏━━━━━━━━┳━━━━━━━━┳━━━━━━┳━━━━━━━━┳━━━━━┳━━━━━┳━━━━━━━━┳━━━━━━━━━┳━━━━━━━━┳━━━━━━━━━┓ - ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ Mean ┃ Mean ┃ ┃ - ┃ ┃ Match ┃ ┃ ┃ ┃ ┃ ┃ absolu… ┃ relat… ┃ Top ┃ - ┃ Column ┃ Rate ┃ Mean ┃ Median ┃ Min ┃ Max ┃ Std ┃ deviat… ┃ devia… ┃ Changes ┃ - ┡━━━━━━━━╇━━━━━━━━╇━━━━━━╇━━━━━━━━╇━━━━━╇━━━━━╇━━━━━━━━╇━━━━━━━━━╇━━━━━━━━╇━━━━━━━━━┩ - │ price │ 60.00% │ 0.6 │ 0 │ 0 │ 2 │ 0.8944 │ 0.6 │ 0.02 │ 40.0 -> │ - │ │ │ │ │ │ │ │ │ │ 42.0 │ - │ │ │ │ │ │ │ │ │ │ (1x, │ - │ │ │ │ │ │ │ │ │ │ e.g. 4) │ - │ │ │ │ │ │ │ │ │ │ 20.0 -> │ - │ │ │ │ │ │ │ │ │ │ 21.0 │ - │ │ │ │ │ │ │ │ │ │ (1x, │ - │ │ │ │ │ │ │ │ │ │ e.g. 2) │ - ├────────┼────────┼──────┼────────┼─────┼─────┼────────┼─────────┼────────┼─────────┤ - │ qty │ 80.00% │ 0.2 │ 0 │ 0 │ 1 │ 0.4472 │ 0.2 │ 0.05 │ 4 -> 5 │ - │ │ │ │ │ │ │ │ │ │ (1x, │ - │ │ │ │ │ │ │ │ │ │ e.g. 4) │ - ├────────┼────────┼──────┼────────┼─────┼─────┼────────┼─────────┼────────┼─────────┤ - │ status │ 80.00% │ │ │ │ │ │ │ │ "c" -> │ - │ │ │ │ │ │ │ │ │ │ "x" │ - │ │ │ │ │ │ │ │ │ │ (1x, │ - │ │ │ │ │ │ │ │ │ │ e.g. 3) │ - └────────┴────────┴──────┴────────┴─────┴─────┴────────┴─────────┴────────┴─────────┘ + ┏━━━━━━━┳━━━━━━━┳━━━━━━━━┳━━━━━━━┳━━━━━━━━┳━━━━━━━┳━━━━━━━━┳━━━━━━━┳━━━━━━━━┳━━━━━━━┓ + ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ Mean ┃ Mean ┃ ┃ + ┃ Colum ┃ Match ┃ Mean ┃ Medi… ┃ Min ┃ Max ┃ Std ┃ abso… ┃ relat… ┃ Top ┃ + ┃ n ┃ Rate ┃ diff ┃ diff ┃ diff ┃ diff ┃ diff ┃ diff ┃ diff ┃ Chan… ┃ + ┡━━━━━━━╇━━━━━━━╇━━━━━━━━╇━━━━━━━╇━━━━━━━━╇━━━━━━━╇━━━━━━━━╇━━━━━━━╇━━━━━━━━╇━━━━━━━┩ + │ price │ 60.0… │ 0.6 │ 0 │ 0 │ 2 │ 0.8944 │ 0.6 │ 0.02 │ 40.0 │ + │ │ │ │ │ │ │ │ │ │ -> │ + │ │ │ │ │ │ │ │ │ │ 42.0 │ + │ │ │ │ │ │ │ │ │ │ (1x, │ + │ │ │ │ │ │ │ │ │ │ e.g. │ + │ │ │ │ │ │ │ │ │ │ 4) │ + │ │ │ │ │ │ │ │ │ │ 20.0 │ + │ │ │ │ │ │ │ │ │ │ -> │ + │ │ │ │ │ │ │ │ │ │ 21.0 │ + │ │ │ │ │ │ │ │ │ │ (1x, │ + │ │ │ │ │ │ │ │ │ │ e.g. │ + │ │ │ │ │ │ │ │ │ │ 2) │ + ├───────┼───────┼────────┼───────┼────────┼───────┼────────┼───────┼────────┼───────┤ + │ qty │ 80.0… │ 0.2 │ 0 │ 0 │ 1 │ 0.4472 │ 0.2 │ 0.05 │ 4 -> │ + │ │ │ │ │ │ │ │ │ │ 5 │ + │ │ │ │ │ │ │ │ │ │ (1x, │ + │ │ │ │ │ │ │ │ │ │ e.g. │ + │ │ │ │ │ │ │ │ │ │ 4) │ + ├───────┼───────┼────────┼───────┼────────┼───────┼────────┼───────┼────────┼───────┤ + │ statu │ 80.0… │ │ │ │ │ │ │ │ "c" │ + │ s │ │ │ │ │ │ │ │ │ -> │ + │ │ │ │ │ │ │ │ │ │ "x" │ + │ │ │ │ │ │ │ │ │ │ (1x, │ + │ │ │ │ │ │ │ │ │ │ e.g. │ + │ │ │ │ │ │ │ │ │ │ 3) │ + └───────┴───────┴────────┴───────┴────────┴───────┴────────┴───────┴────────┴───────┘ diff --git a/tests/summary/fixtures/metrics_presets_many/gen/pretty_False_perfect_False_top_True_slim_True_sample_rows_False_sample_pk_False.txt b/tests/summary/fixtures/metrics_presets_many/gen/pretty_False_perfect_False_top_True_slim_True_sample_rows_False_sample_pk_False.txt index eb395dd..988afd1 100644 --- a/tests/summary/fixtures/metrics_presets_many/gen/pretty_False_perfect_False_top_True_slim_True_sample_rows_False_sample_pk_False.txt +++ b/tests/summary/fixtures/metrics_presets_many/gen/pretty_False_perfect_False_top_True_slim_True_sample_rows_False_sample_pk_False.txt @@ -8,22 +8,26 @@ Columns ▔▔▔▔▔▔▔ - ┏━━━━━━━━┳━━━━━━━━┳━━━━━━┳━━━━━━━━┳━━━━━┳━━━━━┳━━━━━━━━┳━━━━━━━━━┳━━━━━━━━┳━━━━━━━━━┓ - ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ Mean ┃ Mean ┃ ┃ - ┃ ┃ Match ┃ ┃ ┃ ┃ ┃ ┃ absolu… ┃ relat… ┃ Top ┃ - ┃ Column ┃ Rate ┃ Mean ┃ Median ┃ Min ┃ Max ┃ Std ┃ deviat… ┃ devia… ┃ Changes ┃ - ┡━━━━━━━━╇━━━━━━━━╇━━━━━━╇━━━━━━━━╇━━━━━╇━━━━━╇━━━━━━━━╇━━━━━━━━━╇━━━━━━━━╇━━━━━━━━━┩ - │ price │ 60.00% │ 0.6 │ 0 │ 0 │ 2 │ 0.8944 │ 0.6 │ 0.02 │ 40.0 -> │ - │ │ │ │ │ │ │ │ │ │ 42.0 │ - │ │ │ │ │ │ │ │ │ │ (1x) │ - │ │ │ │ │ │ │ │ │ │ 20.0 -> │ - │ │ │ │ │ │ │ │ │ │ 21.0 │ - │ │ │ │ │ │ │ │ │ │ (1x) │ - ├────────┼────────┼──────┼────────┼─────┼─────┼────────┼─────────┼────────┼─────────┤ - │ qty │ 80.00% │ 0.2 │ 0 │ 0 │ 1 │ 0.4472 │ 0.2 │ 0.05 │ 4 -> 5 │ - │ │ │ │ │ │ │ │ │ │ (1x) │ - ├────────┼────────┼──────┼────────┼─────┼─────┼────────┼─────────┼────────┼─────────┤ - │ status │ 80.00% │ │ │ │ │ │ │ │ "c" -> │ - │ │ │ │ │ │ │ │ │ │ "x" │ - │ │ │ │ │ │ │ │ │ │ (1x) │ - └────────┴────────┴──────┴────────┴─────┴─────┴────────┴─────────┴────────┴─────────┘ + ┏━━━━━━━┳━━━━━━━┳━━━━━━━━┳━━━━━━━┳━━━━━━━━┳━━━━━━━┳━━━━━━━━┳━━━━━━━┳━━━━━━━━┳━━━━━━━┓ + ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ Mean ┃ Mean ┃ ┃ + ┃ Colum ┃ Match ┃ Mean ┃ Medi… ┃ Min ┃ Max ┃ Std ┃ abso… ┃ relat… ┃ Top ┃ + ┃ n ┃ Rate ┃ diff ┃ diff ┃ diff ┃ diff ┃ diff ┃ diff ┃ diff ┃ Chan… ┃ + ┡━━━━━━━╇━━━━━━━╇━━━━━━━━╇━━━━━━━╇━━━━━━━━╇━━━━━━━╇━━━━━━━━╇━━━━━━━╇━━━━━━━━╇━━━━━━━┩ + │ price │ 60.0… │ 0.6 │ 0 │ 0 │ 2 │ 0.8944 │ 0.6 │ 0.02 │ 40.0 │ + │ │ │ │ │ │ │ │ │ │ -> │ + │ │ │ │ │ │ │ │ │ │ 42.0 │ + │ │ │ │ │ │ │ │ │ │ (1x) │ + │ │ │ │ │ │ │ │ │ │ 20.0 │ + │ │ │ │ │ │ │ │ │ │ -> │ + │ │ │ │ │ │ │ │ │ │ 21.0 │ + │ │ │ │ │ │ │ │ │ │ (1x) │ + ├───────┼───────┼────────┼───────┼────────┼───────┼────────┼───────┼────────┼───────┤ + │ qty │ 80.0… │ 0.2 │ 0 │ 0 │ 1 │ 0.4472 │ 0.2 │ 0.05 │ 4 -> │ + │ │ │ │ │ │ │ │ │ │ 5 │ + │ │ │ │ │ │ │ │ │ │ (1x) │ + ├───────┼───────┼────────┼───────┼────────┼───────┼────────┼───────┼────────┼───────┤ + │ statu │ 80.0… │ │ │ │ │ │ │ │ "c" │ + │ s │ │ │ │ │ │ │ │ │ -> │ + │ │ │ │ │ │ │ │ │ │ "x" │ + │ │ │ │ │ │ │ │ │ │ (1x) │ + └───────┴───────┴────────┴───────┴────────┴───────┴────────┴───────┴────────┴───────┘ diff --git a/tests/summary/fixtures/metrics_presets_many/gen/pretty_False_perfect_False_top_True_slim_True_sample_rows_True_sample_pk_True.txt b/tests/summary/fixtures/metrics_presets_many/gen/pretty_False_perfect_False_top_True_slim_True_sample_rows_True_sample_pk_True.txt index 31d7344..cb36645 100644 --- a/tests/summary/fixtures/metrics_presets_many/gen/pretty_False_perfect_False_top_True_slim_True_sample_rows_True_sample_pk_True.txt +++ b/tests/summary/fixtures/metrics_presets_many/gen/pretty_False_perfect_False_top_True_slim_True_sample_rows_True_sample_pk_True.txt @@ -8,26 +8,34 @@ Columns ▔▔▔▔▔▔▔ - ┏━━━━━━━━┳━━━━━━━━┳━━━━━━┳━━━━━━━━┳━━━━━┳━━━━━┳━━━━━━━━┳━━━━━━━━━┳━━━━━━━━┳━━━━━━━━━┓ - ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ Mean ┃ Mean ┃ ┃ - ┃ ┃ Match ┃ ┃ ┃ ┃ ┃ ┃ absolu… ┃ relat… ┃ Top ┃ - ┃ Column ┃ Rate ┃ Mean ┃ Median ┃ Min ┃ Max ┃ Std ┃ deviat… ┃ devia… ┃ Changes ┃ - ┡━━━━━━━━╇━━━━━━━━╇━━━━━━╇━━━━━━━━╇━━━━━╇━━━━━╇━━━━━━━━╇━━━━━━━━━╇━━━━━━━━╇━━━━━━━━━┩ - │ price │ 60.00% │ 0.6 │ 0 │ 0 │ 2 │ 0.8944 │ 0.6 │ 0.02 │ 40.0 -> │ - │ │ │ │ │ │ │ │ │ │ 42.0 │ - │ │ │ │ │ │ │ │ │ │ (1x, │ - │ │ │ │ │ │ │ │ │ │ e.g. 4) │ - │ │ │ │ │ │ │ │ │ │ 20.0 -> │ - │ │ │ │ │ │ │ │ │ │ 21.0 │ - │ │ │ │ │ │ │ │ │ │ (1x, │ - │ │ │ │ │ │ │ │ │ │ e.g. 2) │ - ├────────┼────────┼──────┼────────┼─────┼─────┼────────┼─────────┼────────┼─────────┤ - │ qty │ 80.00% │ 0.2 │ 0 │ 0 │ 1 │ 0.4472 │ 0.2 │ 0.05 │ 4 -> 5 │ - │ │ │ │ │ │ │ │ │ │ (1x, │ - │ │ │ │ │ │ │ │ │ │ e.g. 4) │ - ├────────┼────────┼──────┼────────┼─────┼─────┼────────┼─────────┼────────┼─────────┤ - │ status │ 80.00% │ │ │ │ │ │ │ │ "c" -> │ - │ │ │ │ │ │ │ │ │ │ "x" │ - │ │ │ │ │ │ │ │ │ │ (1x, │ - │ │ │ │ │ │ │ │ │ │ e.g. 3) │ - └────────┴────────┴──────┴────────┴─────┴─────┴────────┴─────────┴────────┴─────────┘ + ┏━━━━━━━┳━━━━━━━┳━━━━━━━━┳━━━━━━━┳━━━━━━━━┳━━━━━━━┳━━━━━━━━┳━━━━━━━┳━━━━━━━━┳━━━━━━━┓ + ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ Mean ┃ Mean ┃ ┃ + ┃ Colum ┃ Match ┃ Mean ┃ Medi… ┃ Min ┃ Max ┃ Std ┃ abso… ┃ relat… ┃ Top ┃ + ┃ n ┃ Rate ┃ diff ┃ diff ┃ diff ┃ diff ┃ diff ┃ diff ┃ diff ┃ Chan… ┃ + ┡━━━━━━━╇━━━━━━━╇━━━━━━━━╇━━━━━━━╇━━━━━━━━╇━━━━━━━╇━━━━━━━━╇━━━━━━━╇━━━━━━━━╇━━━━━━━┩ + │ price │ 60.0… │ 0.6 │ 0 │ 0 │ 2 │ 0.8944 │ 0.6 │ 0.02 │ 40.0 │ + │ │ │ │ │ │ │ │ │ │ -> │ + │ │ │ │ │ │ │ │ │ │ 42.0 │ + │ │ │ │ │ │ │ │ │ │ (1x, │ + │ │ │ │ │ │ │ │ │ │ e.g. │ + │ │ │ │ │ │ │ │ │ │ 4) │ + │ │ │ │ │ │ │ │ │ │ 20.0 │ + │ │ │ │ │ │ │ │ │ │ -> │ + │ │ │ │ │ │ │ │ │ │ 21.0 │ + │ │ │ │ │ │ │ │ │ │ (1x, │ + │ │ │ │ │ │ │ │ │ │ e.g. │ + │ │ │ │ │ │ │ │ │ │ 2) │ + ├───────┼───────┼────────┼───────┼────────┼───────┼────────┼───────┼────────┼───────┤ + │ qty │ 80.0… │ 0.2 │ 0 │ 0 │ 1 │ 0.4472 │ 0.2 │ 0.05 │ 4 -> │ + │ │ │ │ │ │ │ │ │ │ 5 │ + │ │ │ │ │ │ │ │ │ │ (1x, │ + │ │ │ │ │ │ │ │ │ │ e.g. │ + │ │ │ │ │ │ │ │ │ │ 4) │ + ├───────┼───────┼────────┼───────┼────────┼───────┼────────┼───────┼────────┼───────┤ + │ statu │ 80.0… │ │ │ │ │ │ │ │ "c" │ + │ s │ │ │ │ │ │ │ │ │ -> │ + │ │ │ │ │ │ │ │ │ │ "x" │ + │ │ │ │ │ │ │ │ │ │ (1x, │ + │ │ │ │ │ │ │ │ │ │ e.g. │ + │ │ │ │ │ │ │ │ │ │ 3) │ + └───────┴───────┴────────┴───────┴────────┴───────┴────────┴───────┴────────┴───────┘ diff --git a/tests/summary/fixtures/metrics_presets_many/gen/pretty_False_perfect_True_top_False_slim_False_sample_rows_False_sample_pk_False.txt b/tests/summary/fixtures/metrics_presets_many/gen/pretty_False_perfect_True_top_False_slim_False_sample_rows_False_sample_pk_False.txt index 5893689..385eba3 100644 --- a/tests/summary/fixtures/metrics_presets_many/gen/pretty_False_perfect_True_top_False_slim_False_sample_rows_False_sample_pk_False.txt +++ b/tests/summary/fixtures/metrics_presets_many/gen/pretty_False_perfect_True_top_False_slim_False_sample_rows_False_sample_pk_False.txt @@ -20,12 +20,12 @@ Columns ▔▔▔▔▔▔▔ - ┏━━━━━━━━┳━━━━━━━━━━━━┳━━━━━━┳━━━━━━━━┳━━━━━┳━━━━━┳━━━━━━━━┳━━━━━━━━━━━━┳━━━━━━━━━━━┓ - ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ Mean ┃ Mean ┃ - ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ absolute ┃ relative ┃ - ┃ Column ┃ Match Rate ┃ Mean ┃ Median ┃ Min ┃ Max ┃ Std ┃ deviation ┃ deviation ┃ - ┡━━━━━━━━╇━━━━━━━━━━━━╇━━━━━━╇━━━━━━━━╇━━━━━╇━━━━━╇━━━━━━━━╇━━━━━━━━━━━━╇━━━━━━━━━━━┩ - │ price │ 60.00% │ 0.6 │ 0 │ 0 │ 2 │ 0.8944 │ 0.6 │ 0.02 │ - │ qty │ 80.00% │ 0.2 │ 0 │ 0 │ 1 │ 0.4472 │ 0.2 │ 0.05 │ - │ status │ 80.00% │ │ │ │ │ │ │ │ - └────────┴────────────┴──────┴────────┴─────┴─────┴────────┴────────────┴───────────┘ + ┏━━━━━━━━┳━━━━━━━━┳━━━━━━━━┳━━━━━━━━┳━━━━━━━━━┳━━━━━━━━┳━━━━━━━━━┳━━━━━━━━┳━━━━━━━━━┓ + ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ Mean ┃ Mean ┃ + ┃ ┃ Match ┃ Mean ┃ Median ┃ Min ┃ Max ┃ Std ┃ absol… ┃ relati… ┃ + ┃ Column ┃ Rate ┃ diff ┃ diff ┃ diff ┃ diff ┃ diff ┃ diff ┃ diff ┃ + ┡━━━━━━━━╇━━━━━━━━╇━━━━━━━━╇━━━━━━━━╇━━━━━━━━━╇━━━━━━━━╇━━━━━━━━━╇━━━━━━━━╇━━━━━━━━━┩ + │ price │ 60.00% │ 0.6 │ 0 │ 0 │ 2 │ 0.8944 │ 0.6 │ 0.02 │ + │ qty │ 80.00% │ 0.2 │ 0 │ 0 │ 1 │ 0.4472 │ 0.2 │ 0.05 │ + │ status │ 80.00% │ │ │ │ │ │ │ │ + └────────┴────────┴────────┴────────┴─────────┴────────┴─────────┴────────┴─────────┘ diff --git a/tests/summary/fixtures/metrics_presets_many/gen/pretty_False_perfect_True_top_False_slim_False_sample_rows_True_sample_pk_False.txt b/tests/summary/fixtures/metrics_presets_many/gen/pretty_False_perfect_True_top_False_slim_False_sample_rows_True_sample_pk_False.txt index 5893689..385eba3 100644 --- a/tests/summary/fixtures/metrics_presets_many/gen/pretty_False_perfect_True_top_False_slim_False_sample_rows_True_sample_pk_False.txt +++ b/tests/summary/fixtures/metrics_presets_many/gen/pretty_False_perfect_True_top_False_slim_False_sample_rows_True_sample_pk_False.txt @@ -20,12 +20,12 @@ Columns ▔▔▔▔▔▔▔ - ┏━━━━━━━━┳━━━━━━━━━━━━┳━━━━━━┳━━━━━━━━┳━━━━━┳━━━━━┳━━━━━━━━┳━━━━━━━━━━━━┳━━━━━━━━━━━┓ - ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ Mean ┃ Mean ┃ - ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ absolute ┃ relative ┃ - ┃ Column ┃ Match Rate ┃ Mean ┃ Median ┃ Min ┃ Max ┃ Std ┃ deviation ┃ deviation ┃ - ┡━━━━━━━━╇━━━━━━━━━━━━╇━━━━━━╇━━━━━━━━╇━━━━━╇━━━━━╇━━━━━━━━╇━━━━━━━━━━━━╇━━━━━━━━━━━┩ - │ price │ 60.00% │ 0.6 │ 0 │ 0 │ 2 │ 0.8944 │ 0.6 │ 0.02 │ - │ qty │ 80.00% │ 0.2 │ 0 │ 0 │ 1 │ 0.4472 │ 0.2 │ 0.05 │ - │ status │ 80.00% │ │ │ │ │ │ │ │ - └────────┴────────────┴──────┴────────┴─────┴─────┴────────┴────────────┴───────────┘ + ┏━━━━━━━━┳━━━━━━━━┳━━━━━━━━┳━━━━━━━━┳━━━━━━━━━┳━━━━━━━━┳━━━━━━━━━┳━━━━━━━━┳━━━━━━━━━┓ + ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ Mean ┃ Mean ┃ + ┃ ┃ Match ┃ Mean ┃ Median ┃ Min ┃ Max ┃ Std ┃ absol… ┃ relati… ┃ + ┃ Column ┃ Rate ┃ diff ┃ diff ┃ diff ┃ diff ┃ diff ┃ diff ┃ diff ┃ + ┡━━━━━━━━╇━━━━━━━━╇━━━━━━━━╇━━━━━━━━╇━━━━━━━━━╇━━━━━━━━╇━━━━━━━━━╇━━━━━━━━╇━━━━━━━━━┩ + │ price │ 60.00% │ 0.6 │ 0 │ 0 │ 2 │ 0.8944 │ 0.6 │ 0.02 │ + │ qty │ 80.00% │ 0.2 │ 0 │ 0 │ 1 │ 0.4472 │ 0.2 │ 0.05 │ + │ status │ 80.00% │ │ │ │ │ │ │ │ + └────────┴────────┴────────┴────────┴─────────┴────────┴─────────┴────────┴─────────┘ diff --git a/tests/summary/fixtures/metrics_presets_many/gen/pretty_False_perfect_True_top_False_slim_True_sample_rows_False_sample_pk_False.txt b/tests/summary/fixtures/metrics_presets_many/gen/pretty_False_perfect_True_top_False_slim_True_sample_rows_False_sample_pk_False.txt index dc9a50a..9242da0 100644 --- a/tests/summary/fixtures/metrics_presets_many/gen/pretty_False_perfect_True_top_False_slim_True_sample_rows_False_sample_pk_False.txt +++ b/tests/summary/fixtures/metrics_presets_many/gen/pretty_False_perfect_True_top_False_slim_True_sample_rows_False_sample_pk_False.txt @@ -8,12 +8,12 @@ Columns ▔▔▔▔▔▔▔ - ┏━━━━━━━━┳━━━━━━━━━━━━┳━━━━━━┳━━━━━━━━┳━━━━━┳━━━━━┳━━━━━━━━┳━━━━━━━━━━━━┳━━━━━━━━━━━┓ - ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ Mean ┃ Mean ┃ - ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ absolute ┃ relative ┃ - ┃ Column ┃ Match Rate ┃ Mean ┃ Median ┃ Min ┃ Max ┃ Std ┃ deviation ┃ deviation ┃ - ┡━━━━━━━━╇━━━━━━━━━━━━╇━━━━━━╇━━━━━━━━╇━━━━━╇━━━━━╇━━━━━━━━╇━━━━━━━━━━━━╇━━━━━━━━━━━┩ - │ price │ 60.00% │ 0.6 │ 0 │ 0 │ 2 │ 0.8944 │ 0.6 │ 0.02 │ - │ qty │ 80.00% │ 0.2 │ 0 │ 0 │ 1 │ 0.4472 │ 0.2 │ 0.05 │ - │ status │ 80.00% │ │ │ │ │ │ │ │ - └────────┴────────────┴──────┴────────┴─────┴─────┴────────┴────────────┴───────────┘ + ┏━━━━━━━━┳━━━━━━━━┳━━━━━━━━┳━━━━━━━━┳━━━━━━━━━┳━━━━━━━━┳━━━━━━━━━┳━━━━━━━━┳━━━━━━━━━┓ + ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ Mean ┃ Mean ┃ + ┃ ┃ Match ┃ Mean ┃ Median ┃ Min ┃ Max ┃ Std ┃ absol… ┃ relati… ┃ + ┃ Column ┃ Rate ┃ diff ┃ diff ┃ diff ┃ diff ┃ diff ┃ diff ┃ diff ┃ + ┡━━━━━━━━╇━━━━━━━━╇━━━━━━━━╇━━━━━━━━╇━━━━━━━━━╇━━━━━━━━╇━━━━━━━━━╇━━━━━━━━╇━━━━━━━━━┩ + │ price │ 60.00% │ 0.6 │ 0 │ 0 │ 2 │ 0.8944 │ 0.6 │ 0.02 │ + │ qty │ 80.00% │ 0.2 │ 0 │ 0 │ 1 │ 0.4472 │ 0.2 │ 0.05 │ + │ status │ 80.00% │ │ │ │ │ │ │ │ + └────────┴────────┴────────┴────────┴─────────┴────────┴─────────┴────────┴─────────┘ diff --git a/tests/summary/fixtures/metrics_presets_many/gen/pretty_False_perfect_True_top_False_slim_True_sample_rows_True_sample_pk_False.txt b/tests/summary/fixtures/metrics_presets_many/gen/pretty_False_perfect_True_top_False_slim_True_sample_rows_True_sample_pk_False.txt index dc9a50a..9242da0 100644 --- a/tests/summary/fixtures/metrics_presets_many/gen/pretty_False_perfect_True_top_False_slim_True_sample_rows_True_sample_pk_False.txt +++ b/tests/summary/fixtures/metrics_presets_many/gen/pretty_False_perfect_True_top_False_slim_True_sample_rows_True_sample_pk_False.txt @@ -8,12 +8,12 @@ Columns ▔▔▔▔▔▔▔ - ┏━━━━━━━━┳━━━━━━━━━━━━┳━━━━━━┳━━━━━━━━┳━━━━━┳━━━━━┳━━━━━━━━┳━━━━━━━━━━━━┳━━━━━━━━━━━┓ - ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ Mean ┃ Mean ┃ - ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ absolute ┃ relative ┃ - ┃ Column ┃ Match Rate ┃ Mean ┃ Median ┃ Min ┃ Max ┃ Std ┃ deviation ┃ deviation ┃ - ┡━━━━━━━━╇━━━━━━━━━━━━╇━━━━━━╇━━━━━━━━╇━━━━━╇━━━━━╇━━━━━━━━╇━━━━━━━━━━━━╇━━━━━━━━━━━┩ - │ price │ 60.00% │ 0.6 │ 0 │ 0 │ 2 │ 0.8944 │ 0.6 │ 0.02 │ - │ qty │ 80.00% │ 0.2 │ 0 │ 0 │ 1 │ 0.4472 │ 0.2 │ 0.05 │ - │ status │ 80.00% │ │ │ │ │ │ │ │ - └────────┴────────────┴──────┴────────┴─────┴─────┴────────┴────────────┴───────────┘ + ┏━━━━━━━━┳━━━━━━━━┳━━━━━━━━┳━━━━━━━━┳━━━━━━━━━┳━━━━━━━━┳━━━━━━━━━┳━━━━━━━━┳━━━━━━━━━┓ + ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ Mean ┃ Mean ┃ + ┃ ┃ Match ┃ Mean ┃ Median ┃ Min ┃ Max ┃ Std ┃ absol… ┃ relati… ┃ + ┃ Column ┃ Rate ┃ diff ┃ diff ┃ diff ┃ diff ┃ diff ┃ diff ┃ diff ┃ + ┡━━━━━━━━╇━━━━━━━━╇━━━━━━━━╇━━━━━━━━╇━━━━━━━━━╇━━━━━━━━╇━━━━━━━━━╇━━━━━━━━╇━━━━━━━━━┩ + │ price │ 60.00% │ 0.6 │ 0 │ 0 │ 2 │ 0.8944 │ 0.6 │ 0.02 │ + │ qty │ 80.00% │ 0.2 │ 0 │ 0 │ 1 │ 0.4472 │ 0.2 │ 0.05 │ + │ status │ 80.00% │ │ │ │ │ │ │ │ + └────────┴────────┴────────┴────────┴─────────┴────────┴─────────┴────────┴─────────┘ diff --git a/tests/summary/fixtures/metrics_presets_many/gen/pretty_False_perfect_True_top_True_slim_False_sample_rows_False_sample_pk_False.txt b/tests/summary/fixtures/metrics_presets_many/gen/pretty_False_perfect_True_top_True_slim_False_sample_rows_False_sample_pk_False.txt index 0334464..3d8e920 100644 --- a/tests/summary/fixtures/metrics_presets_many/gen/pretty_False_perfect_True_top_True_slim_False_sample_rows_False_sample_pk_False.txt +++ b/tests/summary/fixtures/metrics_presets_many/gen/pretty_False_perfect_True_top_True_slim_False_sample_rows_False_sample_pk_False.txt @@ -20,22 +20,26 @@ Columns ▔▔▔▔▔▔▔ - ┏━━━━━━━━┳━━━━━━━━┳━━━━━━┳━━━━━━━━┳━━━━━┳━━━━━┳━━━━━━━━┳━━━━━━━━━┳━━━━━━━━┳━━━━━━━━━┓ - ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ Mean ┃ Mean ┃ ┃ - ┃ ┃ Match ┃ ┃ ┃ ┃ ┃ ┃ absolu… ┃ relat… ┃ Top ┃ - ┃ Column ┃ Rate ┃ Mean ┃ Median ┃ Min ┃ Max ┃ Std ┃ deviat… ┃ devia… ┃ Changes ┃ - ┡━━━━━━━━╇━━━━━━━━╇━━━━━━╇━━━━━━━━╇━━━━━╇━━━━━╇━━━━━━━━╇━━━━━━━━━╇━━━━━━━━╇━━━━━━━━━┩ - │ price │ 60.00% │ 0.6 │ 0 │ 0 │ 2 │ 0.8944 │ 0.6 │ 0.02 │ 40.0 -> │ - │ │ │ │ │ │ │ │ │ │ 42.0 │ - │ │ │ │ │ │ │ │ │ │ (1x) │ - │ │ │ │ │ │ │ │ │ │ 20.0 -> │ - │ │ │ │ │ │ │ │ │ │ 21.0 │ - │ │ │ │ │ │ │ │ │ │ (1x) │ - ├────────┼────────┼──────┼────────┼─────┼─────┼────────┼─────────┼────────┼─────────┤ - │ qty │ 80.00% │ 0.2 │ 0 │ 0 │ 1 │ 0.4472 │ 0.2 │ 0.05 │ 4 -> 5 │ - │ │ │ │ │ │ │ │ │ │ (1x) │ - ├────────┼────────┼──────┼────────┼─────┼─────┼────────┼─────────┼────────┼─────────┤ - │ status │ 80.00% │ │ │ │ │ │ │ │ "c" -> │ - │ │ │ │ │ │ │ │ │ │ "x" │ - │ │ │ │ │ │ │ │ │ │ (1x) │ - └────────┴────────┴──────┴────────┴─────┴─────┴────────┴─────────┴────────┴─────────┘ + ┏━━━━━━━┳━━━━━━━┳━━━━━━━━┳━━━━━━━┳━━━━━━━━┳━━━━━━━┳━━━━━━━━┳━━━━━━━┳━━━━━━━━┳━━━━━━━┓ + ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ Mean ┃ Mean ┃ ┃ + ┃ Colum ┃ Match ┃ Mean ┃ Medi… ┃ Min ┃ Max ┃ Std ┃ abso… ┃ relat… ┃ Top ┃ + ┃ n ┃ Rate ┃ diff ┃ diff ┃ diff ┃ diff ┃ diff ┃ diff ┃ diff ┃ Chan… ┃ + ┡━━━━━━━╇━━━━━━━╇━━━━━━━━╇━━━━━━━╇━━━━━━━━╇━━━━━━━╇━━━━━━━━╇━━━━━━━╇━━━━━━━━╇━━━━━━━┩ + │ price │ 60.0… │ 0.6 │ 0 │ 0 │ 2 │ 0.8944 │ 0.6 │ 0.02 │ 40.0 │ + │ │ │ │ │ │ │ │ │ │ -> │ + │ │ │ │ │ │ │ │ │ │ 42.0 │ + │ │ │ │ │ │ │ │ │ │ (1x) │ + │ │ │ │ │ │ │ │ │ │ 20.0 │ + │ │ │ │ │ │ │ │ │ │ -> │ + │ │ │ │ │ │ │ │ │ │ 21.0 │ + │ │ │ │ │ │ │ │ │ │ (1x) │ + ├───────┼───────┼────────┼───────┼────────┼───────┼────────┼───────┼────────┼───────┤ + │ qty │ 80.0… │ 0.2 │ 0 │ 0 │ 1 │ 0.4472 │ 0.2 │ 0.05 │ 4 -> │ + │ │ │ │ │ │ │ │ │ │ 5 │ + │ │ │ │ │ │ │ │ │ │ (1x) │ + ├───────┼───────┼────────┼───────┼────────┼───────┼────────┼───────┼────────┼───────┤ + │ statu │ 80.0… │ │ │ │ │ │ │ │ "c" │ + │ s │ │ │ │ │ │ │ │ │ -> │ + │ │ │ │ │ │ │ │ │ │ "x" │ + │ │ │ │ │ │ │ │ │ │ (1x) │ + └───────┴───────┴────────┴───────┴────────┴───────┴────────┴───────┴────────┴───────┘ diff --git a/tests/summary/fixtures/metrics_presets_many/gen/pretty_False_perfect_True_top_True_slim_False_sample_rows_True_sample_pk_True.txt b/tests/summary/fixtures/metrics_presets_many/gen/pretty_False_perfect_True_top_True_slim_False_sample_rows_True_sample_pk_True.txt index 2fd9096..a269734 100644 --- a/tests/summary/fixtures/metrics_presets_many/gen/pretty_False_perfect_True_top_True_slim_False_sample_rows_True_sample_pk_True.txt +++ b/tests/summary/fixtures/metrics_presets_many/gen/pretty_False_perfect_True_top_True_slim_False_sample_rows_True_sample_pk_True.txt @@ -20,26 +20,34 @@ Columns ▔▔▔▔▔▔▔ - ┏━━━━━━━━┳━━━━━━━━┳━━━━━━┳━━━━━━━━┳━━━━━┳━━━━━┳━━━━━━━━┳━━━━━━━━━┳━━━━━━━━┳━━━━━━━━━┓ - ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ Mean ┃ Mean ┃ ┃ - ┃ ┃ Match ┃ ┃ ┃ ┃ ┃ ┃ absolu… ┃ relat… ┃ Top ┃ - ┃ Column ┃ Rate ┃ Mean ┃ Median ┃ Min ┃ Max ┃ Std ┃ deviat… ┃ devia… ┃ Changes ┃ - ┡━━━━━━━━╇━━━━━━━━╇━━━━━━╇━━━━━━━━╇━━━━━╇━━━━━╇━━━━━━━━╇━━━━━━━━━╇━━━━━━━━╇━━━━━━━━━┩ - │ price │ 60.00% │ 0.6 │ 0 │ 0 │ 2 │ 0.8944 │ 0.6 │ 0.02 │ 40.0 -> │ - │ │ │ │ │ │ │ │ │ │ 42.0 │ - │ │ │ │ │ │ │ │ │ │ (1x, │ - │ │ │ │ │ │ │ │ │ │ e.g. 4) │ - │ │ │ │ │ │ │ │ │ │ 20.0 -> │ - │ │ │ │ │ │ │ │ │ │ 21.0 │ - │ │ │ │ │ │ │ │ │ │ (1x, │ - │ │ │ │ │ │ │ │ │ │ e.g. 2) │ - ├────────┼────────┼──────┼────────┼─────┼─────┼────────┼─────────┼────────┼─────────┤ - │ qty │ 80.00% │ 0.2 │ 0 │ 0 │ 1 │ 0.4472 │ 0.2 │ 0.05 │ 4 -> 5 │ - │ │ │ │ │ │ │ │ │ │ (1x, │ - │ │ │ │ │ │ │ │ │ │ e.g. 4) │ - ├────────┼────────┼──────┼────────┼─────┼─────┼────────┼─────────┼────────┼─────────┤ - │ status │ 80.00% │ │ │ │ │ │ │ │ "c" -> │ - │ │ │ │ │ │ │ │ │ │ "x" │ - │ │ │ │ │ │ │ │ │ │ (1x, │ - │ │ │ │ │ │ │ │ │ │ e.g. 3) │ - └────────┴────────┴──────┴────────┴─────┴─────┴────────┴─────────┴────────┴─────────┘ + ┏━━━━━━━┳━━━━━━━┳━━━━━━━━┳━━━━━━━┳━━━━━━━━┳━━━━━━━┳━━━━━━━━┳━━━━━━━┳━━━━━━━━┳━━━━━━━┓ + ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ Mean ┃ Mean ┃ ┃ + ┃ Colum ┃ Match ┃ Mean ┃ Medi… ┃ Min ┃ Max ┃ Std ┃ abso… ┃ relat… ┃ Top ┃ + ┃ n ┃ Rate ┃ diff ┃ diff ┃ diff ┃ diff ┃ diff ┃ diff ┃ diff ┃ Chan… ┃ + ┡━━━━━━━╇━━━━━━━╇━━━━━━━━╇━━━━━━━╇━━━━━━━━╇━━━━━━━╇━━━━━━━━╇━━━━━━━╇━━━━━━━━╇━━━━━━━┩ + │ price │ 60.0… │ 0.6 │ 0 │ 0 │ 2 │ 0.8944 │ 0.6 │ 0.02 │ 40.0 │ + │ │ │ │ │ │ │ │ │ │ -> │ + │ │ │ │ │ │ │ │ │ │ 42.0 │ + │ │ │ │ │ │ │ │ │ │ (1x, │ + │ │ │ │ │ │ │ │ │ │ e.g. │ + │ │ │ │ │ │ │ │ │ │ 4) │ + │ │ │ │ │ │ │ │ │ │ 20.0 │ + │ │ │ │ │ │ │ │ │ │ -> │ + │ │ │ │ │ │ │ │ │ │ 21.0 │ + │ │ │ │ │ │ │ │ │ │ (1x, │ + │ │ │ │ │ │ │ │ │ │ e.g. │ + │ │ │ │ │ │ │ │ │ │ 2) │ + ├───────┼───────┼────────┼───────┼────────┼───────┼────────┼───────┼────────┼───────┤ + │ qty │ 80.0… │ 0.2 │ 0 │ 0 │ 1 │ 0.4472 │ 0.2 │ 0.05 │ 4 -> │ + │ │ │ │ │ │ │ │ │ │ 5 │ + │ │ │ │ │ │ │ │ │ │ (1x, │ + │ │ │ │ │ │ │ │ │ │ e.g. │ + │ │ │ │ │ │ │ │ │ │ 4) │ + ├───────┼───────┼────────┼───────┼────────┼───────┼────────┼───────┼────────┼───────┤ + │ statu │ 80.0… │ │ │ │ │ │ │ │ "c" │ + │ s │ │ │ │ │ │ │ │ │ -> │ + │ │ │ │ │ │ │ │ │ │ "x" │ + │ │ │ │ │ │ │ │ │ │ (1x, │ + │ │ │ │ │ │ │ │ │ │ e.g. │ + │ │ │ │ │ │ │ │ │ │ 3) │ + └───────┴───────┴────────┴───────┴────────┴───────┴────────┴───────┴────────┴───────┘ diff --git a/tests/summary/fixtures/metrics_presets_many/gen/pretty_False_perfect_True_top_True_slim_True_sample_rows_False_sample_pk_False.txt b/tests/summary/fixtures/metrics_presets_many/gen/pretty_False_perfect_True_top_True_slim_True_sample_rows_False_sample_pk_False.txt index eb395dd..988afd1 100644 --- a/tests/summary/fixtures/metrics_presets_many/gen/pretty_False_perfect_True_top_True_slim_True_sample_rows_False_sample_pk_False.txt +++ b/tests/summary/fixtures/metrics_presets_many/gen/pretty_False_perfect_True_top_True_slim_True_sample_rows_False_sample_pk_False.txt @@ -8,22 +8,26 @@ Columns ▔▔▔▔▔▔▔ - ┏━━━━━━━━┳━━━━━━━━┳━━━━━━┳━━━━━━━━┳━━━━━┳━━━━━┳━━━━━━━━┳━━━━━━━━━┳━━━━━━━━┳━━━━━━━━━┓ - ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ Mean ┃ Mean ┃ ┃ - ┃ ┃ Match ┃ ┃ ┃ ┃ ┃ ┃ absolu… ┃ relat… ┃ Top ┃ - ┃ Column ┃ Rate ┃ Mean ┃ Median ┃ Min ┃ Max ┃ Std ┃ deviat… ┃ devia… ┃ Changes ┃ - ┡━━━━━━━━╇━━━━━━━━╇━━━━━━╇━━━━━━━━╇━━━━━╇━━━━━╇━━━━━━━━╇━━━━━━━━━╇━━━━━━━━╇━━━━━━━━━┩ - │ price │ 60.00% │ 0.6 │ 0 │ 0 │ 2 │ 0.8944 │ 0.6 │ 0.02 │ 40.0 -> │ - │ │ │ │ │ │ │ │ │ │ 42.0 │ - │ │ │ │ │ │ │ │ │ │ (1x) │ - │ │ │ │ │ │ │ │ │ │ 20.0 -> │ - │ │ │ │ │ │ │ │ │ │ 21.0 │ - │ │ │ │ │ │ │ │ │ │ (1x) │ - ├────────┼────────┼──────┼────────┼─────┼─────┼────────┼─────────┼────────┼─────────┤ - │ qty │ 80.00% │ 0.2 │ 0 │ 0 │ 1 │ 0.4472 │ 0.2 │ 0.05 │ 4 -> 5 │ - │ │ │ │ │ │ │ │ │ │ (1x) │ - ├────────┼────────┼──────┼────────┼─────┼─────┼────────┼─────────┼────────┼─────────┤ - │ status │ 80.00% │ │ │ │ │ │ │ │ "c" -> │ - │ │ │ │ │ │ │ │ │ │ "x" │ - │ │ │ │ │ │ │ │ │ │ (1x) │ - └────────┴────────┴──────┴────────┴─────┴─────┴────────┴─────────┴────────┴─────────┘ + ┏━━━━━━━┳━━━━━━━┳━━━━━━━━┳━━━━━━━┳━━━━━━━━┳━━━━━━━┳━━━━━━━━┳━━━━━━━┳━━━━━━━━┳━━━━━━━┓ + ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ Mean ┃ Mean ┃ ┃ + ┃ Colum ┃ Match ┃ Mean ┃ Medi… ┃ Min ┃ Max ┃ Std ┃ abso… ┃ relat… ┃ Top ┃ + ┃ n ┃ Rate ┃ diff ┃ diff ┃ diff ┃ diff ┃ diff ┃ diff ┃ diff ┃ Chan… ┃ + ┡━━━━━━━╇━━━━━━━╇━━━━━━━━╇━━━━━━━╇━━━━━━━━╇━━━━━━━╇━━━━━━━━╇━━━━━━━╇━━━━━━━━╇━━━━━━━┩ + │ price │ 60.0… │ 0.6 │ 0 │ 0 │ 2 │ 0.8944 │ 0.6 │ 0.02 │ 40.0 │ + │ │ │ │ │ │ │ │ │ │ -> │ + │ │ │ │ │ │ │ │ │ │ 42.0 │ + │ │ │ │ │ │ │ │ │ │ (1x) │ + │ │ │ │ │ │ │ │ │ │ 20.0 │ + │ │ │ │ │ │ │ │ │ │ -> │ + │ │ │ │ │ │ │ │ │ │ 21.0 │ + │ │ │ │ │ │ │ │ │ │ (1x) │ + ├───────┼───────┼────────┼───────┼────────┼───────┼────────┼───────┼────────┼───────┤ + │ qty │ 80.0… │ 0.2 │ 0 │ 0 │ 1 │ 0.4472 │ 0.2 │ 0.05 │ 4 -> │ + │ │ │ │ │ │ │ │ │ │ 5 │ + │ │ │ │ │ │ │ │ │ │ (1x) │ + ├───────┼───────┼────────┼───────┼────────┼───────┼────────┼───────┼────────┼───────┤ + │ statu │ 80.0… │ │ │ │ │ │ │ │ "c" │ + │ s │ │ │ │ │ │ │ │ │ -> │ + │ │ │ │ │ │ │ │ │ │ "x" │ + │ │ │ │ │ │ │ │ │ │ (1x) │ + └───────┴───────┴────────┴───────┴────────┴───────┴────────┴───────┴────────┴───────┘ diff --git a/tests/summary/fixtures/metrics_presets_many/gen/pretty_False_perfect_True_top_True_slim_True_sample_rows_True_sample_pk_True.txt b/tests/summary/fixtures/metrics_presets_many/gen/pretty_False_perfect_True_top_True_slim_True_sample_rows_True_sample_pk_True.txt index 31d7344..cb36645 100644 --- a/tests/summary/fixtures/metrics_presets_many/gen/pretty_False_perfect_True_top_True_slim_True_sample_rows_True_sample_pk_True.txt +++ b/tests/summary/fixtures/metrics_presets_many/gen/pretty_False_perfect_True_top_True_slim_True_sample_rows_True_sample_pk_True.txt @@ -8,26 +8,34 @@ Columns ▔▔▔▔▔▔▔ - ┏━━━━━━━━┳━━━━━━━━┳━━━━━━┳━━━━━━━━┳━━━━━┳━━━━━┳━━━━━━━━┳━━━━━━━━━┳━━━━━━━━┳━━━━━━━━━┓ - ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ Mean ┃ Mean ┃ ┃ - ┃ ┃ Match ┃ ┃ ┃ ┃ ┃ ┃ absolu… ┃ relat… ┃ Top ┃ - ┃ Column ┃ Rate ┃ Mean ┃ Median ┃ Min ┃ Max ┃ Std ┃ deviat… ┃ devia… ┃ Changes ┃ - ┡━━━━━━━━╇━━━━━━━━╇━━━━━━╇━━━━━━━━╇━━━━━╇━━━━━╇━━━━━━━━╇━━━━━━━━━╇━━━━━━━━╇━━━━━━━━━┩ - │ price │ 60.00% │ 0.6 │ 0 │ 0 │ 2 │ 0.8944 │ 0.6 │ 0.02 │ 40.0 -> │ - │ │ │ │ │ │ │ │ │ │ 42.0 │ - │ │ │ │ │ │ │ │ │ │ (1x, │ - │ │ │ │ │ │ │ │ │ │ e.g. 4) │ - │ │ │ │ │ │ │ │ │ │ 20.0 -> │ - │ │ │ │ │ │ │ │ │ │ 21.0 │ - │ │ │ │ │ │ │ │ │ │ (1x, │ - │ │ │ │ │ │ │ │ │ │ e.g. 2) │ - ├────────┼────────┼──────┼────────┼─────┼─────┼────────┼─────────┼────────┼─────────┤ - │ qty │ 80.00% │ 0.2 │ 0 │ 0 │ 1 │ 0.4472 │ 0.2 │ 0.05 │ 4 -> 5 │ - │ │ │ │ │ │ │ │ │ │ (1x, │ - │ │ │ │ │ │ │ │ │ │ e.g. 4) │ - ├────────┼────────┼──────┼────────┼─────┼─────┼────────┼─────────┼────────┼─────────┤ - │ status │ 80.00% │ │ │ │ │ │ │ │ "c" -> │ - │ │ │ │ │ │ │ │ │ │ "x" │ - │ │ │ │ │ │ │ │ │ │ (1x, │ - │ │ │ │ │ │ │ │ │ │ e.g. 3) │ - └────────┴────────┴──────┴────────┴─────┴─────┴────────┴─────────┴────────┴─────────┘ + ┏━━━━━━━┳━━━━━━━┳━━━━━━━━┳━━━━━━━┳━━━━━━━━┳━━━━━━━┳━━━━━━━━┳━━━━━━━┳━━━━━━━━┳━━━━━━━┓ + ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃ Mean ┃ Mean ┃ ┃ + ┃ Colum ┃ Match ┃ Mean ┃ Medi… ┃ Min ┃ Max ┃ Std ┃ abso… ┃ relat… ┃ Top ┃ + ┃ n ┃ Rate ┃ diff ┃ diff ┃ diff ┃ diff ┃ diff ┃ diff ┃ diff ┃ Chan… ┃ + ┡━━━━━━━╇━━━━━━━╇━━━━━━━━╇━━━━━━━╇━━━━━━━━╇━━━━━━━╇━━━━━━━━╇━━━━━━━╇━━━━━━━━╇━━━━━━━┩ + │ price │ 60.0… │ 0.6 │ 0 │ 0 │ 2 │ 0.8944 │ 0.6 │ 0.02 │ 40.0 │ + │ │ │ │ │ │ │ │ │ │ -> │ + │ │ │ │ │ │ │ │ │ │ 42.0 │ + │ │ │ │ │ │ │ │ │ │ (1x, │ + │ │ │ │ │ │ │ │ │ │ e.g. │ + │ │ │ │ │ │ │ │ │ │ 4) │ + │ │ │ │ │ │ │ │ │ │ 20.0 │ + │ │ │ │ │ │ │ │ │ │ -> │ + │ │ │ │ │ │ │ │ │ │ 21.0 │ + │ │ │ │ │ │ │ │ │ │ (1x, │ + │ │ │ │ │ │ │ │ │ │ e.g. │ + │ │ │ │ │ │ │ │ │ │ 2) │ + ├───────┼───────┼────────┼───────┼────────┼───────┼────────┼───────┼────────┼───────┤ + │ qty │ 80.0… │ 0.2 │ 0 │ 0 │ 1 │ 0.4472 │ 0.2 │ 0.05 │ 4 -> │ + │ │ │ │ │ │ │ │ │ │ 5 │ + │ │ │ │ │ │ │ │ │ │ (1x, │ + │ │ │ │ │ │ │ │ │ │ e.g. │ + │ │ │ │ │ │ │ │ │ │ 4) │ + ├───────┼───────┼────────┼───────┼────────┼───────┼────────┼───────┼────────┼───────┤ + │ statu │ 80.0… │ │ │ │ │ │ │ │ "c" │ + │ s │ │ │ │ │ │ │ │ │ -> │ + │ │ │ │ │ │ │ │ │ │ "x" │ + │ │ │ │ │ │ │ │ │ │ (1x, │ + │ │ │ │ │ │ │ │ │ │ e.g. │ + │ │ │ │ │ │ │ │ │ │ 3) │ + └───────┴───────┴────────┴───────┴────────┴───────┴────────┴───────┴────────┴───────┘ diff --git a/tests/summary/fixtures/metrics_presets_many/gen/pretty_True_perfect_False_top_False_slim_False_sample_rows_False_sample_pk_False.txt b/tests/summary/fixtures/metrics_presets_many/gen/pretty_True_perfect_False_top_False_slim_False_sample_rows_False_sample_pk_False.txt index 0acf593..0b6d778 100644 --- a/tests/summary/fixtures/metrics_presets_many/gen/pretty_True_perfect_False_top_False_slim_False_sample_rows_False_sample_pk_False.txt +++ b/tests/summary/fixtures/metrics_presets_many/gen/pretty_True_perfect_False_top_False_slim_False_sample_rows_False_sample_pk_False.txt @@ -20,12 +20,12 @@ Columns ▔▔▔▔▔▔▔ - ┏━━━━━━━━┳━━━━━━━━━━━━┳━━━━━━┳━━━━━━━━┳━━━━━┳━━━━━┳━━━━━━━━┳━━━━━━━━━━━━┳━━━━━━━━━━━┓ - ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃  Mean ┃  Mean ┃ - ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃  absolute ┃  relative ┃ - ┃ Column ┃ Match Rate ┃ Mean ┃ Median ┃ Min ┃ Max ┃  Std ┃  deviation ┃ deviation ┃ - ┡━━━━━━━━╇━━━━━━━━━━━━╇━━━━━━╇━━━━━━━━╇━━━━━╇━━━━━╇━━━━━━━━╇━━━━━━━━━━━━╇━━━━━━━━━━━┩ - │ price  │ 60.00% │ 0.6 │ 0 │ 0 │ 2 │ 0.8944 │ 0.6 │ 0.02 │ - │ qty  │ 80.00% │ 0.2 │ 0 │ 0 │ 1 │ 0.4472 │ 0.2 │ 0.05 │ - │ status │ 80.00% │ │ │ │ │ │ │ │ - └────────┴────────────┴──────┴────────┴─────┴─────┴────────┴────────────┴───────────┘ + ┏━━━━━━━━┳━━━━━━━━┳━━━━━━━━┳━━━━━━━━┳━━━━━━━━━┳━━━━━━━━┳━━━━━━━━━┳━━━━━━━━┳━━━━━━━━━┓ + ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃  Mean ┃  Mean ┃ + ┃ ┃  Match ┃  Mean ┃ Median ┃  Min ┃  Max ┃  Std ┃ absol… ┃ relati… ┃ + ┃ Column ┃  Rate ┃  diff ┃  diff ┃  diff ┃  diff ┃  diff ┃  diff ┃  diff ┃ + ┡━━━━━━━━╇━━━━━━━━╇━━━━━━━━╇━━━━━━━━╇━━━━━━━━━╇━━━━━━━━╇━━━━━━━━━╇━━━━━━━━╇━━━━━━━━━┩ + │ price  │ 60.00% │ 0.6 │ 0 │ 0 │ 2 │ 0.8944 │ 0.6 │ 0.02 │ + │ qty  │ 80.00% │ 0.2 │ 0 │ 0 │ 1 │ 0.4472 │ 0.2 │ 0.05 │ + │ status │ 80.00% │ │ │ │ │ │ │ │ + └────────┴────────┴────────┴────────┴─────────┴────────┴─────────┴────────┴─────────┘ diff --git a/tests/summary/fixtures/metrics_presets_many/gen/pretty_True_perfect_False_top_False_slim_False_sample_rows_True_sample_pk_False.txt b/tests/summary/fixtures/metrics_presets_many/gen/pretty_True_perfect_False_top_False_slim_False_sample_rows_True_sample_pk_False.txt index 0acf593..0b6d778 100644 --- a/tests/summary/fixtures/metrics_presets_many/gen/pretty_True_perfect_False_top_False_slim_False_sample_rows_True_sample_pk_False.txt +++ b/tests/summary/fixtures/metrics_presets_many/gen/pretty_True_perfect_False_top_False_slim_False_sample_rows_True_sample_pk_False.txt @@ -20,12 +20,12 @@ Columns ▔▔▔▔▔▔▔ - ┏━━━━━━━━┳━━━━━━━━━━━━┳━━━━━━┳━━━━━━━━┳━━━━━┳━━━━━┳━━━━━━━━┳━━━━━━━━━━━━┳━━━━━━━━━━━┓ - ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃  Mean ┃  Mean ┃ - ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃  absolute ┃  relative ┃ - ┃ Column ┃ Match Rate ┃ Mean ┃ Median ┃ Min ┃ Max ┃  Std ┃  deviation ┃ deviation ┃ - ┡━━━━━━━━╇━━━━━━━━━━━━╇━━━━━━╇━━━━━━━━╇━━━━━╇━━━━━╇━━━━━━━━╇━━━━━━━━━━━━╇━━━━━━━━━━━┩ - │ price  │ 60.00% │ 0.6 │ 0 │ 0 │ 2 │ 0.8944 │ 0.6 │ 0.02 │ - │ qty  │ 80.00% │ 0.2 │ 0 │ 0 │ 1 │ 0.4472 │ 0.2 │ 0.05 │ - │ status │ 80.00% │ │ │ │ │ │ │ │ - └────────┴────────────┴──────┴────────┴─────┴─────┴────────┴────────────┴───────────┘ + ┏━━━━━━━━┳━━━━━━━━┳━━━━━━━━┳━━━━━━━━┳━━━━━━━━━┳━━━━━━━━┳━━━━━━━━━┳━━━━━━━━┳━━━━━━━━━┓ + ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃  Mean ┃  Mean ┃ + ┃ ┃  Match ┃  Mean ┃ Median ┃  Min ┃  Max ┃  Std ┃ absol… ┃ relati… ┃ + ┃ Column ┃  Rate ┃  diff ┃  diff ┃  diff ┃  diff ┃  diff ┃  diff ┃  diff ┃ + ┡━━━━━━━━╇━━━━━━━━╇━━━━━━━━╇━━━━━━━━╇━━━━━━━━━╇━━━━━━━━╇━━━━━━━━━╇━━━━━━━━╇━━━━━━━━━┩ + │ price  │ 60.00% │ 0.6 │ 0 │ 0 │ 2 │ 0.8944 │ 0.6 │ 0.02 │ + │ qty  │ 80.00% │ 0.2 │ 0 │ 0 │ 1 │ 0.4472 │ 0.2 │ 0.05 │ + │ status │ 80.00% │ │ │ │ │ │ │ │ + └────────┴────────┴────────┴────────┴─────────┴────────┴─────────┴────────┴─────────┘ diff --git a/tests/summary/fixtures/metrics_presets_many/gen/pretty_True_perfect_False_top_False_slim_True_sample_rows_False_sample_pk_False.txt b/tests/summary/fixtures/metrics_presets_many/gen/pretty_True_perfect_False_top_False_slim_True_sample_rows_False_sample_pk_False.txt index 5510545..50e2b88 100644 --- a/tests/summary/fixtures/metrics_presets_many/gen/pretty_True_perfect_False_top_False_slim_True_sample_rows_False_sample_pk_False.txt +++ b/tests/summary/fixtures/metrics_presets_many/gen/pretty_True_perfect_False_top_False_slim_True_sample_rows_False_sample_pk_False.txt @@ -8,12 +8,12 @@ Columns ▔▔▔▔▔▔▔ - ┏━━━━━━━━┳━━━━━━━━━━━━┳━━━━━━┳━━━━━━━━┳━━━━━┳━━━━━┳━━━━━━━━┳━━━━━━━━━━━━┳━━━━━━━━━━━┓ - ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃  Mean ┃  Mean ┃ - ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃  absolute ┃  relative ┃ - ┃ Column ┃ Match Rate ┃ Mean ┃ Median ┃ Min ┃ Max ┃  Std ┃  deviation ┃ deviation ┃ - ┡━━━━━━━━╇━━━━━━━━━━━━╇━━━━━━╇━━━━━━━━╇━━━━━╇━━━━━╇━━━━━━━━╇━━━━━━━━━━━━╇━━━━━━━━━━━┩ - │ price  │ 60.00% │ 0.6 │ 0 │ 0 │ 2 │ 0.8944 │ 0.6 │ 0.02 │ - │ qty  │ 80.00% │ 0.2 │ 0 │ 0 │ 1 │ 0.4472 │ 0.2 │ 0.05 │ - │ status │ 80.00% │ │ │ │ │ │ │ │ - └────────┴────────────┴──────┴────────┴─────┴─────┴────────┴────────────┴───────────┘ + ┏━━━━━━━━┳━━━━━━━━┳━━━━━━━━┳━━━━━━━━┳━━━━━━━━━┳━━━━━━━━┳━━━━━━━━━┳━━━━━━━━┳━━━━━━━━━┓ + ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃  Mean ┃  Mean ┃ + ┃ ┃  Match ┃  Mean ┃ Median ┃  Min ┃  Max ┃  Std ┃ absol… ┃ relati… ┃ + ┃ Column ┃  Rate ┃  diff ┃  diff ┃  diff ┃  diff ┃  diff ┃  diff ┃  diff ┃ + ┡━━━━━━━━╇━━━━━━━━╇━━━━━━━━╇━━━━━━━━╇━━━━━━━━━╇━━━━━━━━╇━━━━━━━━━╇━━━━━━━━╇━━━━━━━━━┩ + │ price  │ 60.00% │ 0.6 │ 0 │ 0 │ 2 │ 0.8944 │ 0.6 │ 0.02 │ + │ qty  │ 80.00% │ 0.2 │ 0 │ 0 │ 1 │ 0.4472 │ 0.2 │ 0.05 │ + │ status │ 80.00% │ │ │ │ │ │ │ │ + └────────┴────────┴────────┴────────┴─────────┴────────┴─────────┴────────┴─────────┘ diff --git a/tests/summary/fixtures/metrics_presets_many/gen/pretty_True_perfect_False_top_False_slim_True_sample_rows_True_sample_pk_False.txt b/tests/summary/fixtures/metrics_presets_many/gen/pretty_True_perfect_False_top_False_slim_True_sample_rows_True_sample_pk_False.txt index 5510545..50e2b88 100644 --- a/tests/summary/fixtures/metrics_presets_many/gen/pretty_True_perfect_False_top_False_slim_True_sample_rows_True_sample_pk_False.txt +++ b/tests/summary/fixtures/metrics_presets_many/gen/pretty_True_perfect_False_top_False_slim_True_sample_rows_True_sample_pk_False.txt @@ -8,12 +8,12 @@ Columns ▔▔▔▔▔▔▔ - ┏━━━━━━━━┳━━━━━━━━━━━━┳━━━━━━┳━━━━━━━━┳━━━━━┳━━━━━┳━━━━━━━━┳━━━━━━━━━━━━┳━━━━━━━━━━━┓ - ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃  Mean ┃  Mean ┃ - ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃  absolute ┃  relative ┃ - ┃ Column ┃ Match Rate ┃ Mean ┃ Median ┃ Min ┃ Max ┃  Std ┃  deviation ┃ deviation ┃ - ┡━━━━━━━━╇━━━━━━━━━━━━╇━━━━━━╇━━━━━━━━╇━━━━━╇━━━━━╇━━━━━━━━╇━━━━━━━━━━━━╇━━━━━━━━━━━┩ - │ price  │ 60.00% │ 0.6 │ 0 │ 0 │ 2 │ 0.8944 │ 0.6 │ 0.02 │ - │ qty  │ 80.00% │ 0.2 │ 0 │ 0 │ 1 │ 0.4472 │ 0.2 │ 0.05 │ - │ status │ 80.00% │ │ │ │ │ │ │ │ - └────────┴────────────┴──────┴────────┴─────┴─────┴────────┴────────────┴───────────┘ + ┏━━━━━━━━┳━━━━━━━━┳━━━━━━━━┳━━━━━━━━┳━━━━━━━━━┳━━━━━━━━┳━━━━━━━━━┳━━━━━━━━┳━━━━━━━━━┓ + ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃  Mean ┃  Mean ┃ + ┃ ┃  Match ┃  Mean ┃ Median ┃  Min ┃  Max ┃  Std ┃ absol… ┃ relati… ┃ + ┃ Column ┃  Rate ┃  diff ┃  diff ┃  diff ┃  diff ┃  diff ┃  diff ┃  diff ┃ + ┡━━━━━━━━╇━━━━━━━━╇━━━━━━━━╇━━━━━━━━╇━━━━━━━━━╇━━━━━━━━╇━━━━━━━━━╇━━━━━━━━╇━━━━━━━━━┩ + │ price  │ 60.00% │ 0.6 │ 0 │ 0 │ 2 │ 0.8944 │ 0.6 │ 0.02 │ + │ qty  │ 80.00% │ 0.2 │ 0 │ 0 │ 1 │ 0.4472 │ 0.2 │ 0.05 │ + │ status │ 80.00% │ │ │ │ │ │ │ │ + └────────┴────────┴────────┴────────┴─────────┴────────┴─────────┴────────┴─────────┘ diff --git a/tests/summary/fixtures/metrics_presets_many/gen/pretty_True_perfect_False_top_True_slim_False_sample_rows_False_sample_pk_False.txt b/tests/summary/fixtures/metrics_presets_many/gen/pretty_True_perfect_False_top_True_slim_False_sample_rows_False_sample_pk_False.txt index ca13fa5..cbf10eb 100644 --- a/tests/summary/fixtures/metrics_presets_many/gen/pretty_True_perfect_False_top_True_slim_False_sample_rows_False_sample_pk_False.txt +++ b/tests/summary/fixtures/metrics_presets_many/gen/pretty_True_perfect_False_top_True_slim_False_sample_rows_False_sample_pk_False.txt @@ -20,22 +20,26 @@ Columns ▔▔▔▔▔▔▔ - ┏━━━━━━━━┳━━━━━━━━┳━━━━━━┳━━━━━━━━┳━━━━━┳━━━━━┳━━━━━━━━┳━━━━━━━━━┳━━━━━━━━┳━━━━━━━━━┓ - ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃  Mean ┃  Mean ┃ ┃ - ┃ ┃  Match ┃ ┃ ┃ ┃ ┃ ┃ absolu… ┃ relat… ┃  Top ┃ - ┃ Column ┃  Rate ┃ Mean ┃ Median ┃ Min ┃ Max ┃  Std ┃ deviat… ┃ devia… ┃ Changes ┃ - ┡━━━━━━━━╇━━━━━━━━╇━━━━━━╇━━━━━━━━╇━━━━━╇━━━━━╇━━━━━━━━╇━━━━━━━━━╇━━━━━━━━╇━━━━━━━━━┩ - │ price  │ 60.00% │ 0.6 │ 0 │ 0 │ 2 │ 0.8944 │ 0.6 │ 0.02 │ 40.0 -> │ - │ │ │ │ │ │ │ │ │ │ 42.0 │ - │ │ │ │ │ │ │ │ │ │ (1x) │ - │ │ │ │ │ │ │ │ │ │ 20.0 -> │ - │ │ │ │ │ │ │ │ │ │ 21.0 │ - │ │ │ │ │ │ │ │ │ │ (1x) │ - ├────────┼────────┼──────┼────────┼─────┼─────┼────────┼─────────┼────────┼─────────┤ - │ qty  │ 80.00% │ 0.2 │ 0 │ 0 │ 1 │ 0.4472 │ 0.2 │ 0.05 │ 4 -> 5 │ - │ │ │ │ │ │ │ │ │ │ (1x) │ - ├────────┼────────┼──────┼────────┼─────┼─────┼────────┼─────────┼────────┼─────────┤ - │ status │ 80.00% │ │ │ │ │ │ │ │ "c" -> │ - │ │ │ │ │ │ │ │ │ │ "x" │ - │ │ │ │ │ │ │ │ │ │ (1x) │ - └────────┴────────┴──────┴────────┴─────┴─────┴────────┴─────────┴────────┴─────────┘ + ┏━━━━━━━┳━━━━━━━┳━━━━━━━━┳━━━━━━━┳━━━━━━━━┳━━━━━━━┳━━━━━━━━┳━━━━━━━┳━━━━━━━━┳━━━━━━━┓ + ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃  Mean ┃  Mean ┃ ┃ + ┃ Colum ┃ Match ┃  Mean ┃ Medi… ┃  Min ┃  Max ┃  Std ┃ abso… ┃ relat… ┃  Top ┃ + ┃ n  ┃  Rate ┃  diff ┃  diff ┃  diff ┃  diff ┃  diff ┃  diff ┃  diff ┃ Chan… ┃ + ┡━━━━━━━╇━━━━━━━╇━━━━━━━━╇━━━━━━━╇━━━━━━━━╇━━━━━━━╇━━━━━━━━╇━━━━━━━╇━━━━━━━━╇━━━━━━━┩ + │ price │ 60.0… │ 0.6 │ 0 │ 0 │ 2 │ 0.8944 │ 0.6 │ 0.02 │ 40.0 │ + │ │ │ │ │ │ │ │ │ │ -> │ + │ │ │ │ │ │ │ │ │ │ 42.0 │ + │ │ │ │ │ │ │ │ │ │ (1x) │ + │ │ │ │ │ │ │ │ │ │ 20.0 │ + │ │ │ │ │ │ │ │ │ │ -> │ + │ │ │ │ │ │ │ │ │ │ 21.0 │ + │ │ │ │ │ │ │ │ │ │ (1x) │ + ├───────┼───────┼────────┼───────┼────────┼───────┼────────┼───────┼────────┼───────┤ + │ qty  │ 80.0… │ 0.2 │ 0 │ 0 │ 1 │ 0.4472 │ 0.2 │ 0.05 │ 4 -> │ + │ │ │ │ │ │ │ │ │ │ 5 │ + │ │ │ │ │ │ │ │ │ │ (1x) │ + ├───────┼───────┼────────┼───────┼────────┼───────┼────────┼───────┼────────┼───────┤ + │ statu │ 80.0… │ │ │ │ │ │ │ │ "c" │ + │ s  │ │ │ │ │ │ │ │ │ -> │ + │ │ │ │ │ │ │ │ │ │ "x" │ + │ │ │ │ │ │ │ │ │ │ (1x) │ + └───────┴───────┴────────┴───────┴────────┴───────┴────────┴───────┴────────┴───────┘ diff --git a/tests/summary/fixtures/metrics_presets_many/gen/pretty_True_perfect_False_top_True_slim_False_sample_rows_True_sample_pk_True.txt b/tests/summary/fixtures/metrics_presets_many/gen/pretty_True_perfect_False_top_True_slim_False_sample_rows_True_sample_pk_True.txt index f07a09b..89fff5a 100644 --- a/tests/summary/fixtures/metrics_presets_many/gen/pretty_True_perfect_False_top_True_slim_False_sample_rows_True_sample_pk_True.txt +++ b/tests/summary/fixtures/metrics_presets_many/gen/pretty_True_perfect_False_top_True_slim_False_sample_rows_True_sample_pk_True.txt @@ -20,26 +20,34 @@ Columns ▔▔▔▔▔▔▔ - ┏━━━━━━━━┳━━━━━━━━┳━━━━━━┳━━━━━━━━┳━━━━━┳━━━━━┳━━━━━━━━┳━━━━━━━━━┳━━━━━━━━┳━━━━━━━━━┓ - ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃  Mean ┃  Mean ┃ ┃ - ┃ ┃  Match ┃ ┃ ┃ ┃ ┃ ┃ absolu… ┃ relat… ┃  Top ┃ - ┃ Column ┃  Rate ┃ Mean ┃ Median ┃ Min ┃ Max ┃  Std ┃ deviat… ┃ devia… ┃ Changes ┃ - ┡━━━━━━━━╇━━━━━━━━╇━━━━━━╇━━━━━━━━╇━━━━━╇━━━━━╇━━━━━━━━╇━━━━━━━━━╇━━━━━━━━╇━━━━━━━━━┩ - │ price  │ 60.00% │ 0.6 │ 0 │ 0 │ 2 │ 0.8944 │ 0.6 │ 0.02 │ 40.0 -> │ - │ │ │ │ │ │ │ │ │ │ 42.0 │ - │ │ │ │ │ │ │ │ │ │ (1x, │ - │ │ │ │ │ │ │ │ │ │ e.g. 4) │ - │ │ │ │ │ │ │ │ │ │ 20.0 -> │ - │ │ │ │ │ │ │ │ │ │ 21.0 │ - │ │ │ │ │ │ │ │ │ │ (1x, │ - │ │ │ │ │ │ │ │ │ │ e.g. 2) │ - ├────────┼────────┼──────┼────────┼─────┼─────┼────────┼─────────┼────────┼─────────┤ - │ qty  │ 80.00% │ 0.2 │ 0 │ 0 │ 1 │ 0.4472 │ 0.2 │ 0.05 │ 4 -> 5 │ - │ │ │ │ │ │ │ │ │ │ (1x, │ - │ │ │ │ │ │ │ │ │ │ e.g. 4) │ - ├────────┼────────┼──────┼────────┼─────┼─────┼────────┼─────────┼────────┼─────────┤ - │ status │ 80.00% │ │ │ │ │ │ │ │ "c" -> │ - │ │ │ │ │ │ │ │ │ │ "x" │ - │ │ │ │ │ │ │ │ │ │ (1x, │ - │ │ │ │ │ │ │ │ │ │ e.g. 3) │ - └────────┴────────┴──────┴────────┴─────┴─────┴────────┴─────────┴────────┴─────────┘ + ┏━━━━━━━┳━━━━━━━┳━━━━━━━━┳━━━━━━━┳━━━━━━━━┳━━━━━━━┳━━━━━━━━┳━━━━━━━┳━━━━━━━━┳━━━━━━━┓ + ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃  Mean ┃  Mean ┃ ┃ + ┃ Colum ┃ Match ┃  Mean ┃ Medi… ┃  Min ┃  Max ┃  Std ┃ abso… ┃ relat… ┃  Top ┃ + ┃ n  ┃  Rate ┃  diff ┃  diff ┃  diff ┃  diff ┃  diff ┃  diff ┃  diff ┃ Chan… ┃ + ┡━━━━━━━╇━━━━━━━╇━━━━━━━━╇━━━━━━━╇━━━━━━━━╇━━━━━━━╇━━━━━━━━╇━━━━━━━╇━━━━━━━━╇━━━━━━━┩ + │ price │ 60.0… │ 0.6 │ 0 │ 0 │ 2 │ 0.8944 │ 0.6 │ 0.02 │ 40.0 │ + │ │ │ │ │ │ │ │ │ │ -> │ + │ │ │ │ │ │ │ │ │ │ 42.0 │ + │ │ │ │ │ │ │ │ │ │ (1x, │ + │ │ │ │ │ │ │ │ │ │ e.g. │ + │ │ │ │ │ │ │ │ │ │ 4) │ + │ │ │ │ │ │ │ │ │ │ 20.0 │ + │ │ │ │ │ │ │ │ │ │ -> │ + │ │ │ │ │ │ │ │ │ │ 21.0 │ + │ │ │ │ │ │ │ │ │ │ (1x, │ + │ │ │ │ │ │ │ │ │ │ e.g. │ + │ │ │ │ │ │ │ │ │ │ 2) │ + ├───────┼───────┼────────┼───────┼────────┼───────┼────────┼───────┼────────┼───────┤ + │ qty  │ 80.0… │ 0.2 │ 0 │ 0 │ 1 │ 0.4472 │ 0.2 │ 0.05 │ 4 -> │ + │ │ │ │ │ │ │ │ │ │ 5 │ + │ │ │ │ │ │ │ │ │ │ (1x, │ + │ │ │ │ │ │ │ │ │ │ e.g. │ + │ │ │ │ │ │ │ │ │ │ 4) │ + ├───────┼───────┼────────┼───────┼────────┼───────┼────────┼───────┼────────┼───────┤ + │ statu │ 80.0… │ │ │ │ │ │ │ │ "c" │ + │ s  │ │ │ │ │ │ │ │ │ -> │ + │ │ │ │ │ │ │ │ │ │ "x" │ + │ │ │ │ │ │ │ │ │ │ (1x, │ + │ │ │ │ │ │ │ │ │ │ e.g. │ + │ │ │ │ │ │ │ │ │ │ 3) │ + └───────┴───────┴────────┴───────┴────────┴───────┴────────┴───────┴────────┴───────┘ diff --git a/tests/summary/fixtures/metrics_presets_many/gen/pretty_True_perfect_False_top_True_slim_True_sample_rows_False_sample_pk_False.txt b/tests/summary/fixtures/metrics_presets_many/gen/pretty_True_perfect_False_top_True_slim_True_sample_rows_False_sample_pk_False.txt index 939f003..50672d0 100644 --- a/tests/summary/fixtures/metrics_presets_many/gen/pretty_True_perfect_False_top_True_slim_True_sample_rows_False_sample_pk_False.txt +++ b/tests/summary/fixtures/metrics_presets_many/gen/pretty_True_perfect_False_top_True_slim_True_sample_rows_False_sample_pk_False.txt @@ -8,22 +8,26 @@ Columns ▔▔▔▔▔▔▔ - ┏━━━━━━━━┳━━━━━━━━┳━━━━━━┳━━━━━━━━┳━━━━━┳━━━━━┳━━━━━━━━┳━━━━━━━━━┳━━━━━━━━┳━━━━━━━━━┓ - ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃  Mean ┃  Mean ┃ ┃ - ┃ ┃  Match ┃ ┃ ┃ ┃ ┃ ┃ absolu… ┃ relat… ┃  Top ┃ - ┃ Column ┃  Rate ┃ Mean ┃ Median ┃ Min ┃ Max ┃  Std ┃ deviat… ┃ devia… ┃ Changes ┃ - ┡━━━━━━━━╇━━━━━━━━╇━━━━━━╇━━━━━━━━╇━━━━━╇━━━━━╇━━━━━━━━╇━━━━━━━━━╇━━━━━━━━╇━━━━━━━━━┩ - │ price  │ 60.00% │ 0.6 │ 0 │ 0 │ 2 │ 0.8944 │ 0.6 │ 0.02 │ 40.0 -> │ - │ │ │ │ │ │ │ │ │ │ 42.0 │ - │ │ │ │ │ │ │ │ │ │ (1x) │ - │ │ │ │ │ │ │ │ │ │ 20.0 -> │ - │ │ │ │ │ │ │ │ │ │ 21.0 │ - │ │ │ │ │ │ │ │ │ │ (1x) │ - ├────────┼────────┼──────┼────────┼─────┼─────┼────────┼─────────┼────────┼─────────┤ - │ qty  │ 80.00% │ 0.2 │ 0 │ 0 │ 1 │ 0.4472 │ 0.2 │ 0.05 │ 4 -> 5 │ - │ │ │ │ │ │ │ │ │ │ (1x) │ - ├────────┼────────┼──────┼────────┼─────┼─────┼────────┼─────────┼────────┼─────────┤ - │ status │ 80.00% │ │ │ │ │ │ │ │ "c" -> │ - │ │ │ │ │ │ │ │ │ │ "x" │ - │ │ │ │ │ │ │ │ │ │ (1x) │ - └────────┴────────┴──────┴────────┴─────┴─────┴────────┴─────────┴────────┴─────────┘ + ┏━━━━━━━┳━━━━━━━┳━━━━━━━━┳━━━━━━━┳━━━━━━━━┳━━━━━━━┳━━━━━━━━┳━━━━━━━┳━━━━━━━━┳━━━━━━━┓ + ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃  Mean ┃  Mean ┃ ┃ + ┃ Colum ┃ Match ┃  Mean ┃ Medi… ┃  Min ┃  Max ┃  Std ┃ abso… ┃ relat… ┃  Top ┃ + ┃ n  ┃  Rate ┃  diff ┃  diff ┃  diff ┃  diff ┃  diff ┃  diff ┃  diff ┃ Chan… ┃ + ┡━━━━━━━╇━━━━━━━╇━━━━━━━━╇━━━━━━━╇━━━━━━━━╇━━━━━━━╇━━━━━━━━╇━━━━━━━╇━━━━━━━━╇━━━━━━━┩ + │ price │ 60.0… │ 0.6 │ 0 │ 0 │ 2 │ 0.8944 │ 0.6 │ 0.02 │ 40.0 │ + │ │ │ │ │ │ │ │ │ │ -> │ + │ │ │ │ │ │ │ │ │ │ 42.0 │ + │ │ │ │ │ │ │ │ │ │ (1x) │ + │ │ │ │ │ │ │ │ │ │ 20.0 │ + │ │ │ │ │ │ │ │ │ │ -> │ + │ │ │ │ │ │ │ │ │ │ 21.0 │ + │ │ │ │ │ │ │ │ │ │ (1x) │ + ├───────┼───────┼────────┼───────┼────────┼───────┼────────┼───────┼────────┼───────┤ + │ qty  │ 80.0… │ 0.2 │ 0 │ 0 │ 1 │ 0.4472 │ 0.2 │ 0.05 │ 4 -> │ + │ │ │ │ │ │ │ │ │ │ 5 │ + │ │ │ │ │ │ │ │ │ │ (1x) │ + ├───────┼───────┼────────┼───────┼────────┼───────┼────────┼───────┼────────┼───────┤ + │ statu │ 80.0… │ │ │ │ │ │ │ │ "c" │ + │ s  │ │ │ │ │ │ │ │ │ -> │ + │ │ │ │ │ │ │ │ │ │ "x" │ + │ │ │ │ │ │ │ │ │ │ (1x) │ + └───────┴───────┴────────┴───────┴────────┴───────┴────────┴───────┴────────┴───────┘ diff --git a/tests/summary/fixtures/metrics_presets_many/gen/pretty_True_perfect_False_top_True_slim_True_sample_rows_True_sample_pk_True.txt b/tests/summary/fixtures/metrics_presets_many/gen/pretty_True_perfect_False_top_True_slim_True_sample_rows_True_sample_pk_True.txt index ae20da9..3ef93f2 100644 --- a/tests/summary/fixtures/metrics_presets_many/gen/pretty_True_perfect_False_top_True_slim_True_sample_rows_True_sample_pk_True.txt +++ b/tests/summary/fixtures/metrics_presets_many/gen/pretty_True_perfect_False_top_True_slim_True_sample_rows_True_sample_pk_True.txt @@ -8,26 +8,34 @@ Columns ▔▔▔▔▔▔▔ - ┏━━━━━━━━┳━━━━━━━━┳━━━━━━┳━━━━━━━━┳━━━━━┳━━━━━┳━━━━━━━━┳━━━━━━━━━┳━━━━━━━━┳━━━━━━━━━┓ - ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃  Mean ┃  Mean ┃ ┃ - ┃ ┃  Match ┃ ┃ ┃ ┃ ┃ ┃ absolu… ┃ relat… ┃  Top ┃ - ┃ Column ┃  Rate ┃ Mean ┃ Median ┃ Min ┃ Max ┃  Std ┃ deviat… ┃ devia… ┃ Changes ┃ - ┡━━━━━━━━╇━━━━━━━━╇━━━━━━╇━━━━━━━━╇━━━━━╇━━━━━╇━━━━━━━━╇━━━━━━━━━╇━━━━━━━━╇━━━━━━━━━┩ - │ price  │ 60.00% │ 0.6 │ 0 │ 0 │ 2 │ 0.8944 │ 0.6 │ 0.02 │ 40.0 -> │ - │ │ │ │ │ │ │ │ │ │ 42.0 │ - │ │ │ │ │ │ │ │ │ │ (1x, │ - │ │ │ │ │ │ │ │ │ │ e.g. 4) │ - │ │ │ │ │ │ │ │ │ │ 20.0 -> │ - │ │ │ │ │ │ │ │ │ │ 21.0 │ - │ │ │ │ │ │ │ │ │ │ (1x, │ - │ │ │ │ │ │ │ │ │ │ e.g. 2) │ - ├────────┼────────┼──────┼────────┼─────┼─────┼────────┼─────────┼────────┼─────────┤ - │ qty  │ 80.00% │ 0.2 │ 0 │ 0 │ 1 │ 0.4472 │ 0.2 │ 0.05 │ 4 -> 5 │ - │ │ │ │ │ │ │ │ │ │ (1x, │ - │ │ │ │ │ │ │ │ │ │ e.g. 4) │ - ├────────┼────────┼──────┼────────┼─────┼─────┼────────┼─────────┼────────┼─────────┤ - │ status │ 80.00% │ │ │ │ │ │ │ │ "c" -> │ - │ │ │ │ │ │ │ │ │ │ "x" │ - │ │ │ │ │ │ │ │ │ │ (1x, │ - │ │ │ │ │ │ │ │ │ │ e.g. 3) │ - └────────┴────────┴──────┴────────┴─────┴─────┴────────┴─────────┴────────┴─────────┘ + ┏━━━━━━━┳━━━━━━━┳━━━━━━━━┳━━━━━━━┳━━━━━━━━┳━━━━━━━┳━━━━━━━━┳━━━━━━━┳━━━━━━━━┳━━━━━━━┓ + ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃  Mean ┃  Mean ┃ ┃ + ┃ Colum ┃ Match ┃  Mean ┃ Medi… ┃  Min ┃  Max ┃  Std ┃ abso… ┃ relat… ┃  Top ┃ + ┃ n  ┃  Rate ┃  diff ┃  diff ┃  diff ┃  diff ┃  diff ┃  diff ┃  diff ┃ Chan… ┃ + ┡━━━━━━━╇━━━━━━━╇━━━━━━━━╇━━━━━━━╇━━━━━━━━╇━━━━━━━╇━━━━━━━━╇━━━━━━━╇━━━━━━━━╇━━━━━━━┩ + │ price │ 60.0… │ 0.6 │ 0 │ 0 │ 2 │ 0.8944 │ 0.6 │ 0.02 │ 40.0 │ + │ │ │ │ │ │ │ │ │ │ -> │ + │ │ │ │ │ │ │ │ │ │ 42.0 │ + │ │ │ │ │ │ │ │ │ │ (1x, │ + │ │ │ │ │ │ │ │ │ │ e.g. │ + │ │ │ │ │ │ │ │ │ │ 4) │ + │ │ │ │ │ │ │ │ │ │ 20.0 │ + │ │ │ │ │ │ │ │ │ │ -> │ + │ │ │ │ │ │ │ │ │ │ 21.0 │ + │ │ │ │ │ │ │ │ │ │ (1x, │ + │ │ │ │ │ │ │ │ │ │ e.g. │ + │ │ │ │ │ │ │ │ │ │ 2) │ + ├───────┼───────┼────────┼───────┼────────┼───────┼────────┼───────┼────────┼───────┤ + │ qty  │ 80.0… │ 0.2 │ 0 │ 0 │ 1 │ 0.4472 │ 0.2 │ 0.05 │ 4 -> │ + │ │ │ │ │ │ │ │ │ │ 5 │ + │ │ │ │ │ │ │ │ │ │ (1x, │ + │ │ │ │ │ │ │ │ │ │ e.g. │ + │ │ │ │ │ │ │ │ │ │ 4) │ + ├───────┼───────┼────────┼───────┼────────┼───────┼────────┼───────┼────────┼───────┤ + │ statu │ 80.0… │ │ │ │ │ │ │ │ "c" │ + │ s  │ │ │ │ │ │ │ │ │ -> │ + │ │ │ │ │ │ │ │ │ │ "x" │ + │ │ │ │ │ │ │ │ │ │ (1x, │ + │ │ │ │ │ │ │ │ │ │ e.g. │ + │ │ │ │ │ │ │ │ │ │ 3) │ + └───────┴───────┴────────┴───────┴────────┴───────┴────────┴───────┴────────┴───────┘ diff --git a/tests/summary/fixtures/metrics_presets_many/gen/pretty_True_perfect_True_top_False_slim_False_sample_rows_False_sample_pk_False.txt b/tests/summary/fixtures/metrics_presets_many/gen/pretty_True_perfect_True_top_False_slim_False_sample_rows_False_sample_pk_False.txt index 0acf593..0b6d778 100644 --- a/tests/summary/fixtures/metrics_presets_many/gen/pretty_True_perfect_True_top_False_slim_False_sample_rows_False_sample_pk_False.txt +++ b/tests/summary/fixtures/metrics_presets_many/gen/pretty_True_perfect_True_top_False_slim_False_sample_rows_False_sample_pk_False.txt @@ -20,12 +20,12 @@ Columns ▔▔▔▔▔▔▔ - ┏━━━━━━━━┳━━━━━━━━━━━━┳━━━━━━┳━━━━━━━━┳━━━━━┳━━━━━┳━━━━━━━━┳━━━━━━━━━━━━┳━━━━━━━━━━━┓ - ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃  Mean ┃  Mean ┃ - ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃  absolute ┃  relative ┃ - ┃ Column ┃ Match Rate ┃ Mean ┃ Median ┃ Min ┃ Max ┃  Std ┃  deviation ┃ deviation ┃ - ┡━━━━━━━━╇━━━━━━━━━━━━╇━━━━━━╇━━━━━━━━╇━━━━━╇━━━━━╇━━━━━━━━╇━━━━━━━━━━━━╇━━━━━━━━━━━┩ - │ price  │ 60.00% │ 0.6 │ 0 │ 0 │ 2 │ 0.8944 │ 0.6 │ 0.02 │ - │ qty  │ 80.00% │ 0.2 │ 0 │ 0 │ 1 │ 0.4472 │ 0.2 │ 0.05 │ - │ status │ 80.00% │ │ │ │ │ │ │ │ - └────────┴────────────┴──────┴────────┴─────┴─────┴────────┴────────────┴───────────┘ + ┏━━━━━━━━┳━━━━━━━━┳━━━━━━━━┳━━━━━━━━┳━━━━━━━━━┳━━━━━━━━┳━━━━━━━━━┳━━━━━━━━┳━━━━━━━━━┓ + ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃  Mean ┃  Mean ┃ + ┃ ┃  Match ┃  Mean ┃ Median ┃  Min ┃  Max ┃  Std ┃ absol… ┃ relati… ┃ + ┃ Column ┃  Rate ┃  diff ┃  diff ┃  diff ┃  diff ┃  diff ┃  diff ┃  diff ┃ + ┡━━━━━━━━╇━━━━━━━━╇━━━━━━━━╇━━━━━━━━╇━━━━━━━━━╇━━━━━━━━╇━━━━━━━━━╇━━━━━━━━╇━━━━━━━━━┩ + │ price  │ 60.00% │ 0.6 │ 0 │ 0 │ 2 │ 0.8944 │ 0.6 │ 0.02 │ + │ qty  │ 80.00% │ 0.2 │ 0 │ 0 │ 1 │ 0.4472 │ 0.2 │ 0.05 │ + │ status │ 80.00% │ │ │ │ │ │ │ │ + └────────┴────────┴────────┴────────┴─────────┴────────┴─────────┴────────┴─────────┘ diff --git a/tests/summary/fixtures/metrics_presets_many/gen/pretty_True_perfect_True_top_False_slim_False_sample_rows_True_sample_pk_False.txt b/tests/summary/fixtures/metrics_presets_many/gen/pretty_True_perfect_True_top_False_slim_False_sample_rows_True_sample_pk_False.txt index 0acf593..0b6d778 100644 --- a/tests/summary/fixtures/metrics_presets_many/gen/pretty_True_perfect_True_top_False_slim_False_sample_rows_True_sample_pk_False.txt +++ b/tests/summary/fixtures/metrics_presets_many/gen/pretty_True_perfect_True_top_False_slim_False_sample_rows_True_sample_pk_False.txt @@ -20,12 +20,12 @@ Columns ▔▔▔▔▔▔▔ - ┏━━━━━━━━┳━━━━━━━━━━━━┳━━━━━━┳━━━━━━━━┳━━━━━┳━━━━━┳━━━━━━━━┳━━━━━━━━━━━━┳━━━━━━━━━━━┓ - ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃  Mean ┃  Mean ┃ - ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃  absolute ┃  relative ┃ - ┃ Column ┃ Match Rate ┃ Mean ┃ Median ┃ Min ┃ Max ┃  Std ┃  deviation ┃ deviation ┃ - ┡━━━━━━━━╇━━━━━━━━━━━━╇━━━━━━╇━━━━━━━━╇━━━━━╇━━━━━╇━━━━━━━━╇━━━━━━━━━━━━╇━━━━━━━━━━━┩ - │ price  │ 60.00% │ 0.6 │ 0 │ 0 │ 2 │ 0.8944 │ 0.6 │ 0.02 │ - │ qty  │ 80.00% │ 0.2 │ 0 │ 0 │ 1 │ 0.4472 │ 0.2 │ 0.05 │ - │ status │ 80.00% │ │ │ │ │ │ │ │ - └────────┴────────────┴──────┴────────┴─────┴─────┴────────┴────────────┴───────────┘ + ┏━━━━━━━━┳━━━━━━━━┳━━━━━━━━┳━━━━━━━━┳━━━━━━━━━┳━━━━━━━━┳━━━━━━━━━┳━━━━━━━━┳━━━━━━━━━┓ + ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃  Mean ┃  Mean ┃ + ┃ ┃  Match ┃  Mean ┃ Median ┃  Min ┃  Max ┃  Std ┃ absol… ┃ relati… ┃ + ┃ Column ┃  Rate ┃  diff ┃  diff ┃  diff ┃  diff ┃  diff ┃  diff ┃  diff ┃ + ┡━━━━━━━━╇━━━━━━━━╇━━━━━━━━╇━━━━━━━━╇━━━━━━━━━╇━━━━━━━━╇━━━━━━━━━╇━━━━━━━━╇━━━━━━━━━┩ + │ price  │ 60.00% │ 0.6 │ 0 │ 0 │ 2 │ 0.8944 │ 0.6 │ 0.02 │ + │ qty  │ 80.00% │ 0.2 │ 0 │ 0 │ 1 │ 0.4472 │ 0.2 │ 0.05 │ + │ status │ 80.00% │ │ │ │ │ │ │ │ + └────────┴────────┴────────┴────────┴─────────┴────────┴─────────┴────────┴─────────┘ diff --git a/tests/summary/fixtures/metrics_presets_many/gen/pretty_True_perfect_True_top_False_slim_True_sample_rows_False_sample_pk_False.txt b/tests/summary/fixtures/metrics_presets_many/gen/pretty_True_perfect_True_top_False_slim_True_sample_rows_False_sample_pk_False.txt index 5510545..50e2b88 100644 --- a/tests/summary/fixtures/metrics_presets_many/gen/pretty_True_perfect_True_top_False_slim_True_sample_rows_False_sample_pk_False.txt +++ b/tests/summary/fixtures/metrics_presets_many/gen/pretty_True_perfect_True_top_False_slim_True_sample_rows_False_sample_pk_False.txt @@ -8,12 +8,12 @@ Columns ▔▔▔▔▔▔▔ - ┏━━━━━━━━┳━━━━━━━━━━━━┳━━━━━━┳━━━━━━━━┳━━━━━┳━━━━━┳━━━━━━━━┳━━━━━━━━━━━━┳━━━━━━━━━━━┓ - ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃  Mean ┃  Mean ┃ - ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃  absolute ┃  relative ┃ - ┃ Column ┃ Match Rate ┃ Mean ┃ Median ┃ Min ┃ Max ┃  Std ┃  deviation ┃ deviation ┃ - ┡━━━━━━━━╇━━━━━━━━━━━━╇━━━━━━╇━━━━━━━━╇━━━━━╇━━━━━╇━━━━━━━━╇━━━━━━━━━━━━╇━━━━━━━━━━━┩ - │ price  │ 60.00% │ 0.6 │ 0 │ 0 │ 2 │ 0.8944 │ 0.6 │ 0.02 │ - │ qty  │ 80.00% │ 0.2 │ 0 │ 0 │ 1 │ 0.4472 │ 0.2 │ 0.05 │ - │ status │ 80.00% │ │ │ │ │ │ │ │ - └────────┴────────────┴──────┴────────┴─────┴─────┴────────┴────────────┴───────────┘ + ┏━━━━━━━━┳━━━━━━━━┳━━━━━━━━┳━━━━━━━━┳━━━━━━━━━┳━━━━━━━━┳━━━━━━━━━┳━━━━━━━━┳━━━━━━━━━┓ + ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃  Mean ┃  Mean ┃ + ┃ ┃  Match ┃  Mean ┃ Median ┃  Min ┃  Max ┃  Std ┃ absol… ┃ relati… ┃ + ┃ Column ┃  Rate ┃  diff ┃  diff ┃  diff ┃  diff ┃  diff ┃  diff ┃  diff ┃ + ┡━━━━━━━━╇━━━━━━━━╇━━━━━━━━╇━━━━━━━━╇━━━━━━━━━╇━━━━━━━━╇━━━━━━━━━╇━━━━━━━━╇━━━━━━━━━┩ + │ price  │ 60.00% │ 0.6 │ 0 │ 0 │ 2 │ 0.8944 │ 0.6 │ 0.02 │ + │ qty  │ 80.00% │ 0.2 │ 0 │ 0 │ 1 │ 0.4472 │ 0.2 │ 0.05 │ + │ status │ 80.00% │ │ │ │ │ │ │ │ + └────────┴────────┴────────┴────────┴─────────┴────────┴─────────┴────────┴─────────┘ diff --git a/tests/summary/fixtures/metrics_presets_many/gen/pretty_True_perfect_True_top_False_slim_True_sample_rows_True_sample_pk_False.txt b/tests/summary/fixtures/metrics_presets_many/gen/pretty_True_perfect_True_top_False_slim_True_sample_rows_True_sample_pk_False.txt index 5510545..50e2b88 100644 --- a/tests/summary/fixtures/metrics_presets_many/gen/pretty_True_perfect_True_top_False_slim_True_sample_rows_True_sample_pk_False.txt +++ b/tests/summary/fixtures/metrics_presets_many/gen/pretty_True_perfect_True_top_False_slim_True_sample_rows_True_sample_pk_False.txt @@ -8,12 +8,12 @@ Columns ▔▔▔▔▔▔▔ - ┏━━━━━━━━┳━━━━━━━━━━━━┳━━━━━━┳━━━━━━━━┳━━━━━┳━━━━━┳━━━━━━━━┳━━━━━━━━━━━━┳━━━━━━━━━━━┓ - ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃  Mean ┃  Mean ┃ - ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃  absolute ┃  relative ┃ - ┃ Column ┃ Match Rate ┃ Mean ┃ Median ┃ Min ┃ Max ┃  Std ┃  deviation ┃ deviation ┃ - ┡━━━━━━━━╇━━━━━━━━━━━━╇━━━━━━╇━━━━━━━━╇━━━━━╇━━━━━╇━━━━━━━━╇━━━━━━━━━━━━╇━━━━━━━━━━━┩ - │ price  │ 60.00% │ 0.6 │ 0 │ 0 │ 2 │ 0.8944 │ 0.6 │ 0.02 │ - │ qty  │ 80.00% │ 0.2 │ 0 │ 0 │ 1 │ 0.4472 │ 0.2 │ 0.05 │ - │ status │ 80.00% │ │ │ │ │ │ │ │ - └────────┴────────────┴──────┴────────┴─────┴─────┴────────┴────────────┴───────────┘ + ┏━━━━━━━━┳━━━━━━━━┳━━━━━━━━┳━━━━━━━━┳━━━━━━━━━┳━━━━━━━━┳━━━━━━━━━┳━━━━━━━━┳━━━━━━━━━┓ + ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃  Mean ┃  Mean ┃ + ┃ ┃  Match ┃  Mean ┃ Median ┃  Min ┃  Max ┃  Std ┃ absol… ┃ relati… ┃ + ┃ Column ┃  Rate ┃  diff ┃  diff ┃  diff ┃  diff ┃  diff ┃  diff ┃  diff ┃ + ┡━━━━━━━━╇━━━━━━━━╇━━━━━━━━╇━━━━━━━━╇━━━━━━━━━╇━━━━━━━━╇━━━━━━━━━╇━━━━━━━━╇━━━━━━━━━┩ + │ price  │ 60.00% │ 0.6 │ 0 │ 0 │ 2 │ 0.8944 │ 0.6 │ 0.02 │ + │ qty  │ 80.00% │ 0.2 │ 0 │ 0 │ 1 │ 0.4472 │ 0.2 │ 0.05 │ + │ status │ 80.00% │ │ │ │ │ │ │ │ + └────────┴────────┴────────┴────────┴─────────┴────────┴─────────┴────────┴─────────┘ diff --git a/tests/summary/fixtures/metrics_presets_many/gen/pretty_True_perfect_True_top_True_slim_False_sample_rows_False_sample_pk_False.txt b/tests/summary/fixtures/metrics_presets_many/gen/pretty_True_perfect_True_top_True_slim_False_sample_rows_False_sample_pk_False.txt index ca13fa5..cbf10eb 100644 --- a/tests/summary/fixtures/metrics_presets_many/gen/pretty_True_perfect_True_top_True_slim_False_sample_rows_False_sample_pk_False.txt +++ b/tests/summary/fixtures/metrics_presets_many/gen/pretty_True_perfect_True_top_True_slim_False_sample_rows_False_sample_pk_False.txt @@ -20,22 +20,26 @@ Columns ▔▔▔▔▔▔▔ - ┏━━━━━━━━┳━━━━━━━━┳━━━━━━┳━━━━━━━━┳━━━━━┳━━━━━┳━━━━━━━━┳━━━━━━━━━┳━━━━━━━━┳━━━━━━━━━┓ - ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃  Mean ┃  Mean ┃ ┃ - ┃ ┃  Match ┃ ┃ ┃ ┃ ┃ ┃ absolu… ┃ relat… ┃  Top ┃ - ┃ Column ┃  Rate ┃ Mean ┃ Median ┃ Min ┃ Max ┃  Std ┃ deviat… ┃ devia… ┃ Changes ┃ - ┡━━━━━━━━╇━━━━━━━━╇━━━━━━╇━━━━━━━━╇━━━━━╇━━━━━╇━━━━━━━━╇━━━━━━━━━╇━━━━━━━━╇━━━━━━━━━┩ - │ price  │ 60.00% │ 0.6 │ 0 │ 0 │ 2 │ 0.8944 │ 0.6 │ 0.02 │ 40.0 -> │ - │ │ │ │ │ │ │ │ │ │ 42.0 │ - │ │ │ │ │ │ │ │ │ │ (1x) │ - │ │ │ │ │ │ │ │ │ │ 20.0 -> │ - │ │ │ │ │ │ │ │ │ │ 21.0 │ - │ │ │ │ │ │ │ │ │ │ (1x) │ - ├────────┼────────┼──────┼────────┼─────┼─────┼────────┼─────────┼────────┼─────────┤ - │ qty  │ 80.00% │ 0.2 │ 0 │ 0 │ 1 │ 0.4472 │ 0.2 │ 0.05 │ 4 -> 5 │ - │ │ │ │ │ │ │ │ │ │ (1x) │ - ├────────┼────────┼──────┼────────┼─────┼─────┼────────┼─────────┼────────┼─────────┤ - │ status │ 80.00% │ │ │ │ │ │ │ │ "c" -> │ - │ │ │ │ │ │ │ │ │ │ "x" │ - │ │ │ │ │ │ │ │ │ │ (1x) │ - └────────┴────────┴──────┴────────┴─────┴─────┴────────┴─────────┴────────┴─────────┘ + ┏━━━━━━━┳━━━━━━━┳━━━━━━━━┳━━━━━━━┳━━━━━━━━┳━━━━━━━┳━━━━━━━━┳━━━━━━━┳━━━━━━━━┳━━━━━━━┓ + ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃  Mean ┃  Mean ┃ ┃ + ┃ Colum ┃ Match ┃  Mean ┃ Medi… ┃  Min ┃  Max ┃  Std ┃ abso… ┃ relat… ┃  Top ┃ + ┃ n  ┃  Rate ┃  diff ┃  diff ┃  diff ┃  diff ┃  diff ┃  diff ┃  diff ┃ Chan… ┃ + ┡━━━━━━━╇━━━━━━━╇━━━━━━━━╇━━━━━━━╇━━━━━━━━╇━━━━━━━╇━━━━━━━━╇━━━━━━━╇━━━━━━━━╇━━━━━━━┩ + │ price │ 60.0… │ 0.6 │ 0 │ 0 │ 2 │ 0.8944 │ 0.6 │ 0.02 │ 40.0 │ + │ │ │ │ │ │ │ │ │ │ -> │ + │ │ │ │ │ │ │ │ │ │ 42.0 │ + │ │ │ │ │ │ │ │ │ │ (1x) │ + │ │ │ │ │ │ │ │ │ │ 20.0 │ + │ │ │ │ │ │ │ │ │ │ -> │ + │ │ │ │ │ │ │ │ │ │ 21.0 │ + │ │ │ │ │ │ │ │ │ │ (1x) │ + ├───────┼───────┼────────┼───────┼────────┼───────┼────────┼───────┼────────┼───────┤ + │ qty  │ 80.0… │ 0.2 │ 0 │ 0 │ 1 │ 0.4472 │ 0.2 │ 0.05 │ 4 -> │ + │ │ │ │ │ │ │ │ │ │ 5 │ + │ │ │ │ │ │ │ │ │ │ (1x) │ + ├───────┼───────┼────────┼───────┼────────┼───────┼────────┼───────┼────────┼───────┤ + │ statu │ 80.0… │ │ │ │ │ │ │ │ "c" │ + │ s  │ │ │ │ │ │ │ │ │ -> │ + │ │ │ │ │ │ │ │ │ │ "x" │ + │ │ │ │ │ │ │ │ │ │ (1x) │ + └───────┴───────┴────────┴───────┴────────┴───────┴────────┴───────┴────────┴───────┘ diff --git a/tests/summary/fixtures/metrics_presets_many/gen/pretty_True_perfect_True_top_True_slim_False_sample_rows_True_sample_pk_True.txt b/tests/summary/fixtures/metrics_presets_many/gen/pretty_True_perfect_True_top_True_slim_False_sample_rows_True_sample_pk_True.txt index f07a09b..89fff5a 100644 --- a/tests/summary/fixtures/metrics_presets_many/gen/pretty_True_perfect_True_top_True_slim_False_sample_rows_True_sample_pk_True.txt +++ b/tests/summary/fixtures/metrics_presets_many/gen/pretty_True_perfect_True_top_True_slim_False_sample_rows_True_sample_pk_True.txt @@ -20,26 +20,34 @@ Columns ▔▔▔▔▔▔▔ - ┏━━━━━━━━┳━━━━━━━━┳━━━━━━┳━━━━━━━━┳━━━━━┳━━━━━┳━━━━━━━━┳━━━━━━━━━┳━━━━━━━━┳━━━━━━━━━┓ - ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃  Mean ┃  Mean ┃ ┃ - ┃ ┃  Match ┃ ┃ ┃ ┃ ┃ ┃ absolu… ┃ relat… ┃  Top ┃ - ┃ Column ┃  Rate ┃ Mean ┃ Median ┃ Min ┃ Max ┃  Std ┃ deviat… ┃ devia… ┃ Changes ┃ - ┡━━━━━━━━╇━━━━━━━━╇━━━━━━╇━━━━━━━━╇━━━━━╇━━━━━╇━━━━━━━━╇━━━━━━━━━╇━━━━━━━━╇━━━━━━━━━┩ - │ price  │ 60.00% │ 0.6 │ 0 │ 0 │ 2 │ 0.8944 │ 0.6 │ 0.02 │ 40.0 -> │ - │ │ │ │ │ │ │ │ │ │ 42.0 │ - │ │ │ │ │ │ │ │ │ │ (1x, │ - │ │ │ │ │ │ │ │ │ │ e.g. 4) │ - │ │ │ │ │ │ │ │ │ │ 20.0 -> │ - │ │ │ │ │ │ │ │ │ │ 21.0 │ - │ │ │ │ │ │ │ │ │ │ (1x, │ - │ │ │ │ │ │ │ │ │ │ e.g. 2) │ - ├────────┼────────┼──────┼────────┼─────┼─────┼────────┼─────────┼────────┼─────────┤ - │ qty  │ 80.00% │ 0.2 │ 0 │ 0 │ 1 │ 0.4472 │ 0.2 │ 0.05 │ 4 -> 5 │ - │ │ │ │ │ │ │ │ │ │ (1x, │ - │ │ │ │ │ │ │ │ │ │ e.g. 4) │ - ├────────┼────────┼──────┼────────┼─────┼─────┼────────┼─────────┼────────┼─────────┤ - │ status │ 80.00% │ │ │ │ │ │ │ │ "c" -> │ - │ │ │ │ │ │ │ │ │ │ "x" │ - │ │ │ │ │ │ │ │ │ │ (1x, │ - │ │ │ │ │ │ │ │ │ │ e.g. 3) │ - └────────┴────────┴──────┴────────┴─────┴─────┴────────┴─────────┴────────┴─────────┘ + ┏━━━━━━━┳━━━━━━━┳━━━━━━━━┳━━━━━━━┳━━━━━━━━┳━━━━━━━┳━━━━━━━━┳━━━━━━━┳━━━━━━━━┳━━━━━━━┓ + ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃  Mean ┃  Mean ┃ ┃ + ┃ Colum ┃ Match ┃  Mean ┃ Medi… ┃  Min ┃  Max ┃  Std ┃ abso… ┃ relat… ┃  Top ┃ + ┃ n  ┃  Rate ┃  diff ┃  diff ┃  diff ┃  diff ┃  diff ┃  diff ┃  diff ┃ Chan… ┃ + ┡━━━━━━━╇━━━━━━━╇━━━━━━━━╇━━━━━━━╇━━━━━━━━╇━━━━━━━╇━━━━━━━━╇━━━━━━━╇━━━━━━━━╇━━━━━━━┩ + │ price │ 60.0… │ 0.6 │ 0 │ 0 │ 2 │ 0.8944 │ 0.6 │ 0.02 │ 40.0 │ + │ │ │ │ │ │ │ │ │ │ -> │ + │ │ │ │ │ │ │ │ │ │ 42.0 │ + │ │ │ │ │ │ │ │ │ │ (1x, │ + │ │ │ │ │ │ │ │ │ │ e.g. │ + │ │ │ │ │ │ │ │ │ │ 4) │ + │ │ │ │ │ │ │ │ │ │ 20.0 │ + │ │ │ │ │ │ │ │ │ │ -> │ + │ │ │ │ │ │ │ │ │ │ 21.0 │ + │ │ │ │ │ │ │ │ │ │ (1x, │ + │ │ │ │ │ │ │ │ │ │ e.g. │ + │ │ │ │ │ │ │ │ │ │ 2) │ + ├───────┼───────┼────────┼───────┼────────┼───────┼────────┼───────┼────────┼───────┤ + │ qty  │ 80.0… │ 0.2 │ 0 │ 0 │ 1 │ 0.4472 │ 0.2 │ 0.05 │ 4 -> │ + │ │ │ │ │ │ │ │ │ │ 5 │ + │ │ │ │ │ │ │ │ │ │ (1x, │ + │ │ │ │ │ │ │ │ │ │ e.g. │ + │ │ │ │ │ │ │ │ │ │ 4) │ + ├───────┼───────┼────────┼───────┼────────┼───────┼────────┼───────┼────────┼───────┤ + │ statu │ 80.0… │ │ │ │ │ │ │ │ "c" │ + │ s  │ │ │ │ │ │ │ │ │ -> │ + │ │ │ │ │ │ │ │ │ │ "x" │ + │ │ │ │ │ │ │ │ │ │ (1x, │ + │ │ │ │ │ │ │ │ │ │ e.g. │ + │ │ │ │ │ │ │ │ │ │ 3) │ + └───────┴───────┴────────┴───────┴────────┴───────┴────────┴───────┴────────┴───────┘ diff --git a/tests/summary/fixtures/metrics_presets_many/gen/pretty_True_perfect_True_top_True_slim_True_sample_rows_False_sample_pk_False.txt b/tests/summary/fixtures/metrics_presets_many/gen/pretty_True_perfect_True_top_True_slim_True_sample_rows_False_sample_pk_False.txt index 939f003..50672d0 100644 --- a/tests/summary/fixtures/metrics_presets_many/gen/pretty_True_perfect_True_top_True_slim_True_sample_rows_False_sample_pk_False.txt +++ b/tests/summary/fixtures/metrics_presets_many/gen/pretty_True_perfect_True_top_True_slim_True_sample_rows_False_sample_pk_False.txt @@ -8,22 +8,26 @@ Columns ▔▔▔▔▔▔▔ - ┏━━━━━━━━┳━━━━━━━━┳━━━━━━┳━━━━━━━━┳━━━━━┳━━━━━┳━━━━━━━━┳━━━━━━━━━┳━━━━━━━━┳━━━━━━━━━┓ - ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃  Mean ┃  Mean ┃ ┃ - ┃ ┃  Match ┃ ┃ ┃ ┃ ┃ ┃ absolu… ┃ relat… ┃  Top ┃ - ┃ Column ┃  Rate ┃ Mean ┃ Median ┃ Min ┃ Max ┃  Std ┃ deviat… ┃ devia… ┃ Changes ┃ - ┡━━━━━━━━╇━━━━━━━━╇━━━━━━╇━━━━━━━━╇━━━━━╇━━━━━╇━━━━━━━━╇━━━━━━━━━╇━━━━━━━━╇━━━━━━━━━┩ - │ price  │ 60.00% │ 0.6 │ 0 │ 0 │ 2 │ 0.8944 │ 0.6 │ 0.02 │ 40.0 -> │ - │ │ │ │ │ │ │ │ │ │ 42.0 │ - │ │ │ │ │ │ │ │ │ │ (1x) │ - │ │ │ │ │ │ │ │ │ │ 20.0 -> │ - │ │ │ │ │ │ │ │ │ │ 21.0 │ - │ │ │ │ │ │ │ │ │ │ (1x) │ - ├────────┼────────┼──────┼────────┼─────┼─────┼────────┼─────────┼────────┼─────────┤ - │ qty  │ 80.00% │ 0.2 │ 0 │ 0 │ 1 │ 0.4472 │ 0.2 │ 0.05 │ 4 -> 5 │ - │ │ │ │ │ │ │ │ │ │ (1x) │ - ├────────┼────────┼──────┼────────┼─────┼─────┼────────┼─────────┼────────┼─────────┤ - │ status │ 80.00% │ │ │ │ │ │ │ │ "c" -> │ - │ │ │ │ │ │ │ │ │ │ "x" │ - │ │ │ │ │ │ │ │ │ │ (1x) │ - └────────┴────────┴──────┴────────┴─────┴─────┴────────┴─────────┴────────┴─────────┘ + ┏━━━━━━━┳━━━━━━━┳━━━━━━━━┳━━━━━━━┳━━━━━━━━┳━━━━━━━┳━━━━━━━━┳━━━━━━━┳━━━━━━━━┳━━━━━━━┓ + ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃  Mean ┃  Mean ┃ ┃ + ┃ Colum ┃ Match ┃  Mean ┃ Medi… ┃  Min ┃  Max ┃  Std ┃ abso… ┃ relat… ┃  Top ┃ + ┃ n  ┃  Rate ┃  diff ┃  diff ┃  diff ┃  diff ┃  diff ┃  diff ┃  diff ┃ Chan… ┃ + ┡━━━━━━━╇━━━━━━━╇━━━━━━━━╇━━━━━━━╇━━━━━━━━╇━━━━━━━╇━━━━━━━━╇━━━━━━━╇━━━━━━━━╇━━━━━━━┩ + │ price │ 60.0… │ 0.6 │ 0 │ 0 │ 2 │ 0.8944 │ 0.6 │ 0.02 │ 40.0 │ + │ │ │ │ │ │ │ │ │ │ -> │ + │ │ │ │ │ │ │ │ │ │ 42.0 │ + │ │ │ │ │ │ │ │ │ │ (1x) │ + │ │ │ │ │ │ │ │ │ │ 20.0 │ + │ │ │ │ │ │ │ │ │ │ -> │ + │ │ │ │ │ │ │ │ │ │ 21.0 │ + │ │ │ │ │ │ │ │ │ │ (1x) │ + ├───────┼───────┼────────┼───────┼────────┼───────┼────────┼───────┼────────┼───────┤ + │ qty  │ 80.0… │ 0.2 │ 0 │ 0 │ 1 │ 0.4472 │ 0.2 │ 0.05 │ 4 -> │ + │ │ │ │ │ │ │ │ │ │ 5 │ + │ │ │ │ │ │ │ │ │ │ (1x) │ + ├───────┼───────┼────────┼───────┼────────┼───────┼────────┼───────┼────────┼───────┤ + │ statu │ 80.0… │ │ │ │ │ │ │ │ "c" │ + │ s  │ │ │ │ │ │ │ │ │ -> │ + │ │ │ │ │ │ │ │ │ │ "x" │ + │ │ │ │ │ │ │ │ │ │ (1x) │ + └───────┴───────┴────────┴───────┴────────┴───────┴────────┴───────┴────────┴───────┘ diff --git a/tests/summary/fixtures/metrics_presets_many/gen/pretty_True_perfect_True_top_True_slim_True_sample_rows_True_sample_pk_True.txt b/tests/summary/fixtures/metrics_presets_many/gen/pretty_True_perfect_True_top_True_slim_True_sample_rows_True_sample_pk_True.txt index ae20da9..3ef93f2 100644 --- a/tests/summary/fixtures/metrics_presets_many/gen/pretty_True_perfect_True_top_True_slim_True_sample_rows_True_sample_pk_True.txt +++ b/tests/summary/fixtures/metrics_presets_many/gen/pretty_True_perfect_True_top_True_slim_True_sample_rows_True_sample_pk_True.txt @@ -8,26 +8,34 @@ Columns ▔▔▔▔▔▔▔ - ┏━━━━━━━━┳━━━━━━━━┳━━━━━━┳━━━━━━━━┳━━━━━┳━━━━━┳━━━━━━━━┳━━━━━━━━━┳━━━━━━━━┳━━━━━━━━━┓ - ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃  Mean ┃  Mean ┃ ┃ - ┃ ┃  Match ┃ ┃ ┃ ┃ ┃ ┃ absolu… ┃ relat… ┃  Top ┃ - ┃ Column ┃  Rate ┃ Mean ┃ Median ┃ Min ┃ Max ┃  Std ┃ deviat… ┃ devia… ┃ Changes ┃ - ┡━━━━━━━━╇━━━━━━━━╇━━━━━━╇━━━━━━━━╇━━━━━╇━━━━━╇━━━━━━━━╇━━━━━━━━━╇━━━━━━━━╇━━━━━━━━━┩ - │ price  │ 60.00% │ 0.6 │ 0 │ 0 │ 2 │ 0.8944 │ 0.6 │ 0.02 │ 40.0 -> │ - │ │ │ │ │ │ │ │ │ │ 42.0 │ - │ │ │ │ │ │ │ │ │ │ (1x, │ - │ │ │ │ │ │ │ │ │ │ e.g. 4) │ - │ │ │ │ │ │ │ │ │ │ 20.0 -> │ - │ │ │ │ │ │ │ │ │ │ 21.0 │ - │ │ │ │ │ │ │ │ │ │ (1x, │ - │ │ │ │ │ │ │ │ │ │ e.g. 2) │ - ├────────┼────────┼──────┼────────┼─────┼─────┼────────┼─────────┼────────┼─────────┤ - │ qty  │ 80.00% │ 0.2 │ 0 │ 0 │ 1 │ 0.4472 │ 0.2 │ 0.05 │ 4 -> 5 │ - │ │ │ │ │ │ │ │ │ │ (1x, │ - │ │ │ │ │ │ │ │ │ │ e.g. 4) │ - ├────────┼────────┼──────┼────────┼─────┼─────┼────────┼─────────┼────────┼─────────┤ - │ status │ 80.00% │ │ │ │ │ │ │ │ "c" -> │ - │ │ │ │ │ │ │ │ │ │ "x" │ - │ │ │ │ │ │ │ │ │ │ (1x, │ - │ │ │ │ │ │ │ │ │ │ e.g. 3) │ - └────────┴────────┴──────┴────────┴─────┴─────┴────────┴─────────┴────────┴─────────┘ + ┏━━━━━━━┳━━━━━━━┳━━━━━━━━┳━━━━━━━┳━━━━━━━━┳━━━━━━━┳━━━━━━━━┳━━━━━━━┳━━━━━━━━┳━━━━━━━┓ + ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┃  Mean ┃  Mean ┃ ┃ + ┃ Colum ┃ Match ┃  Mean ┃ Medi… ┃  Min ┃  Max ┃  Std ┃ abso… ┃ relat… ┃  Top ┃ + ┃ n  ┃  Rate ┃  diff ┃  diff ┃  diff ┃  diff ┃  diff ┃  diff ┃  diff ┃ Chan… ┃ + ┡━━━━━━━╇━━━━━━━╇━━━━━━━━╇━━━━━━━╇━━━━━━━━╇━━━━━━━╇━━━━━━━━╇━━━━━━━╇━━━━━━━━╇━━━━━━━┩ + │ price │ 60.0… │ 0.6 │ 0 │ 0 │ 2 │ 0.8944 │ 0.6 │ 0.02 │ 40.0 │ + │ │ │ │ │ │ │ │ │ │ -> │ + │ │ │ │ │ │ │ │ │ │ 42.0 │ + │ │ │ │ │ │ │ │ │ │ (1x, │ + │ │ │ │ │ │ │ │ │ │ e.g. │ + │ │ │ │ │ │ │ │ │ │ 4) │ + │ │ │ │ │ │ │ │ │ │ 20.0 │ + │ │ │ │ │ │ │ │ │ │ -> │ + │ │ │ │ │ │ │ │ │ │ 21.0 │ + │ │ │ │ │ │ │ │ │ │ (1x, │ + │ │ │ │ │ │ │ │ │ │ e.g. │ + │ │ │ │ │ │ │ │ │ │ 2) │ + ├───────┼───────┼────────┼───────┼────────┼───────┼────────┼───────┼────────┼───────┤ + │ qty  │ 80.0… │ 0.2 │ 0 │ 0 │ 1 │ 0.4472 │ 0.2 │ 0.05 │ 4 -> │ + │ │ │ │ │ │ │ │ │ │ 5 │ + │ │ │ │ │ │ │ │ │ │ (1x, │ + │ │ │ │ │ │ │ │ │ │ e.g. │ + │ │ │ │ │ │ │ │ │ │ 4) │ + ├───────┼───────┼────────┼───────┼────────┼───────┼────────┼───────┼────────┼───────┤ + │ statu │ 80.0… │ │ │ │ │ │ │ │ "c" │ + │ s  │ │ │ │ │ │ │ │ │ -> │ + │ │ │ │ │ │ │ │ │ │ "x" │ + │ │ │ │ │ │ │ │ │ │ (1x, │ + │ │ │ │ │ │ │ │ │ │ e.g. │ + │ │ │ │ │ │ │ │ │ │ 3) │ + └───────┴───────┴────────┴───────┴────────┴───────┴────────┴───────┴────────┴───────┘ diff --git a/tests/summary/fixtures/metrics_presets_many/test_metrics_presets_many.py b/tests/summary/fixtures/metrics_presets_many/test_metrics_presets_many.py index ede52cc..45e549c 100644 --- a/tests/summary/fixtures/metrics_presets_many/test_metrics_presets_many.py +++ b/tests/summary/fixtures/metrics_presets_many/test_metrics_presets_many.py @@ -29,13 +29,13 @@ def test_generate() -> None: comp = compare_frames(left, right, primary_key=["id"]) generate_summaries( comp, - metrics={ - "Mean": metrics.mean, - "Median": metrics.median, - "Min": metrics.min, - "Max": metrics.max, - "Std": metrics.std, - "Mean absolute deviation": metrics.mean_absolute_deviation, - "Mean relative deviation": metrics.mean_relative_deviation, + change_metrics={ + "Mean diff": metrics.change.mean, + "Median diff": metrics.change.median, + "Min diff": metrics.change.min, + "Max diff": metrics.change.max, + "Std diff": metrics.change.std, + "Mean absolute diff": metrics.change.mean_absolute_deviation, + "Mean relative diff": metrics.change.mean_relative_deviation, }, ) diff --git a/tests/summary/test_summary.py b/tests/summary/test_summary.py index 6e43832..51fb047 100644 --- a/tests/summary/test_summary.py +++ b/tests/summary/test_summary.py @@ -13,6 +13,8 @@ from diffly import compare_frames, metrics from diffly.comparison import DataFrameComparison +from diffly.metrics.change import ChangeMetric, ChangeMetricFn +from diffly.metrics.data import DEFAULT_DATA_METRICS, DataMetric, DataMetricFn from diffly.summary import _format_fraction_as_percentage, to_json_safe @@ -181,7 +183,19 @@ def test_summary_data_parametrized( comp = _make_comparison() top_k = 3 if show_top_column_changes else 0 hidden_columns = ["value"] if hide_value else None - metrics_arg = {"Mean": metrics.mean, "Max": metrics.max} if with_metrics else None + change_metrics_arg: dict[str, ChangeMetricFn | ChangeMetric] | None = ( + {"Mean diff": metrics.change.mean, "Max diff": metrics.change.max} + if with_metrics + else None + ) + data_metrics_arg: dict[str, DataMetricFn | DataMetric] | None = ( + { + "Null%": DEFAULT_DATA_METRICS["Null%"], + "Data max": DataMetric(fn=lambda col: col.max()), + } + if with_metrics + else None + ) summary = comp.summary( show_perfect_column_matches=show_perfect_column_matches, top_k_column_changes=top_k, @@ -189,7 +203,8 @@ def test_summary_data_parametrized( show_sample_primary_key_per_change=sample_pk, slim=slim, hidden_columns=hidden_columns, - metrics=metrics_arg, + data_metrics=data_metrics_arg, + change_metrics=change_metrics_arg, ) result = json.loads(summary.to_json()) @@ -228,7 +243,9 @@ def test_summary_data_parametrized( else None ), # Joined rows (id=1,2,3): value deltas = [0, 5, 0]. - "metrics": {"Mean": pytest.approx(5 / 3), "Max": 5.0} if with_metrics else None, + "change_metrics": {"Mean diff": pytest.approx(5 / 3), "Max diff": 5.0} + if with_metrics + else None, } expected_columns = [] if show_perfect_column_matches: @@ -238,11 +255,40 @@ def test_summary_data_parametrized( "match_rate": 1.0, "n_total_changes": 0, "changes": None, - "metrics": None, + "change_metrics": None, } ) expected_columns.append(value_col) + # Data metrics land in the separate `data_inspection` section. Data metrics look at + # the full column, so "Data max" reflects the unjoined rows id=4 (left, 40.0) and id=5 + # (right, 50.0) rather than the joined-rows max of 30.0. Hidden columns are skipped + # entirely, so hiding `value` drops it from the data inspection section too. + expected_data_inspection: list[dict] | None = None + if with_metrics: + expected_data_inspection = [ + { + "name": "status", + "data_metrics": { + "Null%": {"left": pytest.approx(0.0), "right": pytest.approx(0.0)}, + "Data max": {"left": "d", "right": "e"}, + }, + }, + ] + if not hide_value: + expected_data_inspection.append( + { + "name": "value", + "data_metrics": { + "Null%": { + "left": pytest.approx(0.0), + "right": pytest.approx(0.0), + }, + "Data max": {"left": 40.0, "right": 50.0}, + }, + } + ) + expected = { "equal": False, "left_name": "left", @@ -258,6 +304,7 @@ def test_summary_data_parametrized( "n_right_only": 1, }, "columns": expected_columns, + "data_inspection": expected_data_inspection, "sample_rows_left_only": [[4]] if sample_rows else None, "sample_rows_right_only": [[5]] if sample_rows else None, } diff --git a/tests/test_metrics.py b/tests/test_metrics.py index 27f5825..e141a31 100644 --- a/tests/test_metrics.py +++ b/tests/test_metrics.py @@ -8,7 +8,10 @@ import pytest from diffly import metrics -from diffly.metrics import MetricFn, data +from diffly.comparison import _resolve_change_metric, _resolve_data_metric +from diffly.metrics import data +from diffly.metrics.change import ChangeMetric, ChangeMetricFn +from diffly.metrics.data import DataMetric @pytest.fixture @@ -17,29 +20,29 @@ def frame() -> pl.DataFrame: return pl.DataFrame({"l": [1, 2, 3, None], "r": [1, 2, 5, 4]}) -def _apply(metric: MetricFn, frame: pl.DataFrame) -> Any: +def _apply(metric: ChangeMetricFn, frame: pl.DataFrame) -> Any: return frame.select(metric(pl.col("l"), pl.col("r"))).item() def test_mean(frame: pl.DataFrame) -> None: - assert _apply(metrics.mean, frame) == pytest.approx(2 / 3) + assert _apply(metrics.change.mean, frame) == pytest.approx(2 / 3) def test_median(frame: pl.DataFrame) -> None: - assert _apply(metrics.median, frame) == 0 + assert _apply(metrics.change.median, frame) == 0 def test_min(frame: pl.DataFrame) -> None: - assert _apply(metrics.min, frame) == 0 + assert _apply(metrics.change.min, frame) == 0 def test_max(frame: pl.DataFrame) -> None: - assert _apply(metrics.max, frame) == 2 + assert _apply(metrics.change.max, frame) == 2 def test_std(frame: pl.DataFrame) -> None: sample_mean = 2 / 3 - assert _apply(metrics.std, frame) == pytest.approx( + assert _apply(metrics.change.std, frame) == pytest.approx( math.sqrt( ((0 - sample_mean) ** 2 + (0 - sample_mean) ** 2 + (2 - sample_mean) ** 2) / 2 @@ -50,54 +53,70 @@ def test_std(frame: pl.DataFrame) -> None: def test_mean_absolute_deviation() -> None: # deltas: [-1, 0, 2, null]; |deltas|: [1, 0, 2, null]; mean = 1.0 frame = pl.DataFrame({"l": [2, 2, 3, None], "r": [1, 2, 5, 4]}) - assert _apply(metrics.mean_absolute_deviation, frame) == pytest.approx(1.0) + assert _apply(metrics.change.mean_absolute_deviation, frame) == pytest.approx(1.0) def test_mean_relative_deviation() -> None: # left: [1, 2, 4, None]; delta: [0, 0, 2, null]; rel: [0, 0, 0.5, null]; mean = 1/6 frame = pl.DataFrame({"l": [1, 2, 4, None], "r": [1, 2, 6, 4]}) - assert _apply(metrics.mean_relative_deviation, frame) == pytest.approx(1 / 6) + assert _apply(metrics.change.mean_relative_deviation, frame) == pytest.approx(1 / 6) def test_mean_relative_deviation_div_by_zero() -> None: # Matches numpy: x/0 -> inf, so .abs().mean() -> inf frame = pl.DataFrame({"l": [0.0, 1.0], "r": [1.0, 1.0]}) - assert math.isinf(_apply(metrics.mean_relative_deviation, frame)) + assert math.isinf(_apply(metrics.change.mean_relative_deviation, frame)) -def test_null_fraction_change() -> None: - # left nulls: 1/4 = 25%; right nulls: 3/4 = 75%; delta = +50% - frame = pl.DataFrame({"l": [1, None, 3, 4], "r": [None, None, 3, None]}) - assert _apply(data.null_fraction_change, frame) == "25.0% -> 75.0% (+50.0)" +def test_null_fraction() -> None: + # A data metric describes a single side: 1 null out of 4 rows. + frame = pl.DataFrame({"l": [1, None, 3, 4]}) + assert frame.select(data.null_fraction(pl.col("l"))).item() == pytest.approx(0.25) -def test_null_fraction_change_negative_delta() -> None: - # left nulls: 1/2 = 50%; right nulls: 0%; delta = -50% - frame = pl.DataFrame({"l": [1, None], "r": [1, 2]}) - assert _apply(data.null_fraction_change, frame) == "50.0% -> 0.0% (-50.0)" - - -def test_null_fraction_change_non_numeric() -> None: - # Applies to any column type; here strings. left nulls: 0%; right nulls: 50% - frame = pl.DataFrame({"l": ["a", "b"], "r": ["a", None]}) - assert _apply(data.null_fraction_change, frame) == "0.0% -> 50.0% (+50.0)" +def test_null_fraction_non_numeric() -> None: + # Applies to any column type; here strings. 1 null out of 2 rows. + frame = pl.DataFrame({"l": ["a", None]}) + assert frame.select(data.null_fraction(pl.col("l"))).item() == pytest.approx(0.5) def test_quantile(frame: pl.DataFrame) -> None: # deltas [0, 0, 2]: p50 = 0, p100 = 2 - assert _apply(metrics.quantile(0.5), frame) == 0 - assert _apply(metrics.quantile(1.0), frame) == 2 + assert _apply(metrics.change.quantile(0.5), frame) == 0 + assert _apply(metrics.change.quantile(1.0), frame) == 2 def test_quantile_out_of_range() -> None: with pytest.raises(ValueError, match="q must be in"): - metrics.quantile(1.5) + metrics.change.quantile(1.5) def test_default_metrics_partition() -> None: from diffly.metrics import change - # The top-level defaults consist of the change metrics only. - assert metrics.DEFAULT_METRICS == {**change.DEFAULT_CHANGE_METRICS} - assert set(change.DEFAULT_CHANGE_METRICS) & set(data.DEFAULT_DATA_METRICS) == set() - assert list(metrics.DEFAULT_METRICS) == [*change.DEFAULT_CHANGE_METRICS] + # The change and data preset sets are disjoint. + assert set(change.DEFAULT_CHANGE_METRICS).isdisjoint(set(data.DEFAULT_DATA_METRICS)) + + +def test_resolve_data_metric_passthrough() -> None: + metric = DataMetric(fn=data.null_fraction) + assert _resolve_data_metric(metric) is metric + + +def test_resolve_change_metric_passthrough() -> None: + metric = ChangeMetric(fn=metrics.change.mean) + assert _resolve_change_metric(metric) is metric + + +def test_resolve_data_metric_wraps_callable() -> None: + fn = data.null_fraction + resolved = _resolve_data_metric(fn) + assert isinstance(resolved, DataMetric) + assert resolved.fn is fn + + +def test_resolve_change_metric_wraps_callable() -> None: + fn = metrics.change.mean + resolved = _resolve_change_metric(fn) + assert isinstance(resolved, ChangeMetric) + assert resolved.fn is fn