Map Transport
Map raw rows into the scenario's flows table: the movements that were actually observed between locations. Each record is product that moved from a source to a target, with its quantity and its realized cost.
Network Optimization does not read flows. It reads lanes. Transport is observed history; lanes are what is allowed. If you only have historical shipments and need an optimization, build a lanes table from your location pairs with Map Lanes.
When to use this¶
- You have historical shipment data and want a baseline scenario that preserves what flowed
- You're comparing an optimized network against the as-is and need realized flows to compare against
What you need¶
- An upstream Import Data node carrying one row per shipment, or one row per source-target-product combination if it is pre-aggregated
- Origin and destination columns whose values match identifiers in the locations table
Field mapping¶
Auto-detection is all or nothing. With no explicit mapping on the node, every field is matched against the headers listed below, case-insensitively, and a space in your header reads as an underscore, so Site Name matches site_name. Set even one field explicitly and detection switches off for the whole node: only the fields named in the mapping are filled, and the rest arrive empty.
Set mappings in the node's panel. Connect an upstream table and select the mapping node to see automatic matches. Choosing a column saves all displayed matches as an explicit mapping. Use Use automatic detection to return to header detection. Required fields without a match are marked in the panel.
| Field | Type | Required | Example | What it is | Auto-detected headers |
|---|---|---|---|---|---|
| Source | text | Yes | Warehouse A |
Origin location name | source, from, origin, source_id, from_id |
| Target | text | Yes | Store 1 |
Destination location name | target, to, destination, dest, target_id, to_id |
| Product | text | Yes | Widget |
Product or SKU moved. Required — name it even in a single-product scenario. | product, sku, item, material, product_id |
| Quantity | number | No | 100.0 |
Quantity moved. Its unit goes in Quantity Unit. | quantity, qty, amount, volume, units |
| Quantity Unit | text | No | units |
Unit of measurement for quantity | quantity_unit, qty_unit, unit, uom |
| Transport Cost | number | No | 500.0 |
Transport cost, denominated in the scenario currency | cost, transport_cost, shipping_cost, freight_cost, price |
| Emissions | number | No | 12.5 |
Carbon emissions. Its unit goes in Emissions Unit. | emissions, co2, carbon, ghg, carbon_emissions |
| Emissions Unit | text | No | kg CO2 |
Unit for emissions (e.g., kg CO2) | emissions_unit, co2_unit |
| Transport Mode | text | No | FTL |
Transport mode (e.g., FTL, LTL, rail, ocean, air) | transport_mode, mode, shipping_mode, carrier_type, shipment_mode, transport_type |
| Date | text | No | 2025-01-02 |
When this movement happened, as an ISO string (YYYY-MM-DD). Blank on a flow the optimizer produced, which is a rate rather than a dated shipment. | date, shipment_date, transport_date, departure_date, dispatch_date, delivery_date, created_on |
| Unit Cost | number | No | 5.0 |
Per-unit transport cost, denominated in the scenario currency | unit_cost, cost_per_unit, rate, freight_rate, transport_rate |
| Load | number | No | 18500.0 |
A second measure of the movement, the one that fills the vehicle — gross weight, loading metres or volume. Name which in the load unit. Its unit goes in Load Unit. | load, weight, gross_weight, net_weight, loading_metres, loading_meters, ldm, cbm, chargeable_weight |
| Load Unit | text | No | kg |
Unit for the load measure (e.g., kg, ldm, m3) | load_unit, weight_unit, volume_unit, ldm_unit |
| Reference | text | No | SH-0001234 |
The shipment or transport number this movement is known by in the source system. Blank on a flow the optimizer produced, which is a rate rather than a document. | reference, shipment_number, shipment_id, transport_id, transport_number, delivery_number, document_number, consignment_id, waybill |
How it works¶
Each row becomes a transport record. Create Scenario writes them into the scenario's flows table, which is where realized quantities, costs and emissions show up on dashboards and the map. Cost to Serve reads the Transport Cost column from here.
For an optimization-only workflow that preserves no baseline you can skip Map Transport entirely. The optimizer needs lanes plus the policy tables.
Workflow wiring¶
flowchart LR
n1["Import Data (locations.csv)"] --> n2["Map Locations"]
n3["Import Data (shipments.csv)"] --> n4["Map Transport"]
n4 --> n5["Create Scenario"]
n6["Import Data (lanes.csv)"] --> n7["Map Lanes"]
n2 --> n5
n7 --> n5
Common mistakes¶
- Source or target names that do not match locations. Mismatches produce orphan flows that will not render on the map or roll up correctly. Standardize names before mapping.
- Mapping a per-unit rate to Transport Cost. It is the total for that flow. Per-unit rates belong on Map Lanes.
- Using this table to drive Network Optimization. The optimizer reads lanes.