{% extends "base.html" %} {% block content %} {% set primary_entity = group.entity_columns[0] if group.entity_columns else None %} {% set entity_color = entity_palette.get(primary_entity) if primary_entity else None %}

{% if entity_color %}{% endif %} {{ feature.name }}

{% if feature.lifecycle.value != 'active' %}{{ feature.lifecycle.value }}{% endif %} {% if feature.definition_version > 1 %}v{{ feature.definition_version }}{% endif %} {% if feature.feature_type %}{{ feature.feature_type.value }}{% endif %} {% for tag in feature.tags %}{{ tag }}{% endfor %}
{% if feature.description %}

{{ feature.description }}

{% endif %}
{{ group.fully_qualified_name }}.{{ feature.name }}
{% if feature.lifecycle.value == 'deprecated' and feature.replacement %}

Deprecated. Use {{ feature.replacement }} instead.

{% elif feature.lifecycle.value == 'deprecated' %}

Deprecated.

{% elif feature.lifecycle.value == 'preview' %}

Preview. This feature is not yet considered production-ready.

{% endif %}
{% if snapshot %} {% set status = freshness_status(snapshot, group.freshness) %}
{% if status.label == 'fresh' %}Fresh {% elif status.label == 'warn' %}Warning — past warn threshold {% elif status.label == 'error' %}Stale — past error threshold {% elif status.label == 'unknown' %}Status unknown {% endif %} {% if snapshot.error %} {{ snapshot.error }} {% else %} parent table updated {{ status.age_human }} {% endif %}
{% endif %}

Trust

{% if group.owner %}
Owner
{{ group.owner }}
{% endif %}
Lifecycle
{{ feature.lifecycle.value }}{% if feature.replacement %} → {{ feature.replacement }}{% endif %}
{% if feature.definition_version > 1 %}
Definition version
v{{ feature.definition_version }}
{% endif %}

Join keys

{% if group.entity_columns %}
Entity
{% for c in group.entity_columns %}{{ c }}{% if not loop.last %}, {% endif %}{% endfor %}
{% endif %} {% if group.timestamp_column %}
Time anchor
{{ group.timestamp_column }}
{% endif %}
Feature group
{{ group.name }}

Shape

{% if feature.column_type %}
Warehouse type
{{ feature.column_type }}
{% endif %} {% if feature.feature_type %}
Semantic type
{{ feature.feature_type.value }}
{% endif %} {% if feature.null_behavior %}
Null behavior
{{ feature.null_behavior.value }}
{% endif %} {% if column_stats and snapshot and snapshot.row_count is not none %}
Null rate
{{ humanize_percent(column_stats.null_count, snapshot.row_count) }}{% if column_stats.null_count is not none %} ({{ column_stats.null_count|humanize_count }} of {{ snapshot.row_count|humanize_count }}){% endif %}
{% endif %} {% if column_stats and column_stats.distinct_count is not none %}
Distinct values
{{ column_stats.distinct_count|humanize_count }}
{% endif %}

Use this feature

{{ sql_select_snippet(group, [feature]) }}

ML consumers

{% if feature.used_by %}

derived = auto-traced from dbt exposures; declared = listed in an exposure's meta.feature_store.consumes; manual = legacy used_by on this column.

{% else %}

No declared consumers.

{% endif %}
{% if related_by_consumer %}

Other features used by the same model{{ '' if (feature.used_by|length) == 1 else 's' }}

{% endif %} {% if related_by_type %}

Other {% if feature.feature_type %}{{ feature.feature_type.value }}{% endif %} features in {{ group.name }}

{% endif %} {% endblock %}