lap_id | varchar | Yes | not_null, unique | Surrogate key {season}{race_id}{driver}_{lap_number}. |
race_year | integer | Yes | not_null | Season year. |
circuit_key | varchar | Yes | | Event/grand-prix key (equals race_id); used to group laps by circuit. |
race_id | varchar | Yes | not_null | Numeric FastF1 event id cast to string (e.g. ‘4’); the join key used across staging, not the human-readable slug. |
driver_id | varchar | Yes | not_null | FastF1 three-letter driver code (e.g. VER, HAM). |
driver_number | varchar | Yes | | Car number the driver carried in this session. |
constructor_id | varchar | Yes | | Team name as reported by FastF1 (e.g. ‘Mercedes’). |
lap_number | integer | Yes | not_null | Lap index within the race (1-based). |
stint_number | integer | Yes | | Stint index within the race (1-based); increments after each pit stop. |
tyre_life | integer | Yes | | Laps already completed on the current tyre set at the start of this lap. |
is_fresh_tyre | boolean | Yes | | TRUE when the lap began on a freshly fitted tyre set. |
is_personal_best | boolean | Yes | | FastF1 flag the lap was the driver’s personal best at the time it was set. |
position | integer | Yes | | Track position (classification order) at the end of the lap. |
lap_time_s | double | Yes | | Lap time in seconds (Bronze nanoseconds ÷ 1e9); NULL when not timed. |
lap_start_time_s | double | Yes | | Session clock (s) at the start of the lap; used to join weather and air state. |
sector1_time_s | double | Yes | | Sector 1 time in seconds; NULL when missing. |
sector2_time_s | double | Yes | | Sector 2 time in seconds; NULL when missing. |
sector3_time_s | double | Yes | | Sector 3 time in seconds; NULL when missing. |
sector1_session_time_s | double | Yes | | Session clock (s) at the sector 1 split. |
sector2_session_time_s | double | Yes | | Session clock (s) at the sector 2 split. |
sector3_session_time_s | double | Yes | | Session clock (s) at the sector 3 split. |
speed_i1_kph | double | Yes | | Speed-trap reading at intermediate point 1 (kph). |
speed_i2_kph | double | Yes | | Speed-trap reading at intermediate point 2 / sector 2 exit (kph). |
speed_fl_kph | double | Yes | | Speed-trap reading at the finish line (kph). |
speed_st_kph | double | Yes | | Speed-trap reading on the longest straight (kph). |
track_status | varchar | Yes | | Raw FastF1 TrackStatus string for the lap (concatenated digit codes, e.g. ‘41’ = SC+yellow). |
is_pit_lap | boolean | Yes | | TRUE when the lap has a pit-in or pit-out time (an in/out lap). |
is_deleted | boolean | Yes | | TRUE when stewards deleted the lap time (e.g. track-limits breach). |
is_accurate | boolean | Yes | | FastF1 quality flag timing considered reliable. |
is_fastf1_generated | boolean | Yes | | TRUE when the row was synthesised by FastF1 rather than read from raw timing. |
compound | varchar | Yes | accepted_values | Normalised tyre compound label (UPPER). None/nan/UNKNOWN mapped to NULL. Pre-2019 compounds (SUPERSOFT/ULTRASOFT/HYPERSOFT) preserved as-is. |
is_safety_car_lap | boolean | Yes | not_null | TRUE when TrackStatus contains a 4 (SCDeployed). Full safety car only VSC is is_vsc_lap and a red flag is is_red_flag_lap. Decode matches stg_track_status, ground-truthed against the bronze Message column. |
is_vsc_lap | boolean | Yes | not_null | TRUE when TrackStatus contains a 6 (VSCDeployed) or 7 (VSCEnding). Decode matches stg_track_status. |
is_red_flag_lap | boolean | Yes | not_null | TRUE when TrackStatus contains a 5 (Red). A red flag is a full session stoppage physically the opposite of a VSC lap (tyres go to ambient, and may legally be changed), so it is flagged separately rather than folded into either neutralisation flag. The three flags together are the neutralised set the layer excludes; consumers should test all three, not a pair. |
is_valid_lap | boolean | Yes | | Clean-lap flag: timed (lap_time_s > 0), not a pit lap, not deleted, accurate, lap_number > 1, and no SC/VSC/red flag (TrackStatus contains no 4–7). |