offdataai
Supply Chain & Logistics · data model template

Logistics EDW data model

Data Vault 2.0 raw vault for logistics: hubs (shipment/carrier/location/order/vehicle), links (shipment-carrier, shipment-order, shipment-route, shipment-vehicle, tracking events), and satellites (carrier, location, order, vehicle details + shipment-status effectivity + vehicle telemetry). Hash keys and load metadata are generated by the DDL layer.

Logistics and freight enterprise data warehouse modeled as a Data Vault 2.0 raw vault: shipment, carrier, location, order, and vehicle hubs; carrier, order, route, and vehicle-assignment links plus a non-historized tracking-event link; and descriptive, effectivity, and telemetry satellites — built for integrating TMS, OMS, carrier, and telematics systems with full historization and end-to-end shipment lineage across a multi-carrier supply chain. 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.0Supply Chain & LogisticsSOXISO-28000
17
tables
103
columns
18
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

hubslinkssatellitesreference

Design decisions

  • Multi-location route link

    A shipment route is a relationship between a shipment and two location roles (origin, destination); a single link with two location hash keys models this without duplicating the location hub or creating a cycle.

  • Non-historized tracking-event link

    Tracking scans are immutable point-in-time events, so the tracking-event link is insert-only and carries its measures (geo, temperature) directly — no satellite needed.

  • Effectivity satellite on the shipment

    A shipment moves through created, in-transit, delivered, and exception states; an effectivity satellite records the valid period of each status for as-of OTIF and exception reporting.

  • Telemetry split into its own satellite

    Vehicle telemetry (speed, fuel, odometer) streams far more frequently than static vehicle attributes; a separate high-rate-of-change satellite keeps history compact and loads efficient.

  • Integration agility drives Data Vault in logistics

    Carriers, telematics providers, and TMS instances change constantly; hubs of stable business keys plus load_date + record_source let new sources attach without reworking the warehouse.

Tables in the Logistics 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_shipment

Grain: one row per unique hub_shipment business key

ColumnTypeKeys
shipment_idvarcharBK
load_datetimestamp
record_sourcevarchar

hub_carrier

Grain: one row per unique hub_carrier business key

ColumnTypeKeys
carrier_codevarcharBK
load_datetimestamp
record_sourcevarchar

hub_location

Grain: one row per unique hub_location business key

ColumnTypeKeys
location_idvarcharBK
load_datetimestamp
record_sourcevarchar

hub_order

Grain: one row per unique hub_order business key

ColumnTypeKeys
order_numbervarcharBK
load_datetimestamp
record_sourcevarchar

hub_vehicle

Grain: one row per unique hub_vehicle business key

ColumnTypeKeys
vehicle_idvarcharBK
load_datetimestamp
record_sourcevarchar

Links (5)

lnk_shipment_carrier

Grain: one row per lnk_shipment_carrier relationship

Which carrier is moving which shipment.

ColumnTypeKeys
shipment_hkbinary
carrier_hkbinary
load_datetimestamp
record_sourcevarchar

lnk_shipment_order

Grain: one row per lnk_shipment_order relationship

Which orders are consolidated into a shipment.

ColumnTypeKeys
shipment_hkbinary
order_hkbinary
load_datetimestamp
record_sourcevarchar

lnk_shipment_route

Grain: one row per lnk_shipment_route relationship

Origin and destination locations of a shipment.

ColumnTypeKeys
shipment_hkbinary
origin_location_hkbinary
destination_location_hkbinary
load_datetimestamp
record_sourcevarchar

lnk_shipment_vehicle

Grain: one row per lnk_shipment_vehicle relationship

Which vehicle is assigned to a shipment.

ColumnTypeKeys
shipment_hkbinary
vehicle_hkbinary
load_datetimestamp
record_sourcevarchar

lnk_tracking_event

Grain: one row per shipment tracking scan (non-historized link)

Transactional (non-historized) link — insert-only tracking scans.

