{% extends "base.html" %} {% block title %}Data Model{% endblock %} {% block heading %}Data Model Designer{% endblock %} {% block content %}

Design your normalized raw storage model — Bronze ingestion targets through to Gold star schema.

{% for layer, color, desc in [ ("bronze", "orange", "Raw ingestion targets. Exact copy of source data."), ("silver", "slate", "Cleansed, typed, SCD applied. Conformed layer."), ("gold", "yellow", "Star schema. Business-ready for semantic model."), ] %} {% set layer_tables = cfg.tables|selectattr('layer','eq',layer)|list %}
{{ layer|upper }} {{ layer_tables|length }}

{{ desc }}

{% if layer_tables %}
{% for t in layer_tables[:3] %}

{{ t.name }}

{% endfor %} {% if layer_tables|length > 3 %}

+{{ layer_tables|length - 3 }} more

{% endif %}
{% endif %}
{% endfor %}
{% if cfg.tables %}
{% for table in cfg.tables %}
{{ table.layer }}

{{ table.name }}

{% if table.scd_type > 0 %} SCD {{ table.scd_type }} {% endif %} {% if table.partition_column %} ⬡ {{ table.partition_column }} {% endif %}
{{ table.columns|length }} column(s)
{% if table.description %}

{{ table.description }}

{% endif %} {% if table.columns %}
{% for col in table.columns %} {% endfor %}
Column Type Source Flags Description
{% if col.is_primary_key %} 🔑 {% elif col.is_foreign_key %} 🔗 {% endif %} {{ col.name }} {{ col.data_type }} {% if not col.nullable %}*{% endif %} {{ col.source_column or col.name }}
{% if col.pii %}PII{% endif %} {% if col.is_foreign_key and col.references_table %} FK {% endif %}
{{ col.description or "—" }}
{% else %}

No columns yet —

{% endif %}
{% endfor %}
{% else %}

Model is empty

Add tables to build your normalized raw storage model.

{% endif %} {% endblock %}