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