{% extends "base.html" %} {% block body %} {% macro col_links(cols, base_url='') %} {%- for c in cols %}{{ c }}{% if not loop.last %}, {% endif %}{% endfor -%} {% endmacro %}

{{ fqn }} {{ conn }}

{% if missing_artifacts_notice %}
{{ missing_artifacts_notice }}
{% endif %}
metadata
{{ entry.type|capitalize }}
profiled {{ entry.profiled_at|relative }}
rows
{{ row_count.row_count|human }}
{% if row_count.method %}
{{ row_count.method }}
{% endif %} {% if row_count.share_pct is not none %}
scanned {{ row_count.rows_scanned|human }} ({{ row_count.share_pct }}%) {% if row_count.filter %}, filter {{ row_count.filter }}{% endif %}
{% endif %}
columns
{{ entry.columns|human }}
{% if skyline %}
{% for s in skyline %} {% endfor %}
{% endif %}
{% if cards %}
related
{{ cards.refers_to + cards.referenced_by }}
{% if cards.refers_to and cards.referenced_by %} {{ cards.refers_to }} table{{ 's' if cards.refers_to != 1 else '' }} out · {{ cards.referenced_by }} in {% elif cards.refers_to %} {{ cards.refers_to }} table{{ 's' if cards.refers_to != 1 else '' }} out {% elif cards.referenced_by %} {{ cards.referenced_by }} table{{ 's' if cards.referenced_by != 1 else '' }} in {% elif relationships.eligible_target == false %} not a join target - no declared-unique column {% else %} no related tables {% endif %}
{% endif %} {% if grain %}
grain
{% if grain.key_list %}
{{ grain.key_list[0].columns|length }}
{% for k in grain.key_list %} ({{ col_links(k.columns) }}) - {{ k.detection }}{% if k.note %}: {{ k.note }}{% endif %}{% if not loop.last %}
{% endif %} {% endfor %}
{% elif grain.exhausted == true %}
-
searched, none found
{% elif grain.exhausted == false %}
-
search bounded, none found
{% else %}
-
not determined
{% endif %}
{% endif %} {% if cards and cards.freshest %}
data through
{{ cards.freshest.max|dt }}
{{ cards.freshest.classification }} · {{ cards.freshest.column }}
{% endif %} {% if cards %}
sensitive
{{ cards.sensitive }}
of {{ cards.n_columns }} columns
redacted
{{ cards.redacted }}
of {{ cards.n_columns }} columns
{% endif %} {% if cardinality %}
cardinality
{{ cardinality.avg_pct }}%
avg across {{ cardinality.n_columns }} of {{ cardinality.n_total }} columns
{% for b in cardinality.bars %} {% endfor %}
{% endif %} {% if completeness %}
completeness
{{ completeness.avg_pct }}%
avg across {{ completeness.n_columns }} columns
{% for bucket, count in completeness.buckets %} {% if count %}{% endif %} {% endfor %}
{% endif %}
{% set has_relationships = relationships.refers_to or relationships.referenced_by %}
{% if columns %}{% endif %} {% if has_relationships %}{% endif %} {% if ddl %}{% endif %}
{% if description %}

Description

{{ description|md }}
{% endif %} {% if grain %}

Grain - what identifies a row

{% if grain.key_list %} {% elif grain.exhausted == true %}
Searched for an undeclared grain; none found.
{% elif grain.exhausted == false %}
Search for an undeclared grain was bounded; none found within the cap.
{% elif grain.search_ran %}
Grain search ran but reported no verdict.
{% else %}
Not determined - nothing declared, and no measured search ran.
{% endif %}
{% endif %} {% if physical_layout %}

{{ 'Clustered by' if physical_layout.mechanism == 'cluster' else 'Partitioned by' }}

Declared, not measured - not a claim about how well this holds today.
    {% for k in physical_layout.key_list %}
  1. {{ k.expression }}{% if k.column %} ({{ k.column }}){% endif %}
  2. {% endfor %}
{% endif %} {% if dependencies %}

Dependencies

Measured over the scanned rows, not a rule the database enforces.
{% for d in dependencies %} {% endfor %}
DeterminantDependentStrength
{{ d.determinant }} {{ d.dependent }} {{ (d.strength * 100)|round(1) }}%
{% endif %} {% if columns_empty_notice %}
{{ columns_empty_notice }}
{% elif columns %}

Column skyline

{% for s in skyline %} {{ s.name }} {% endfor %}
{% for bucket, label in skyline_legend %} {{ label }} {% endfor %} height = cardinality (log)
fill = completeness
{% endif %} {% if diagram %}

Relationships