ColumnTypeKeys
shipment_hkbinary
location_hkbinary
vehicle_hkbinary
tracking_event_idvarcharBK
event_tstimestamp
event_typevarchar
latitudedecimal
longitudedecimal
temperature_cdecimal
load_datetimestamp
record_sourcevarchar

Satellites (6)

sat_shipment_status

Grain: one row per shipment status per effectivity change

Effectivity satellite tracking shipment lifecycle over time.

ColumnTypeKeys
shipment_hkbinaryPK
load_datetimestampPK
status_codevarchar
effective_fromtimestamp
effective_totimestamp
is_activeboolean
status_reasonvarchar
load_end_datetimestamp
record_sourcevarchar

sat_carrier_details

Grain: one row per carrier_hk per change

Carrier descriptive history.

ColumnTypeKeys
carrier_hkbinaryPK
load_datetimestampPK
carrier_namevarchar
carrier_modevarchar
scac_codevarchar
service_levelvarchar
contract_statusvarchar
load_end_datetimestamp
record_sourcevarchar

sat_location_details

Grain: one row per location_hk per change

Location descriptive history.

ColumnTypeKeys
location_hkbinaryPK
load_datetimestampPK
location_namevarchar
location_typevarchar
addressvarchar
cityvarchar
countryvarchar
timezonevarchar
load_end_datetimestamp
record_sourcevarchar

sat_order_details

Grain: one row per order_hk per change

Order descriptive history.

ColumnTypeKeys
order_hkbinaryPK
load_datetimestampPK
order_datedate
customer_namevarchar
incotermvarchar
order_valuedecimal
weight_kgdecimal
volume_m3decimal
priorityvarchar
load_end_datetimestamp
record_sourcevarchar

sat_vehicle_details

Grain: one row per vehicle_hk per change

Vehicle descriptive history.

ColumnTypeKeys
vehicle_hkbinaryPK
load_datetimestampPK
vehicle_typevarchar
license_platevarchar
capacity_kgdecimal
reefer_capableboolean
ownershipvarchar
load_end_datetimestamp
record_sourcevarchar

sat_tracking_telemetry

Grain: one row per vehicle per telemetry reading (high-rate-of-change satellite)

Telemetry satellite split out for its high rate of change.

ColumnTypeKeys
vehicle_hkbinaryPK
load_datetimestampPK
speed_kmhdecimal
odometer_kmdecimal
fuel_level_pctdecimal
engine_statusvarchar
reading_tstimestamp
load_end_datetimestamp
record_sourcevarchar

Lookup tables (1)

ref_service_level

Grain: one row per carrier service level

ColumnTypeKeys
service_level_codevarcharBK
service_level_namevarchar
target_transit_dayssmallint

Relationships

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

  • lnk_shipment_carrier.shipment_hk → hub_shipment (many-to-one)
  • lnk_shipment_carrier.carrier_hk → hub_carrier (many-to-one)
  • lnk_shipment_order.shipment_hk → hub_shipment (many-to-one)
  • lnk_shipment_order.order_hk → hub_order (many-to-one)
  • lnk_shipment_route.shipment_hk → hub_shipment (many-to-one)
  • lnk_shipment_route.origin_location_hk → hub_location (many-to-one)
  • lnk_shipment_route.destination_location_hk → hub_location (many-to-one)
  • lnk_shipment_vehicle.shipment_hk → hub_shipment (many-to-one)
  • lnk_shipment_vehicle.vehicle_hk → hub_vehicle (many-to-one)
  • lnk_tracking_event.shipment_hk → hub_shipment (many-to-one)
  • lnk_tracking_event.location_hk → hub_location (many-to-one)
  • lnk_tracking_event.vehicle_hk → hub_vehicle (many-to-one)
  • sat_shipment_status.shipment_hk → hub_shipment (many-to-one)
  • sat_carrier_details.carrier_hk → hub_carrier (many-to-one)
  • sat_location_details.location_hk → hub_location (many-to-one)
  • sat_order_details.order_hk → hub_order (many-to-one)
  • sat_vehicle_details.vehicle_hk → hub_vehicle (many-to-one)
  • sat_tracking_telemetry.vehicle_hk → hub_vehicle (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