Skip to content

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.