flowchart TB subgraph Input["Data Ingestion"] SNB["SnowBridge
(Historian SQL + Redpanda)"] end subgraph Snowflake["Snowflake + dbt"] direction TB LAND["Landing Tables
(raw, as-received)"] STG["Staging Models
(cleaned, typed)"] subgraph Curated["Curated Layer (canonical model)"] DIM["dim_equipment
(UUID + 5 identifiers
+ UNS path + class)"] STATE["fact_state_transitions
(Running/Idle/Faulted/
Starved/Blocked)"] TAGS["fact_tag_values
(time-series, filtered)"] OEE["mart_oee
(cross-site OEE
from canonical state)"] EVENTS["fact_events
(canonical event stream)"] end TESTS["dbt tests
(enum divergence checks,
source freshness ≤15min)"] end subgraph Consumers["Analytics Consumers"] PBI["Power BI
(reporting)"] AIML["AI/ML Models
(predictive)"] ADHOC["Ad-hoc SQL
(analysts)"] end SNB --> LAND LAND --> STG STG --> DIM STG --> STATE STG --> TAGS STATE --> OEE TAGS --> OEE DIM --> PBI OEE --> PBI EVENTS --> AIML STATE --> AIML DIM --> ADHOC TAGS --> ADHOC TESTS -.->|"validates"| Curated