offdataai
Telecom · data model template

Telecom Network Performance & Fault Analytics data model

Kimball warehouse for telecom OSS analytics: a periodic-snapshot hourly network KPI fact per cell carrying PM counters and a fault-event accumulating-snapshot fact tracking alarm raise/clear with MTTR, customers-impacted estimate, and revenue-at-risk. Conformed dimensions (cell tower SCD2, region, RAT, vendor, fault category, severity, plus a smart-key hour dimension) support per-RAT trending, dropped-call and setup-failure ratios, MTTR/MTBF by element or vendor, and outage impact reporting bridged to operations and revenue.

Mobile-network performance & fault analytics for a telecom operator: OSS Performance Management KPI counters (accessibility, retainability, mobility, throughput, PRB utilization, handover success) landed at per-cell hourly grain alongside Fault Management alarm lifecycles (raise, clear, MTTR, ticket workflow) over conformed cell-tower, region, radio-access-technology (2G/3G/4G/5G NR), vendor, fault-category, and severity dimensions, deployed on Snowflake to feed KPI dashboards, alarm-storm detection, SLA scorecards, and vendor benchmarking. It is a Kimball dimensional model: fact tables at a declared grain surrounded by conformed dimensions, ready for BI tools and a semantic layer.

KimballTelecomSOC2
10
tables
89
columns
14
relationships
0
PII columns

Opening the template creates a project with the ERD, platform-native DDL, a dbt project and documentation already generated (recommended platform: Snowflake). Edit it in plain English or on the canvas, then ship it to any supported warehouse.

Subject areas

network_kpifault_managementconformed_dimensions

Design decisions

  • Hourly periodic-snapshot KPI fact per network element

    OSS PM counters are emitted on fixed 15-minute / hourly ROP (reporting-output period) granularity per cell; modelling them as a periodic-snapshot fact at hourly grain preserves time-series shape for trend, anomaly, and busy-hour analysis without per-counter explosion.

  • Accumulating-snapshot fact for the alarm raise-to-clear lifecycle

    Each FM alarm has a finite lifecycle (raise → acknowledge → clear) with two anchoring dates and computable MTTR; an accumulating-snapshot fact captures both endpoints and lets MTTR/MTBF, ticket ageing, and is_repeat_fault be queried without process-mining joins.

  • Conformed technology dimension to compare 4G vs 5G performance

    Operators run multi-RAT (2G/3G/4G/5G NR/SA) estates; a conformed technology dimension lets KPI and fault facts roll up by RAT for side-by-side 4G vs 5G NR comparison and refarming decisions while keeping the fact narrow.

  • Severity and vendor dimensions for SLA and vendor scorecards

    NOC SLAs and vendor MSAs are written against severity tiers and vendor identity; carrying both as dimensions on the fault fact makes time-to-respond, time-to-clear, and repeat-fault scorecards trivially sliceable per vendor and per severity.

  • Customers-impacted estimate stored as a measure on the fault fact

    Bridging operations and revenue requires a stable estimate of subscribers affected per outage; persisting customers_impacted_estimate and revenue_at_risk on the accumulating-snapshot fact freezes the as-computed value at clear time and avoids drift from later subscriber-base changes.

Tables in the Telecom Network Performance & Fault Analytics model

Every table with its grain, columns, types and keys. PK marks a primary key, BK a business key and PII a column classified as personal data, which gets a masking strategy by default.

Fact tables (2)

fct_network_kpi_hourly

Grain: one row per network element per hour per KPI bundle (periodic snapshot)

Hourly periodic-snapshot of OSS PM counters per cell.

ColumnTypeKeys
network_kpi_hourly_keybigintPK
hour_keybigint
date_keybigint
cell_tower_keybigint
region_keybigint
technology_keybigint
vendor_keybigint
accessibility_pctdecimal
retainability_pctdecimal
drop_call_ratiodecimal
setup_success_ratedecimal
throughput_dl_mbpsdecimal
throughput_ul_mbpsdecimal
prb_utilization_pctdecimal
active_users_avgdecimal
total_traffic_gbdecimal
signaling_loaddecimal
handover_success_ratedecimal

fct_fault_event