{{ diagram }}
{% endif %}
{% if columns %}
{% for col in columns %} {% endfor %}
Column Type Class Null rate Cardinality Distribution Notes
{{ col.name }} {% if col.collation %}
collation {{ col.collation }}
{% endif %} {% if col.null_companions %}
null with: {{ col_links(col.null_companions) }}
{% endif %} {% if col.annotation_note %}
{{ col.annotation_note|md }}
{% endif %} {% for value, note in col.annotation_values %}
{{ value }}: {{ note }}
{% endfor %} {% for stat, predicate in col.annotation_claims %}
claims {{ stat }} {{ predicate }}
{% endfor %}
{{ col.sql_type }}{% if not col.nullable %} not null{% endif %} {{ col.classification|capitalize|nbsp }}
{{ col.null_count|human }}
{% if col.cardinality %}
{{ col.cardinality.value|human }} {% if col.cardinality.approximate %}(approx){% endif %} {% if col.cardinality.saturates %}(= scanned rows){% endif %}
{% else %} n/a {% endif %}
{% if col.distribution %}
{{ col.distribution|replace('_', ' ') }}
{% endif %} {% if col.redacted %}
redacted ({{ col.redacted }})
{% endif %} {% if col.value_list %} {% if col.value_list.bars %}
{% for v in col.value_list.bars %}
{{ v.value }} {{ v.count|human }}
{% endfor %}
{% endif %} {% if col.value_list.coverage is not none %}
{{ (col.value_list.coverage * 100)|round(1) }}% covered {% if col.value_list.coverage_method == 'bounded' %}clamped{% endif %}
{% endif %} {% endif %} {% if col.range %} {% if col.range.redacted %}
bounds withheld (redacted: {{ col.range.redacted }})
{% else %} {% if col.range.box %}
{{ col.range.bounds.min|dt }} {{ col.range.box.p25_value|dt }} {{ col.range.box.p50_value|dt }} {{ col.range.box.p75_value|dt }} {{ col.range.bounds.max|dt }}
{% endif %} {% if col.range.percentiles %}
{% for k, v in col.range.percentiles %}{{ k }} {{ v|dt }}{% endfor %}
{% endif %} {% endif %} {% if col.range.unrepresentable %}
unrepresentable: {{ col.range.unrepresentable|join(', ') }}
{% endif %} {% if col.range.frequencies %}
top {{ col.range.frequencies.top|human }} · bottom {{ col.range.frequencies.bottom|human }} · {{ col.range.frequencies.listed }} listed of {{ col.range.frequencies.total|human }}
{% endif %} {% if col.range.freshness %}
{{ col.range.freshness.classification }} · {{ col.range.freshness.max_age_days }}d old
{% endif %} {% endif %}
{{ col.notes }} {% if col.sketch_available %}sketch{% endif %}
{% if null_patterns and null_patterns.patterns %}

Columns null on the same rows

{% for p in null_patterns.patterns %} {% endfor %}
RowsNull together
{{ p.count|human }} {{ col_links(p.columns) if p.columns else '(none - fully populated)' }}
{% if null_patterns.coverage is not none %}
Observed over {{ 'every scanned row' if null_patterns.coverage >= 1 else (null_patterns.coverage * 100)|round(1) ~ '% of scanned rows' }}.
{% endif %}
{% endif %}
{% endif %} {% if has_relationships %}
{% if relationships.eligible_target == false %}
This table declares no unique column, so nothing can ever reference it.
{% endif %} {% for r in relationships.refers_to %} {% endfor %} {% for r in relationships.referenced_by %} {% endfor %}
DirectionColumnsTableColumnsDetectionDetail
refers to {{ col_links(r.column) }} {{ r.target_table }} {{ col_links(r.target_column, url_for('table', conn=conn, table=r.target_table)) }} {{ r.detection }} {% if r.on_delete %}
on_delete={{ r.on_delete }}
{% endif %} {% if r.constraint_name %}
{{ r.constraint_name }}
{% endif %} {% if r.path %}
via {{ r.path|join('.') }}{% if r.target_path %} -> {{ r.target_path|join('.') }}{% endif %}
{% endif %} {% if r.observed %}
fanout avg {{ '%.1f'|format(r.observed.fanout_avg) }}{% if r.observed.fanout_max is not none %} (max {{ r.observed.fanout_max }}){% endif %}, covers {{ (r.observed.target_coverage * 100)|round(1) }}% of target {% if r.observed.containment is not none %}, {{ (r.observed.containment * 100)|round(1) }}% of referencing values contained{% endif %}
{% if r.observed.coherent == false %}
INCOHERENT: referencing cardinality exceeds the target's
{% endif %} {% endif %} {% if r.rejected %}
REJECTED by human annotation{% if r.rejected_note %}: {{ r.rejected_note }}{% endif %}
{% endif %}
referenced by {{ col_links(r.column) }} {{ r.referencer_table }} {{ col_links(r.referencer_column, url_for('table', conn=conn, table=r.referencer_table)) }} {{ r.detection }} {% if r.on_delete %}
on_delete={{ r.on_delete }}
{% endif %} {% if r.constraint_name %}
{{ r.constraint_name }}
{% endif %} {% if r.observed %}
fanout avg {{ '%.1f'|format(r.observed.fanout_avg) }}{% if r.observed.fanout_max is not none %} (max {{ r.observed.fanout_max }}){% endif %}, covers {{ (r.observed.target_coverage * 100)|round(1) }}% of target {% if r.observed.containment is not none %}, {{ (r.observed.containment * 100)|round(1) }}% of referencing values contained{% endif %}
{% if r.observed.coherent == false %}
INCOHERENT: referencing cardinality exceeds the target's
{% endif %} {% endif %}
{% endif %} {% if ddl %}
{{ ddl }}
{% endif %} {% endblock %}