Checking access…
Field-level definitions, data relationships, and storage size calculations across three granularities — raw timestamped, 5-minute aggregation, and 15-minute aggregation — for four core operator data domains.
The operator's data platform ingests four distinct dataset families. Two are generated daily at high velocity (web traffic and footfall location), two are updated monthly (demographics and reference master tables). Together they form a unified analytical layer linking subscriber behaviour, physical movement, identity attributes, and network topology.
Online (web traffic), Location (footfall), and Demographic. Byte-per-row measurements from this file form the empirical basis for all size calculations in Section 7. The Sheet1 metadata confirms a raw payload of 117,602 bytes across 2,419 sample rows — approximately 49 bytes/row in compressed columnar format.Captures every subscriber browsing session routed through the operator's network. Each row represents one TCP session: a unique pairing of a subscriber token, a cell site, a destination host, and the data volumes transferred. Source: Online sheet from Minimal_Kb_File_Size_v2.xlsx.
table: vz_web.web_traffic_daily · partition: event_date · format: Parquet
Each record captures one web session event for a unique subscriber-cell-host combination. Sessions are identified by a hashed TOKEN_ID that maps back to the Demographic table via MSISDN hash. The CELL_ID field is the primary join key to the Reference Cell Site table. Download and upload volumes are in bytes; session duration is in seconds.
| Field Name | Data Type | Size (bytes) | Key | Definition | Example Value |
|---|---|---|---|---|---|
| TOKEN_ID | VARCHAR(64) | 64 | PK | Privacy-preserving hashed subscriber identifier. SHA-256 of MSISDN + salt. Consistent across sessions for the same device. Maps to Demographic.Hashed_MSISDN. |
454030lsRNu1wVl…cSgmso= |
| START_VISIT_DATE_TIME | TIMESTAMP WITH TZ | 8 | PK | Session start timestamp in UTC with timezone offset. Precision to the minute. Used as partition basis (event_date extracted from this field). Buckets to 5-min and 15-min windows in aggregated tables. | 2026-02-06 11:30:00+00:00 |
| CELL_ID | VARCHAR(20) | 20 | FK | Unique identifier for the serving radio cell. Encodes site code and sector. Format: {site_code}-{year}. Foreign key to ref_cell_site.cell_id. Derives geographic location without storing raw lat/lon at this table level. |
928A601-2022 |
| Field Name | Data Type | Size (bytes) | Key | Definition | Example Value |
|---|---|---|---|---|---|
| VALID_FROM_CELL | TIMESTAMP | 8 | IX | Timestamp from which the CELL_ID assignment became valid. Used to resolve cell site changes in historical joins. When joining to ref_cell_site, filter VALID_FROM_CELL BETWEEN valid_from AND valid_to for point-in-time accuracy. |
1900-01-01 00:00:00 |
| SESSION_DURATION | INT (seconds) | 4 | — | Total duration of the TCP session in seconds. Includes both active data transfer and idle keep-alive time. Sessions under 5 seconds are typically DNS lookups or pre-fetch traffic. Aggregated as SUM and AVG in rolled-up tables. | 90 |
| Field Name | Data Type | Size (bytes) | Key | Definition | Example Value |
|---|---|---|---|---|---|
| HOST_NAME | VARCHAR(128) | varies ~30 | IX | Destination hostname of the session (SNI or reverse DNS). Used for domain categorisation, content classification, and streaming vs. browsing split. High cardinality — typically 500K+ unique domains per day. Stored as dictionary-encoded in Parquet for compression. | 119.29.29.88 |
| DOWNLOAD_VOLUME | BIGINT (bytes) | 8 | — | Total bytes transferred from server to device (downlink) for this session. Aggregated as SUM at 5-min and 15-min windows. Divide by 1,048,576 for MB. Primary metric for network capacity planning. Range: 0 to ~50MB per session typical. | 2,407 |
| UPLOAD_VOLUME | BIGINT (bytes) | 8 | — | Total bytes transferred from device to server (uplink) for this session. Typically 10–30% of download volume for standard browsing; higher for video upload or cloud sync workloads. Aggregated as SUM in rolled-up tables. | 1,383 |
| Hit | INT | 4 | — | Number of times the subscriber clicked on or requested the subdomain / SNI (Server Name Indication) hostname within this session. A value of 1 means a single page load or DNS hit; values above 10 indicate active browsing or app polling (e.g. social media feeds, streaming buffering). 0 means the session was established but no SNI interaction was recorded (e.g. background sync). NULL indicates the session predates Hit tracking or the cell node did not support DPI at time of capture. | 0 / 3 / 12 / 47 |
| TOKEN_ID | START_VISIT_DATE_TIME | CELL_ID | HOST_NAME | DOWNLOAD_VOLUME | UPLOAD_VOLUME | SESSION_DURATION | Hit? |
|---|---|---|---|---|---|---|---|
| 454030lsRNu1…Sgmso= | 2026-02-06 11:30:00+00:00 | 928A601-2022 | netflix.com | 2,407 | 1,383 | 90 | 47 |
| 454030lsRNu1…Sgmso= | 2026-02-06 15:05:00+00:00 | 927C502-2022 | instagram.com | 1,907 | 1,319 | 17 | 12 |
| 454030lsRNu1…Sgmso= | 2026-02-06 15:20:00+00:00 | 927C502-2022 | cdn.google.com | 2,119 | 1,383 | 16 | 3 |
| 7B9Qm2kPxW…Tc4R= | 2026-02-06 09:14:00+00:00 | 924A301-2023 | apple.com | 5,841 | 892 | 210 | 1 |
| 7B9Qm2kPxW…Tc4R= | 2026-02-06 09:22:00+00:00 | 924A301-2023 | icloud-content.com | 48,230 | 312 | 44 | 0 |
| R3nPvXtZwK…Hq9L= | 2026-02-06 18:45:00+00:00 | 931B104-2021 | youtube.com | 91,047 | 2,104 | 380 | 8 |
Captures subscriber movement as a sequence of geo-timestamped pings. Each row represents one location event: a transition between start and end coordinates within a time window. Source: Location sheet from Minimal_Kb_File_Size_v2.xlsx (530 sample rows, single device).
table: vz_location.footfall_daily · partition: event_date · format: Parquet + delta-encoded coordinates
Each record is a location ping for a single masked subscriber. The subscriber identifier uses the same TOKEN_ID (hashed MSISDN) format as the Web Traffic table — enabling a direct join between browsing behaviour and physical movement without any raw PII exposure. Pings are generated when the device transitions between cell coverage areas or at a minimum heartbeat interval (~45–90 seconds for active devices). Each row also carries a cell_site_id which maps directly to the Reference Cell Site table, giving network-based location as a complement to GPS coordinates. The operator's ~60M subscriber base generates approximately 200–300M location pings per day.
| Field Name | Data Type | Size (bytes) | Key | Definition | Example Value |
|---|---|---|---|---|---|
| TOKEN_ID | VARCHAR(64) | 64 | PK | Privacy-preserving hashed subscriber identifier — identical token format as Web Traffic. SHA-256 of the subscriber's MSISDN (masked MSISDN / hashed phone number) + rotating daily salt. This shared identifier is the primary cross-domain join key: web_traffic_daily.TOKEN_ID = footfall_location_daily.TOKEN_ID enables direct behavioural + movement enrichment with no PII traversal. Consistent per device within a calendar day; re-salted at midnight UTC. |
454030lsRNu1wVl…Sgmso= |
| start_time | TIMESTAMP WITH TZ | 8 | PK | Timestamp when the device entered this geographic position, in UTC. Sub-second precision captured but stored to millisecond. Forms the lower bound of the dwell window. Used for 5-min and 15-min bucket assignment in aggregated tables. | 2025-02-05 00:01:24+00:00 |
| end_time | TIMESTAMP WITH TZ | 8 | — | Timestamp when the device left this geographic position. The difference end_time - start_time gives dwell duration. For instantaneous pings (same second), start_time equals end_time — these represent network-forced location updates rather than movement events. |
2025-02-05 00:01:28+00:00 |
| Field Name | Data Type | Size (bytes) | Key | Definition | Example Value |
|---|---|---|---|---|---|
| start_latitude | DOUBLE (float64) | 8 | — | WGS-84 latitude of the device position at start_time, in decimal degrees. Precision to 15 significant figures (~1mm accuracy). In aggregated tables this is replaced by geohash or H3 grid cell index. Range: -90 to +90. Observed values are in Saudi Arabia (21.4°N, 39.9°E) region. | 21.457580566400001 |
| start_longitude | DOUBLE (float64) | 8 | — | WGS-84 longitude of the device position at start_time, in decimal degrees. Precision to 15 significant figures. Range: -180 to +180. Stored separately from latitude for columnar compression efficiency; in Parquet, delta encoding compresses consecutive nearby coordinates by 4–8×. | 39.894401550300003 |
| end_latitude | DOUBLE (float64) | 8 | — | WGS-84 latitude of the device position at end_time. For stationary pings, equals start_latitude exactly. For movement events, the difference (end_lat - start_lat, end_lon - start_lon) encodes the displacement vector. Dropped in 5-min aggregation in favour of centroid lat/lon. |
21.457580566400001 |
| end_longitude | DOUBLE (float64) | 8 | — | WGS-84 longitude of the device position at end_time. For stationary pings, equals start_longitude exactly. High repetition ratio for urban dwellers (observed: same coordinates repeated 30+ consecutive times). Parquet dictionary encoding compresses repeated values to 2–3 bytes. | 39.894401550300003 |
| cell_site_id | VARCHAR(20) | 20 | FK | The radio cell tower serving the device at the time of the ping. Foreign key to ref_cell_site.cell_id. Provides a network-topology-based geographic representation that complements GPS coordinates — essential for cell-level footfall density analytics and coverage capacity planning. Every ping from a device on the operator network carries a cell_site_id; NULL only for Wi-Fi calling or IP-only sessions where no radio cell is assigned. Same format as web_traffic_daily.CELL_ID — enabling cell-level join across both datasets. |
928A601-2022 |
| TOKEN_ID | start_time | end_time | start_lat | start_lon | end_lat | end_lon | cell_site_id |
|---|---|---|---|---|---|---|---|
| 454030lsRNu1…Sgmso= | 2026-02-05 00:01:24+00:00 | 2026-02-05 00:01:28+00:00 | 21.45758 | 39.89440 | 21.45758 | 39.89440 | 928A601-2022 |
| 454030lsRNu1…Sgmso= | 2026-02-05 00:02:15+00:00 | 2026-02-05 00:02:22+00:00 | 21.45632 | 39.89664 | 21.45632 | 39.89664 | 928A601-2022 |
| 454030lsRNu1…Sgmso= | 2026-02-05 00:06:11+00:00 | 2026-02-05 00:06:20+00:00 | 21.45966 | 39.88766 | 21.45966 | 39.88766 | 927C502-2022 |
| 7B9Qm2kPxW…Tc4R= | 2026-02-05 00:10:41+00:00 | 2026-02-05 00:11:09+00:00 | 40.71280 | -74.00590 | 40.71310 | -74.00480 | 931B104-2021 |
| R3nPvXtZwK…Hq9L= | 2026-02-05 00:13:07+00:00 | 2026-02-05 00:13:16+00:00 | 34.05220 | -118.24370 | 34.05250 | -118.24290 | 924A301-2023 |
| R3nPvXtZwK…Hq9L= | 2026-02-05 00:17:03+00:00 | 2026-02-05 00:17:07+00:00 | 34.05280 | -118.24310 | 34.05280 | -118.24310 | 924A301-2023 |
cell_site_id field is populated for all network-derived pings and provides a fallback geographic anchor when GPS precision is not required.Subscriber-level attribute table refreshed monthly. Contains stable identity and socioeconomic attributes. The join key between this table and the web traffic and footfall datasets is the hashed subscriber identifier. Source: Demographic sheet from Minimal_Kb_File_Size_v2.xlsx.
table: vz_subscriber.demographics · partition: snapshot_month · format: Parquet
One row per active subscriber per monthly snapshot. Attributes are derived from the operator's customer records, supplemented by third-party data append for income banding. The table is slowly changing — most fields remain constant month-to-month. A Type 2 SCD (Slowly Changing Dimension) approach is used: changed records generate a new row, enabling historical attribute join accuracy.
| Field Name | Data Type | Size (bytes) | Key | Definition | Example Value |
|---|---|---|---|---|---|
| Hashed_MSISDN | VARCHAR(64) | 64 | PK | Primary join key. SHA-256 hash of the subscriber's MSISDN (Mobile Station ISDN Number — the phone number). This is the cross-table link: web traffic TOKEN_ID and footfall TOKEN_ID both map back here through a secure linkage table. Never stores the raw phone number. | Hashed MSISDN |
| MOBILE_COUNTRY_CODE | SMALLINT | 2 | FK | ITU-T E.212 Mobile Country Code. Identifies the country of the subscriber's home network. For US operator subscribers this is typically 311 or 312. Foreign subscribers roaming on the operator network have their home MCC recorded. Joins to ref_network_operator.mcc. |
1 |
| MOBILE_NETWORK_CODE | SMALLINT | 2 | FK | ITU-T E.212 Mobile Network Code. Identifies the specific operator within the MCC. The operator uses MNC 480 (for 311) and 12 (for 312). Combined MCC+MNC uniquely identifies the PLMN. Joins to ref_network_operator.mnc. |
1 |
| Age | TINYINT | 1 | — | Subscriber age in years, derived from date of birth in customer records. Stored as a 5-year age band integer in analytical layer: 1=18–24, 2=25–34, 3=35–44, 4=45–54, 5=55–64, 6=65+. Raw DOB not stored in this table for privacy compliance (CCPA). Update frequency: annually on subscriber anniversary. | 2 |
| Gender | CHAR(1) | 1 | — | Self-reported gender from subscriber profile. Values: M (male), F (female), N (non-binary/not specified), U (unknown). Approximately 3% of records have U. Used for audience segmentation in advertising analytics. Treated as sensitive PII — access controlled by role-based permissions. | M |
| Home_ZIP | VARCHAR(10) | 10 | FK | USPS ZIP code of the subscriber's billing address (home location proxy). 5-digit ZIP format for US, ZIP+4 for precision. Foreign key to ref_zip_demographics.zip_code for area-level attribute enrichment (median income, urban/rural classification, population density). Updated when subscriber changes billing address. |
10019 |
| Income | TINYINT | 1 | — | Household income band code, third-party appended: 1=<$25K, 2=$25–50K, 3=$50–75K, 4=$75–100K, 5=$100–150K, 6=$150–200K, 7=$200K+. Derived from ZIP-level census data combined with device plan tier. Approximately 12% of records have no income assignment (NULL). Refreshed quarterly by data vendor. | 3 |
Static lookup tables that provide geographic, network topology, and classification context. Updated monthly when cell site commissioning records change or ZIP demographic data is refreshed. These tables are small but critical — they are the geographic spine that connects all four datasets.
table: vz_reference.cell_site · updated: monthly · format: Parquet / CSV
| Field Name | Data Type | Size (bytes) | Key | Definition |
|---|---|---|---|---|
| cell_id | VARCHAR(20) | 20 | PK | Unique cell identifier. Matches CELL_ID in web_traffic and Cell Site ID in footfall. Format: {site_code}-{year_commissioned}. |
| site_latitude | DOUBLE | 8 | — | WGS-84 latitude of the cell tower antenna. Used to spatially join footfall pings to sites when GPS is unavailable. |
| site_longitude | DOUBLE | 8 | — | WGS-84 longitude of the cell tower antenna. |
| zip_code | VARCHAR(10) | 10 | FK | ZIP code of the cell site. Bridge key linking web traffic (via cell) to ZIP-level demographics without exposing subscriber identity. |
| valid_from | DATE | 4 | — | Date from which this cell configuration is valid. Enables point-in-time joins for historical analysis. |
| valid_to | DATE | 4 | — | Date until which this cell configuration is valid. NULL = currently active. |
| technology | VARCHAR(10) | 10 | — | Radio access technology: 4G-LTE, 5G-NR, 5G-mmWave, 3G-UMTS. Classifies coverage quality for capacity analytics. |
| sector | TINYINT | 1 | — | Antenna sector (1–6). Each physical site may have multiple sectors covering different azimuth ranges. |
table: vz_reference.zip_demographics · updated: monthly · format: Parquet
| Field Name | Data Type | Size | Key | Definition |
|---|---|---|---|---|
| zip_code | VARCHAR(10) | 10 | PK | USPS ZIP code. Primary key. Links to subscriber_demographics.Home_ZIP and ref_cell_site.zip_code. |
| state_code | CHAR(2) | 2 | — | Two-letter USPS state abbreviation. |
| population | INT | 4 | — | Resident population from most recent US Census ACS 5-year estimate. |
| median_income | INT | 4 | — | Median household income from ACS 5-year estimate. In USD. |
| urban_rural_code | TINYINT | 1 | — | USDA Rural-Urban Continuum Code 1–9. 1–3 = metro, 4–6 = suburban, 7–9 = rural. Used for network capacity segmentation. |
| centroid_lat | FLOAT | 4 | — | Geographic centroid latitude of the ZIP code boundary polygon. Used for radius-based spatial queries. |
| centroid_lon | FLOAT | 4 | — | Geographic centroid longitude of the ZIP code boundary polygon. |
The diagram below shows how all four dataset families connect. The two daily high-volume tables (web traffic and footfall) join to the two monthly reference dimensions via shared keys. All subscriber-level joins pass through hashed identifiers — no raw PII traverses the analytical layer.
web_traffic_daily.TOKEN_ID → linkage_hub → demographics.Hashed_MSISDN. The linkage hub is never exposed in the analytical layer — BigQuery/Spark jobs use a pre-joined view. To add geography, join web_traffic_daily.CELL_ID → ref_cell_site.cell_id → ref_cell_site.zip_code → ref_zip_demographics.zip_code. This full enrichment path requires no raw PII at any join step.Based on the actual byte measurements from Minimal_Kb_File_Size_v2.xlsx (117,602 bytes net data across 2,419 rows = ~49 bytes/row compressed) and the field-level byte widths defined above. Three granularity levels are calculated: raw timestamped (every event), 5-minute aggregation, and 15-minute aggregation.
| Granularity | Rows / day | Bytes / row (raw) | Bytes / row (Parquet) | Daily size (raw) | Daily size (compressed) | Annual (compressed) | Reduction vs raw |
|---|---|---|---|---|---|---|---|
| ⏱ Timestamped (raw) every session event |
~1.25 B | 151 | 49 | ~178 GB | ~58 GB | ~21 TB | 1× (baseline) |
| ⏱ 5-min aggregation per TOKEN_ID × CELL_ID × 5min window |
~85 M | 72 | 24 | ~5.8 GB | ~1.9 GB | ~720 GB | 31× smaller |
| ⏱ 15-min aggregation per TOKEN_ID × CELL_ID × 15min window |
~30 M | 72 | 24 | ~2.1 GB | ~0.7 GB | ~252 GB | 83× smaller |
| Granularity | Rows / day | Bytes / row (raw) | Bytes / row (Parquet+delta) | Daily size (raw) | Daily size (compressed) | Annual (compressed) | Reduction vs raw |
|---|---|---|---|---|---|---|---|
| ⏱ Timestamped (raw) every ping incl. stationary |
~8 B (raw) ~2.5 B (deduped) | 88 | 15 | ~660 GB | ~37 GB | ~13.5 TB | 1× (baseline) |
| ⏱ 5-min aggregation per device × H3 cell (resolution 8) × 5min |
~180 M | 44 | 14 | ~7.6 GB | ~2.4 GB | ~875 GB | 15× smaller |
| ⏱ 15-min aggregation per device × H3 cell (resolution 8) × 15min |
~65 M | 44 | 14 | ~2.8 GB | ~0.9 GB | ~320 GB | 41× smaller |
| Table | Rows | Bytes / row | Monthly raw | Monthly compressed | Annual | Notes |
|---|---|---|---|---|---|---|
| subscriber_demographics | ~120 M | 81 | ~9.2 GB | ~2.8 GB | ~34 GB | Low cardinality fields compress extremely well. SCD Type 2 adds ~5% row growth per month. |
| ref_cell_site | ~500 K | 75 | ~36 MB | ~12 MB | ~144 MB | Slowly changing. Monthly snapshot for point-in-time accuracy. Tiny footprint. |
| ref_zip_demographics | ~42 K | 29 | ~1.2 MB | ~0.4 MB | ~5 MB | Essentially static. Annual census refresh. Negligible storage impact. |
Full comparison of all four datasets across all three granularities, showing combined daily and annual storage footprint. These figures use Parquet + Zstandard compression ratios validated against the source file measurements.
| Dataset | Timestamped/day | 5-min agg/day | 15-min agg/day | Timestamped/year | 5-min/year | 15-min/year |
|---|---|---|---|---|---|---|
| 🌐 Web Traffic | 58 GB | 1.9 GB | 0.7 GB | 21.2 TB | 694 GB | 256 GB |
| 📍 Footfall Location | 37 GB | 2.4 GB | 0.9 GB | 13.5 TB | 876 GB | 329 GB |
| 👤 Demographics | Monthly refresh — 2.8 GB/month | 34 GB/year (all snapshots) | ||||
| 🗺️ Reference Tables | Monthly refresh — 12.4 MB/month | 149 MB/year (all snapshots) | ||||
| 📦 TOTAL | 95 GB/day | 4.3 GB/day | 1.6 GB/day | ~35 TB/yr | ~1.6 TB/yr | ~620 GB/yr |