Grain: one row per network fault event — alarm raise + close lifecycle (accumulating snapshot)

Accumulating-snapshot fact capturing alarm raise-to-clear lifecycle.

ColumnTypeKeys
fault_event_keybigintPK
raised_date_keybigint
cleared_date_keybigint
cell_tower_keybigint
region_keybigint
technology_keybigint
fault_category_keybigint
vendor_keybigint
severity_keybigint
alarm_idvarchar
ticket_idvarchar
duration_minutesdecimal
mttr_minutesdecimal
customers_impacted_estimateinteger
revenue_at_riskdecimal
currencyvarchar
is_outageboolean
is_planned_maintenanceboolean
is_repeat_faultboolean
ticket_statusvarchar

Dimension tables (8)

dim_date

Grain: one row per calendar day

ColumnTypeKeys
date_keybigintPK
full_datedateBK
day_of_monthsmallint
month_numbersmallint
month_namevarchar
quartersmallint
yearsmallint
is_business_dayboolean

dim_hour

Grain: one row per calendar hour (yyyymmddhh) for hourly KPI snapshots

ColumnTypeKeys
hour_keybigintPK
hour_datetimetimestampBK
hour_of_daysmallint
is_peak_hourboolean
day_partvarchar

dim_cell_tower

Grain: one row per radio cell / sector identified by cell_id

SCD type 2

ColumnTypeKeys
cell_tower_keybigintPK
cell_idvarcharBK
lacvarchar
enb_idvarchar
regionvarchar
countryvarchar
latitudedecimal
longitudedecimal
antenna_height_mdecimal
technologies_supportedvarchar
is_indoorboolean
site_typevarchar

dim_region

Grain: one row per network reporting region

ColumnTypeKeys
region_keybigintPK
region_codevarcharBK
region_namevarchar
countryvarchar
market_tiervarchar

dim_technology

Grain: one row per radio access technology (RAT)

ColumnTypeKeys
technology_keybigintPK
technologyvarcharBK
descriptionvarchar
generation_numbersmallint
frequency_bandvarchar
duplex_modevarchar

dim_vendor

Grain: one row per equipment vendor

ColumnTypeKeys
vendor_keybigintPK
vendor_idvarcharBK
vendor_namevarchar
equipment_familyvarchar
vendor_countryvarchar

dim_fault_category

Grain: one row per fault category in the FM catalogue

ColumnTypeKeys
fault_category_keybigintPK
fault_categoryvarcharBK
descriptionvarchar
fault_typevarchar
root_cause_classvarchar

dim_severity

Grain: one row per alarm severity level

ColumnTypeKeys
severity_keybigintPK
severityvarcharBK
severity_namevarchar
severity_levelsmallint
sla_response_minutesinteger

Relationships

Each relationship is a foreign key on the first table referencing the second.

  • fct_network_kpi_hourly.hour_key → dim_hour (many-to-one)
  • fct_network_kpi_hourly.date_key → dim_date (many-to-one)
  • fct_network_kpi_hourly.cell_tower_key → dim_cell_tower (many-to-one)
  • fct_network_kpi_hourly.region_key → dim_region (many-to-one)
  • fct_network_kpi_hourly.technology_key → dim_technology (many-to-one)
  • fct_network_kpi_hourly.vendor_key → dim_vendor (many-to-one)
  • fct_fault_event.raised_date_key → dim_date (many-to-one)
  • fct_fault_event.cleared_date_key → dim_date (many-to-one)
  • fct_fault_event.cell_tower_key → dim_cell_tower (many-to-one)
  • fct_fault_event.region_key → dim_region (many-to-one)
  • fct_fault_event.technology_key → dim_technology (many-to-one)
  • fct_fault_event.fault_category_key → dim_fault_category (many-to-one)
  • fct_fault_event.vendor_key → dim_vendor (many-to-one)
  • fct_fault_event.severity_key → dim_severity (many-to-one)

Related templates

All templates →
Start for $1

From requirements to AI-ready context, in one platform.

Describe your business in a conversation, start from a template or connect your own database. Your first model is ready in minutes.

Get startedBook a demo

Plans from $1/month · cancel any time