offdataai
Telecom · data model template

Telecom EDW data model

Data Vault 2.0 raw vault for telecom: hubs (subscriber/account/device/plan/network-element), links among them, a transactional CDR link, and satellites for subscriber, account, device, plan, and network-element history plus an account-plan effectivity satellite.

Telecommunications enterprise data warehouse as a Data Vault 2.0 raw vault: subscriber, account, device, plan, and network-element hubs; the relationships among them; a non-historized call-detail-record (CDR) link for high-volume usage events; and descriptive satellites — built to integrate CRM, billing, and network systems and ingest billions of immutable CDRs. It is a Data Vault 2.0 raw vault: hubs for business keys, links for relationships and satellites for descriptive history, with hash keys and hash diffs generated in the DDL.

Data Vault 2.0TelecomGDPRSOX
15
tables
88
columns
15
relationships
4
PII columns

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

Subject areas

hubslinkssatellites

Design decisions

  • Non-historized CDR link for usage at scale

    CDRs are immutable, extremely high volume, and need no history; a non-historized (insert-only) link carrying the usage measures ingests billions of events without satellite churn.

  • Subscriber, account, and device as separate hubs

    A subscriber can change devices and move between accounts; independent hubs joined by links let those relationships evolve without rewriting the subscriber record.

  • Network element as a hub

    Tying CDRs to a network-element hub enables network-performance and coverage analytics from the same vault that feeds billing.

Tables in the Telecom EDW 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.

Hubs (5)

hub_subscriber

Grain: one row per unique hub_subscriber business key

ColumnTypeKeys
subscriber_idvarcharBK
load_datetimestamp
record_sourcevarchar

hub_account

Grain: one row per unique hub_account business key

ColumnTypeKeys
account_numbervarcharBK
load_datetimestamp
record_sourcevarchar

hub_device

Grain: one row per unique hub_device business key

Device by IMEI.

ColumnTypeKeys
imeivarcharBK
load_datetimestamp
record_sourcevarchar

hub_plan

Grain: one row per unique hub_plan business key

ColumnTypeKeys
plan_codevarcharBK
load_datetimestamp
record_sourcevarchar

hub_network_element

Grain: one row per unique hub_network_element business key

Network element / cell tower.

ColumnTypeKeys
cell_idvarcharBK
load_datetimestamp
record_sourcevarchar

Links (4)

lnk_subscriber_account

Grain: one row per lnk_subscriber_account relationship

Subscribers on a billing account.

ColumnTypeKeys
subscriber_hkbinary
account_hkbinary
load_datetimestamp
record_sourcevarchar

lnk_account_plan

Grain: one row per lnk_account_plan relationship

Rate plans subscribed on an account.

ColumnTypeKeys
account_hkbinary
plan_hkbinary
load_datetimestamp
record_sourcevarchar

lnk_subscriber_device

Grain: one row per lnk_subscriber_device relationship

Device a subscriber uses.

ColumnTypeKeys
subscriber_hkbinary
device_hkbinary
load_datetimestamp
record_sourcevarchar

lnk_cdr

Grain: one row per call-detail record (non-historized link)

Transactional (non-historized) CDR link — insert-only usage events.

ColumnTypeKeys
subscriber_hkbinary
device_hkbinary
network_element_hkbinary
cdr_idvarcharBK
event_tstimestamp
event_typevarchar
duration_secondsinteger
bytes_usedbigint
rated_amountdecimal
is_roamingboolean
load_datetimestamp
record_sourcevarchar

Satellites (6)

sat_subscriber_details

Grain: one row per subscriber_hk per change

Subscriber descriptive history.

ColumnTypeKeys
subscriber_hkbinaryPK
load_datetimestampPK
first_namevarcharPII
last_namevarcharPII
emailvarcharPII
phone_numbervarcharPII
subscriber_statusvarchar
activation_datedate
load_end_datetimestamp
record_sourcevarchar

sat_account_details

Grain: one row per account_hk per change

Account descriptive history.

ColumnTypeKeys
account_hkbinaryPK
load_datetimestampPK
account_typevarchar
billing_cyclevarchar
account_statusvarchar
credit_limitdecimal
load_end_datetimestamp
record_sourcevarchar

sat_device_details

Grain: one row per device_hk per change

Device descriptive history.

ColumnTypeKeys
device_hkbinaryPK
load_datetimestampPK
manufacturervarchar
modelvarchar
os_versionvarchar
is_5g_capableboolean
load_end_datetimestamp
record_sourcevarchar

sat_plan_details

Grain: one row per plan_hk per change

Rate-plan descriptive history.

ColumnTypeKeys
plan_hkbinaryPK
load_datetimestampPK
plan_namevarchar
plan_typevarchar
monthly_feedecimal
data_allowance_gbdecimal
load_end_datetimestamp
record_sourcevarchar

sat_network_element_details

Grain: one row per network_element_hk per change

Network-element descriptive history.

ColumnTypeKeys
network_element_hkbinaryPK
load_datetimestampPK
site_namevarchar
technologyvarchar
latitudedecimal
longitudedecimal
load_end_datetimestamp
record_sourcevarchar

sat_account_plan_effectivity

Grain: one row per account-plan relationship per effectivity change

Effectivity satellite tracking plan changes on an account.

ColumnTypeKeys
account_plan_hkbinaryPK
load_datetimestampPK
effective_fromdate
effective_todate
is_activeboolean
load_end_datetimestamp
record_sourcevarchar

Relationships

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

  • lnk_subscriber_account.subscriber_hk → hub_subscriber (many-to-one)
  • lnk_subscriber_account.account_hk → hub_account (many-to-one)
  • lnk_account_plan.account_hk → hub_account (many-to-one)
  • lnk_account_plan.plan_hk → hub_plan (many-to-one)
  • lnk_subscriber_device.subscriber_hk → hub_subscriber (many-to-one)
  • lnk_subscriber_device.device_hk → hub_device (many-to-one)
  • lnk_cdr.subscriber_hk → hub_subscriber (many-to-one)
  • lnk_cdr.device_hk → hub_device (many-to-one)
  • lnk_cdr.network_element_hk → hub_network_element (many-to-one)
  • sat_subscriber_details.subscriber_hk → hub_subscriber (many-to-one)
  • sat_account_details.account_hk → hub_account (many-to-one)
  • sat_device_details.device_hk → hub_device (many-to-one)
  • sat_plan_details.plan_hk → hub_plan (many-to-one)
  • sat_network_element_details.network_element_hk → hub_network_element (many-to-one)
  • sat_account_plan_effectivity.account_plan_hk → lnk_account_plan (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