🚗 transport¶
U.S. transportation data spanning motor-vehicle safety (NHTSA recalls, consumer complaints, FARS fatal crashes), aviation (BTS airline on-time performance, FAA airport master, BTS T-100 air-carrier traffic), public transit (FTA National Transit Database monthly ridership), and highways (FHWA state motor-vehicle registrations). Each row is a discrete event or a place-and-period observation joinable to geo (states/counties), econ (fuel prices, employment), sec (airline / automaker filings), and weather. Together they describe how people and goods move, how safely, and at what capacity.
32 datasets · 473 columns
vehicle_recalls · table¶
NHTSA vehicle safety recall campaigns — one row per recall (NHTSA campaign id), with component, estimated potentially-affected unit count, recall type (Vehicle/Equipment/Tire/Child Seat), and park-outside / do-not-drive advisory flags. All-history to current (~30K campaigns), served as a single Socrata JSON export, so this is a snapshot table: the whole set is re-fetched and the partition overwritten each run. The affected make / model / year set is rolled into the description text (not exploded). Source: data.transportation.gov/resource/6axg-epim.json.
| Column | Type | Null | Description |
|---|---|---|---|
nhtsa_ |
string | no | NHTSA recall campaign id (e.g. 26V434000) — PK |
report_ |
date | yes | Date NHTSA received the recall report |
manufacturer |
string | yes | Recalling manufacturer |
subject |
string | yes | Recall subject line |
component |
string | yes | Affected component category |
mfr_ |
string | yes | Manufacturer's own campaign number |
recall_ |
string | yes | Vehicle / Equipment / Tire / Child Seat |
potentially_ |
long | yes | Estimated number of units potentially affected |
recall_ |
string | yes | Description of the defect (SODA defect_summary) |
consequence_ |
string | yes | Consequence of the defect |
corrective_ |
string | yes | Manufacturer's remedy |
park_ |
string | yes | Fire-risk-when-parked advisory (Yes/No) |
do_ |
string | yes | Do-not-drive advisory (Yes/No) |
recall_ |
string | yes | NHTSA recall detail page URL (from recall_link.url) |
safety_complaints · table¶
NHTSA consumer safety-defect complaints — one row per complaint component record since 1995 (all-history bulk flat file, refreshed daily), carrying crash/fire flags, injury and death counts, mileage at failure, and free-text complaint description, keyed to manufacturer/make/model/ model_year with both the consumer's state (state_abbr) and the incident state (state_of_incident). Snapshot: the whole file is re-fetched and the partition overwritten each run. Source: static.nhtsa.gov/odi/ffdd/cmpl/FLAT_CMPL.zip.
| Column | Type | Null | Description |
|---|---|---|---|
cmplid |
string | no | NHTSA internal unique sequence number — PK |
odino |
string | yes | NHTSA internal reference number (may repeat across components) |
manufacturer |
string | yes | Manufacturer name |
make |
string | yes | Vehicle/equipment make |
model |
string | yes | Vehicle/equipment model |
model_ |
string | yes | Model year (9999 = unknown/NA) |
crash |
string | yes | Was vehicle involved in a crash (Y/N) |
fail_ |
date | yes | Date of incident |
fire |
string | yes | Was vehicle involved in a fire (Y/N) |
injured |
integer | yes | Number of persons injured |
deaths |
integer | yes | Number of fatalities |
component_ |
string | yes | Specific component description |
city |
string | yes | Consumer's city |
state_ |
string | yes | Consumer's state code (USPS abbr; FK component to geo.states) |
vin |
string | yes | Partial VIN |
date_ |
date | yes | Date added to file |
date_ |
date | yes | Date complaint received by NHTSA |
miles |
integer | yes | Vehicle mileage at failure |
complaint_ |
string | yes | Free-text description of the complaint |
complaint_ |
string | yes | Source-of-complaint code (IVOQ, EWR, VOQ, ...) |
product_ |
string | yes | Product type (V=vehicle, T=tires, E=equipment, C=child restraint) |
state_ |
string | yes | Incident state code (USPS abbr) |
fatal_crashes · table¶
NHTSA Fatality Analysis Reporting System — one row per fatal traffic crash (accident.csv, grain ST_CASE) for the given data year, with fatality, person, vehicle, and pedestrian counts, crash date/hour/day-of-week, lat/lon, and decoded conditions (weather, light, manner of collision, roadway function). Delta by year: past years immutable, newest complete year (effective_year = year - 2) re-fetched. Joins to geo.counties via county_fips; see fatal_crashes_by_state_year for the state x year rollup. Source: static.nhtsa.gov/nhtsa/downloads/FARS/{year}/National/FARS{year}NationalCSV.zip.
| Column | Type | Null | Description |
|---|---|---|---|
st_ |
integer | no | FARS crash case number (unique within data year) — PK |
state_ |
string | yes | 2-digit state FIPS code (FK to geo.states) |
state_ |
string | yes | State name |
county_ |
string | yes | 5-digit county FIPS code (FK to geo.counties) |
county_ |
string | yes | County name |
city_ |
string | yes | City name |
crash_ |
date | yes | Crash date (from YEAR/MONTH/DAY) |
day_ |
string | yes | Day of week |
hour |
integer | yes | Hour of crash (0-23; 99=unknown mapped to null) |
latitude |
double | yes | Crash latitude (77.7777+ sentinel mapped to null) |
longitude |
double | yes | Crash longitude (-999.x sentinel mapped to null) |
harmful_ |
string | yes | First harmful event (decoded) |
manner_ |
string | yes | Manner of collision (decoded) |
light_ |
string | yes | Light condition (decoded) |
weather |
string | yes | Atmospheric conditions (decoded) |
roadway_ |
string | yes | Roadway functional classification (decoded) |
persons_ |
integer | yes | Number of persons in the crash |
vehicles_ |
integer | yes | Number of vehicles (contact + non-contact) |
fatalities |
integer | yes | Number of fatalities in the crash |
pedestrians |
integer | yes | Number of pedestrians/non-motorists involved |
airline_ontime · table¶
BTS Reporting Carrier On-Time Performance — one row per scheduled domestic flight for the (year, month) with departure/arrival delays, cancellations, diversions, and delay-cause minutes. A curated subset of the 110-column source is projected. Delta by (year, month); dataLag 1 keeps to complete prior years so no unpublished month is requested. In DQ mode dqRowLimit caps each month. Source: transtats.bts.gov/PREZIP/On_Time_Reporting_Carrier_On_Time_Performance_1987_present_{year}_{month}.zip.
| Column | Type | Null | Description |
|---|---|---|---|
flight_ |
date | yes | Flight date |
reporting_ |
string | yes | Reporting carrier IATA-style code |
dot_ |
integer | yes | DOT-assigned carrier id |
tail_ |
string | yes | Aircraft tail number |
flight_ |
string | yes | Flight number |
origin |
string | yes | Origin airport code (FK to airports.arpt_id) |
origin_ |
string | yes | Origin city name |
origin_ |
string | yes | Origin state (USPS abbr) |
dest |
string | yes | Destination airport code (FK to airports.arpt_id) |
dest_ |
string | yes | Destination city name |
dest_ |
string | yes | Destination state (USPS abbr) |
crs_ |
string | yes | Scheduled departure time (local hhmm) |
dep_ |
double | yes | Departure delay in minutes (negative = early) |
dep_ |
double | yes | Departure delayed >= 15 min (1/0) |
crs_ |
string | yes | Scheduled arrival time (local hhmm) |
arr_ |
double | yes | Arrival delay in minutes (negative = early) |
arr_ |
double | yes | Arrival delayed >= 15 min (1/0) |
cancelled |
double | yes | Flight cancelled (1/0) |
cancellation_ |
string | yes | Cancellation reason (A=carrier, B=weather, C=NAS, D=security) |
diverted |
double | yes | Flight diverted (1/0) |
air_ |
double | yes | Flight time in the air (minutes) |
distance |
double | yes | Distance between airports (miles) |
carrier_ |
double | yes | Delay minutes attributed to the carrier |
weather_ |
double | yes | Delay minutes attributed to weather |
nas_ |
double | yes | Delay minutes attributed to the National Airspace System |
security_ |
double | yes | Delay minutes attributed to security |
late_ |
double | yes | Delay minutes attributed to a late inbound aircraft |
airports · table¶
FAA airport / aviation-facility master (NTAD, NASR-derived) — one row per facility (~19,445), keyed by FAA location id. The ArcGIS FeatureServer paginates 2000 features/page, so a self-paginating ResponseTransformer fetches all pages and flattens features[].attributes. Snapshot, refreshed on the FAA 56-day NASR cycle. arpt_id joins airline_ontime.origin/dest. Source: services.arcgis.com/.../NTAD_Aviation_Facilities/FeatureServer/0.
| Column | Type | Null | Description |
|---|---|---|---|
arpt_ |
string | no | FAA location identifier (e.g. ATL) — PK |
arpt_ |
string | yes | Airport/facility name |
city |
string | yes | Associated city |
state_ |
string | yes | State (USPS abbr; FK component to geo.states) |
state_ |
string | yes | State name |
county_ |
string | yes | County name |
latitude |
double | yes | Latitude (decimal degrees, WGS84) |
longitude |
double | yes | Longitude (decimal degrees, WGS84) |
elevation_ |
double | yes | Field elevation (feet) |
site_ |
string | yes | Facility type (A=airport, H=heliport, S=seaplane base, ...) |
facility_ |
string | yes | PU=public, PR=private |
ownership_ |
string | yes | Ownership (PU=public, PR=private, MA/MN/MR=military) |
arpt_ |
string | yes | Operational status (O=operational) |
region_ |
string | yes | FAA region code |
eff_ |
string | yes | NASR effective date (56-day cycle) — freshness marker |
transit_ridership · table¶
FTA National Transit Database — Complete Monthly Ridership (with adjustments and estimates). Long format: one row per transit agency × mode × type-of-service × month with unlinked passenger trips (upt), vehicles operated in max service (voms), and vehicle revenue hours/miles (vrh/vrm). Delta by (year, month) sliced from the Socrata date field. Source: data.transportation.gov/resource/8bui-9xvu.json.
| Column | Type | Null | Description |
|---|---|---|---|
ntd_ |
string | yes | NTD agency id |
agency |
string | yes | Transit agency name |
uza_ |
string | yes | Urbanized area name |
mode |
string | yes | NTD mode code (e.g. DR, MB, HR, LR) |
mode_ |
string | yes | Grouped mode label (e.g. Bus, Heavy Rail) |
tos |
string | yes | Type of service (DO=directly operated, PT=purchased transportation) |
reporter_ |
string | yes | Reporter type (Full Reporter, ...) |
state_ |
string | yes | State (USPS abbr; FK component to geo.states) |
fta_ |
string | yes | FTA region number |
ride_ |
date | yes | Observation month (first of month) |
upt |
double | yes | Unlinked passenger trips |
voms |
double | yes | Vehicles operated in maximum service |
vrh |
double | yes | Vehicle revenue hours |
vrm |
double | yes | Vehicle revenue miles |
agency_ |
string | no | Composite natural key (agency_mode_tos_reporter_uace_date) — PK |
t100_segments · table¶
BTS T-100 Domestic Segment (All Carriers) — monthly air-carrier traffic and capacity per (carrier, origin, dest, aircraft type): passengers, freight, mail, seats, and departures performed/scheduled. Complements airline_ontime (which has punctuality but no volumes). One fetch per year returns all months. T-100 has no stable download URL, so a DataProvider reproduces the TranStats ASP.NET postback (gnoyr_VQ=GEE). Delta by year; dataLag 1 keeps to complete prior years. Source: transtats.bts.gov DL_SelectFields.aspx.
| Column | Type | Null | Description |
|---|---|---|---|
month |
integer | yes | Calendar month (1-12) |
carrier |
string | yes | Unique carrier code |
carrier_ |
string | yes | Unique carrier name |
origin |
string | yes | Origin airport code (FK to airports.arpt_id) |
origin_ |
string | yes | Origin city name |
origin_ |
string | yes | Origin state (USPS abbr) |
dest |
string | yes | Destination airport code (FK to airports.arpt_id) |
dest_ |
string | yes | Destination city name |
dest_ |
string | yes | Destination state (USPS abbr) |
aircraft_ |
string | yes | BTS aircraft type code |
service_ |
string | yes | Service class (F=scheduled passenger/cargo, ...) |
departures_ |
double | yes | Departures scheduled on the segment for the month |
departures_ |
double | yes | Departures performed on the segment for the month |
seats |
double | yes | Available seats |
passengers |
double | yes | Passengers transported |
freight |
double | yes | Freight transported (pounds) |
mail |
double | yes | Mail transported (pounds) |
distance |
double | yes | Segment distance (miles) |
vehicle_registrations · table¶
FHWA Highway Statistics table MV-1 — state motor-vehicle registrations by vehicle class (automobiles, buses, trucks, motorcycles, and the all-vehicle total) for the data year. FHWA publishes MV-1 only as a merged multi-header Excel workbook, so a ResponseTransformer parses the fixed MV-1 layout and derives state_fips. Delta by year; dataLag 2 targets the newest available data year. Joins to geo.states via state_fips. Source: fhwa.dot.gov/policyinformation/statistics/{year}/xls/mv1.xlsx.
| Column | Type | Null | Description |
|---|---|---|---|
state_ |
string | no | 2-digit state FIPS code (FK to geo.states) |
state_ |
string | yes | State name (footnote markers stripped) |
automobiles |
long | yes | Registered automobiles (total, public + private) |
buses |
long | yes | Registered buses (total) |
trucks |
long | yes | Registered trucks (total) |
motorcycles |
long | yes | Registered motorcycles (total) |
all_ |
long | yes | All registered motor vehicles (total) |
pavement_roughness · table¶
FHWA Highway Statistics table HM-64 — functional-system road mileage by measured pavement roughness (International Roughness Index bucket), broken out by area type (rural/urban) and road class (interstate, other freeways & expressways, other principal arterial, minor arterial — the last reported for rural only). FHWA publishes HM-64 only as a merged multi-header, multi-block Excel workbook (4 sheets, one or more 10-column road-class blocks per sheet), so a ResponseTransformer parses the fixed HM-64 layout and derives state_fips. Joins to geo.states via state_fips. Source: fhwa.dot.gov/policyinformation/statistics/{year}/xls/hm64.xlsx.
| Column | Type | Null | Description |
|---|---|---|---|
state_ |
string | no | 2-digit state FIPS code (FK to geo.states) |
state_ |
string | yes | State name (footnote markers stripped) |
area_ |
string | no | 'rural' or 'urban' |
road_ |
string | no | interstate, other_freeways_expressways, other_principal_arterial, or minor_arterial (rural only) |
miles_ |
double | yes | Miles with no measured roughness on record |
miles_ |
double | yes | Miles with IRI < 60 inches/mile |
miles_ |
double | yes | Miles with IRI 60-94 inches/mile |
miles_ |
double | yes | Miles with IRI 95-119 inches/mile |
miles_ |
double | yes | Miles with IRI 120-144 inches/mile |
miles_ |
double | yes | Miles with IRI 145-170 inches/mile |
miles_ |
double | yes | Miles with IRI 171-194 inches/mile |
miles_ |
double | yes | Miles with IRI 195-220 inches/mile |
miles_ |
double | yes | Miles with IRI > 220 inches/mile |
miles_ |
double | yes | Total miles with measured roughness on record |
usace_locks · table¶
US Army Corps of Engineers navigation lock inventory (Lock Performance Monitoring System master list) — one row per lock chamber, 234 locks nationally, with the year each opened as the age field. No per-lock condition or deferred-maintenance figure is published anywhere (NID's own CONDITION_ASSESSMENT field reads "Not Available" for every USACE navigation dam checked) — only age is sourced here, not condition or backlog. Hosted on ArcGIS Hub under an individual account rather than an official USACE/HIFLD org account; re-verify the URL if it ever 404s, same caveat class as this warehouse's other individually-hosted ArcGIS mirrors (housing.opportunity_zones, lands.va_facilities). Joins to geo.states via state_abbr. Source: opendata.arcgis.com dataset 78ef8693f30b40b980737c561ce6b103_0.
| Column | Type | Null | Description |
|---|---|---|---|
lock_ |
string | no | USACE National Datum/Drainage Code — stable natural key, PK |
name |
string | yes | |
river |
string | yes | |
state_ |
string | yes | 2-letter USPS state code (FK component to geo.states) |
division |
string | yes | USACE division code (e.g. LRD, SWD) |
district |
string | yes | USACE district code (e.g. LRL, SWL) |
year_ |
integer | yes | Year the lock opened — the age field this table exists to carry |
length_ |
double | yes | Usable chamber length (feet) |
width_ |
double | yes | Usable chamber width (feet) |
lift_ |
double | yes | Normal lift (feet) |
latitude |
double | yes | |
longitude |
double | yes |
fmcsa_carriers · table¶
FMCSA Company Census File — one row per USDOT-registered motor carrier (~4.47M rows), carrying registration, fleet size (drivers, CDL drivers, power/truck/bus units), operation type, hazmat authorization, and (for carriers that received a compliance review) the assigned safety rating and a per-carrier recordable_crash_rate. Event-level crash/inspection/ out-of-service records are NOT on this file (only ~54K carriers are ever rated); they publish as separate per-event SMS datasets (SMS Input - Crash 4wxs-vbns / aayw-vxb3, SMS Input - Inspection rbkj-cgst) and would be their own raw tables + a rollup view, per the one-source-per-table rule. Bulk CSV export of DOT Socrata dataset az4n-8mr2 — the whole set is downloaded in one unpaginated request and the partition overwritten each run, so this is a snapshot. Source: data.transportation.gov/api/views/az4n-8mr2/rows.csv?accessType=DOWNLOAD. To reach a carrier's cross-schema identity FROM another schema rather than by name, join ref.canonical_org_entity on fmcsa_dot_number = dot_number — that table carries one foreign key per source, so the carrier's LEI/SEC CIK and its dot_number sit in the same row and the join is exact. Matching carrier_name as text (including against sec.filing_metadata) finds the wrong entities and misses carriers filing under a differently-worded name.
| Column | Type | Null | Description |
|---|---|---|---|
dot_ |
string | no | USDOT number — PK |
carrier_ |
string | yes | Legal carrier name — for the exact cross-schema join use ref.canonical_org_entity.fmcsa_dot_number = dot_number, not a name match |
dba_ |
string | yes | Doing-business-as name (often blank) |
phy_ |
string | yes | Principal place of business — city |
state_ |
string | yes | Principal office state (USPS abbr; FK component to geo.state_ref) |
phy_ |
string | yes | Principal place of business — ZIP |
business_ |
string | yes | Business organization (CORPORATION / LLC / SOLE PROPRIETOR / ...) |
classdef |
string | yes | Carrier classification (semicolon multi-value, e.g. PRIVATE PROPERTY;AUTHORIZED FOR HIRE) |
operation_ |
string | yes | Operation classification (A=Interstate, B=Intrastate Hazmat, C=Intrastate Non-Hazmat) |
safety_ |
string | yes | Safety rating (S=Satisfactory, C=Conditional, U=Unsatisfactory; blank unless a compliance review occurred) |
safety_ |
date | yes | Date of the most recent safety rating |
review_ |
date | yes | Date of the most recent compliance review |
total_ |
integer | yes | Number of drivers |
total_ |
integer | yes | Number of CDL drivers |
power_ |
integer | yes | Power units (trucks and tractors) |
truck_ |
integer | yes | Truck units |
bus_ |
integer | yes | Bus units |
hazmat_ |
string | yes | Authorized to transport hazardous materials (Y/N) |
recordable_ |
double | yes | Crashes per million miles, FMCSA's own computed field — NOT populated for the whole carrier census. FMCSA computes it only for a carrier with a compliance review or a reported mileage figure on file, which is 20% of active carriers (447,289 of 2,236,332, measured live 2026-09-10) — a caller must not treat a non-null rate as representative of the other 80%, since carriers with a compliance review skew toward ones FMCSA already had reason to look at. 999.0/999.99/999.999 are FMCSA's own placeholder sentinels for "not computed" (489 rows, measured live) and are excluded here rather than left as data — a naive AVG or top-N over the raw field is dominated by them. Values above 900 that are NOT one of those three exact sentinels (a handful of rows in the 909-954 range) are real: an extremely low-mileage carrier can genuinely compute to a rate in that range and is not filtered out. |
mcs150_ |
long | yes | Annual vehicle miles traveled reported on the MCS-150 |
mcs150_ |
integer | yes | Year of the reported MCS-150 mileage |
status_ |
string | yes | Carrier record status code (A=Active, I=Inactive, ...) |
faa_aircraft_master · table¶
FAA MASTER.txt — one row per registered aircraft (~314K), keyed by N-number. Faithful recreation of the master file: registration, address, airworthiness/certificate dates, Mode-S transponder codes, fractional ownership, kit build, and the reference/engine join codes. Snapshot. Source: registry.faa.gov/database/ReleasableAircraft.zip (MASTER.txt).
| Column | Type | Null | Description |
|---|---|---|---|
n_ |
string | no | FAA N-number / tail number, canonical N-prefixed form (e.g. N100) — PK; join target for airline_ontime.tail_number and ntsb_aviation_accidents.aircraft_n_number |
serial_ |
string | yes | Manufacturer serial number |
mfr_ |
string | yes | 7-char Aircraft Mfr/Model/Series code (FK to faa_aircraft_reference.code) |
eng_ |
string | yes | 5-char engine Mfr/Model code (FK to faa_engine_reference.code) |
year_ |
integer | yes | Year of manufacture |
type_ |
string | yes | Registrant type code (1=Individual, 3=Corporation, 5=Government, 7=LLC, ...) |
registrant_ |
string | yes | Registered owner name |
street |
string | yes | Registrant street address |
street2 |
string | yes | Registrant street address line 2 |
city |
string | yes | Registrant city |
state_ |
string | yes | Registrant state (USPS abbr; FK to geo.state_ref) |
zip_ |
string | yes | Registrant ZIP code |
region |
string | yes | FAA region code (internal, not census) |
county_ |
string | yes | County code (3-digit FIPS county within state, US records) |
country |
string | yes | Country code (US = domestic) |
last_ |
date | yes | Date of last registration action |
cert_ |
date | yes | Certificate issue date |
certification |
string | yes | Airworthiness classification + approved operations (packed code) |
type_ |
string | yes | Aircraft type code (denormalized; see faa_aircraft_reference.type_acft) |
type_ |
string | yes | Engine type code (denormalized; see faa_aircraft_reference.type_eng) |
status_ |
string | yes | Registration status code (V=Valid, R=pending, ...) |
mode_ |
string | yes | Mode-S transponder code (octal) |
fract_ |
string | yes | Fractional ownership indicator (Y/blank) |
airworthiness_ |
date | yes | Date of original airworthiness certificate |
other_ |
string | yes | Additional registrant name 1 |
other_ |
string | yes | Additional registrant name 2 |
other_ |
string | yes | Additional registrant name 3 |
other_ |
string | yes | Additional registrant name 4 |
other_ |
string | yes | Additional registrant name 5 |
expiration_ |
date | yes | Registration expiration date |
unique_ |
string | yes | FAA stable unique aircraft id |
kit_ |
string | yes | Kit manufacturer (amateur-built) |
kit_ |
string | yes | Kit model (amateur-built) |
mode_ |
string | yes | Mode-S / ICAO 24-bit address (hex; ADS-B flight-tracking join key) |
faa_aircraft_reference · table¶
FAA ACFTREF.txt — aircraft reference file, one row per Mfr/Model/Series code (~94K): manufacturer, model, aircraft/engine type, category, engine and seat counts, weight class, cruising speed, type-certificate holder. Faithful recreation; joined from faa_aircraft_master on mfr_mdl_code. Source: registry.faa.gov/database/ReleasableAircraft.zip (ACFTREF.txt).
| Column | Type | Null | Description |
|---|---|---|---|
code |
string | no | 7-char Aircraft Mfr/Model/Series code — PK |
mfr |
string | yes | Manufacturer name |
model |
string | yes | Model / series name |
type_ |
string | yes | Aircraft type code (4=Fixed wing single, 5=Fixed wing multi, 6=Rotorcraft, ...) |
type_ |
string | yes | Engine type code (1=Reciprocating, 4=Turbo-jet, 5=Turbo-fan, 10=Electric, ...) |
ac_ |
string | yes | Aircraft category code (1=Land, 2=Sea, 3=Amphibian) |
build_ |
string | yes | Builder certification (0=Type Certificated, 1=Not TC, 2=Light Sport) |
no_ |
integer | yes | Number of engines |
no_ |
integer | yes | Maximum number of seats |
ac_ |
string | yes | Weight class (CLASS 1 <=12499 lb, CLASS 2, CLASS 3 20000+, CLASS 4 UAV) |
speed |
integer | yes | Average cruising speed (mph) |
tc_ |
string | yes | Type Certificate data sheet |
tc_ |
string | yes | Type Certificate data holder |
faa_engine_reference · table¶
FAA ENGINE.txt — engine reference file, one row per engine Mfr/Model code (~5K): manufacturer, model, engine type, horsepower, thrust. Faithful recreation; joined from faa_aircraft_master on eng_mfr_mdl. Source: registry.faa.gov/database/ReleasableAircraft.zip (ENGINE.txt).
| Column | Type | Null | Description |
|---|---|---|---|
code |
string | no | 5-char engine Mfr/Model code — PK |
mfr |
string | yes | Engine manufacturer name |
model |
string | yes | Engine model name |
engine_ |
string | yes | Engine type code (1=Reciprocating, 4=Turbo-jet, 5=Turbo-fan, 10=Electric, ...) |
horsepower |
integer | yes | Rated horsepower (piston/turboprop) |
thrust |
integer | yes | Rated thrust in pounds (jet) |
ntsb_aviation_accidents · table¶
NTSB aviation accident & incident database — one row per aircraft involved in an event, with injury severity and fatal/serious/minor injury counts, aircraft damage level, FAR operating part, phase-of-flight code, probable-cause narrative, and event lat/lon. NTSB's own avall.zip is documented as spanning 1982-present, but the actual MIN(event_year) in this table should be checked directly (SELECT MIN(event_year), MAX(event_year), COUNT(*) FROM ... — there is no observedCoverage block here since this table has no year= partition to anchor one) rather than assumed from the source's nominal range. The download (avall.zip, ~95MB) is a single Microsoft Access database (avall.mdb, ~553MB) read in-JVM with Jackcess by NtsbAviationTransformer: the aircraft table (grain ev_id + Aircraft_Key) is streamed and joined to events (ev_id) and the narratives.narr_cause probable-cause text. The MDB has no county column, so only state_fips is derived (from USPS ev_state). Snapshot: the whole MDB is re-ingested and the partition overwritten each run. event_year is a column (not a partition) since one file carries all years; aircraft_n_number joins to faa_aircraft_master.n_number. Source: data.ntsb.gov/avdata/avall.zip.
| Column | Type | Null | Description |
|---|---|---|---|
event_ |
string | no | NTSB event id (ev_id) — PK component |
aircraft_ |
integer | no | Aircraft sequence within the event (Aircraft_Key) — PK component |
event_ |
integer | yes | Year of the event |
event_ |
date | yes | Date of the accident/incident |
event_ |
string | yes | Accident / Incident (decoded from ev_type) |
aircraft_ |
string | yes | Aircraft tail number, canonical N-prefixed (regis_no; FK to faa_aircraft_master.n_number) |
aircraft_ |
string | yes | Aircraft manufacturer (acft_make) |
aircraft_ |
string | yes | Aircraft model (acft_model) |
aircraft_ |
string | yes | Aircraft category code (acft_category; e.g. AIR, HELI) |
far_ |
string | yes | FAR operating part (091, 121, 135, ...) — operation type |
carrier_ |
string | yes | Operator/carrier name (oper_name) |
city |
string | yes | Event city (ev_city) |
state_ |
string | yes | Event state (USPS abbr; FK component to geo.state_ref) |
state_ |
string | yes | 2-digit state FIPS code (FK to geo.states) |
country |
string | yes | Event country code (ev_country) |
airport_ |
string | yes | Nearest airport id (ev_nr_apt_id; null for en-route) |
airport_ |
string | yes | Nearest airport name (apt_name) |
injury_ |
string | yes | Highest injury level (Fatal / Serious / Minor / None; decoded) |
fatal_ |
integer | yes | Total fatalities (inj_tot_f) |
serious_ |
integer | yes | Total serious injuries (inj_tot_s) |
minor_ |
integer | yes | Total minor injuries (inj_tot_m) |
aircraft_ |
string | yes | Aircraft damage (Destroyed / Substantial / Minor / None; decoded) |
phase_ |
integer | yes | NTSB phase-of-flight code (phase_flt_spec; raw code, not decoded) |
latitude |
double | yes | Event latitude (dec_latitude, WGS84) |
longitude |
double | yes | Event longitude (dec_longitude, WGS84) |
probable_ |
string | yes | NTSB probable-cause narrative (narr_cause, truncated to 4000 chars) |
cfs_shipments · table¶
Census/BTS Commodity Flow Survey 2017 Public Use File (PUF) — one row per sampled shipment (~5.98M), the shipment-level microdata behind every CFS cross-tab. Origin/destination state + CFS area, SCTG commodity, mode, shipper NAICS, value ($), weight (lb), great-circle + routed distance (miles), and WGT_FACTOR (the tabulation weight: SUM(measure * wgt_factor) estimates the population total). All published cross-tabs (origin x dest x commodity x mode, by-NAICS, by-distance, ...) are SQL views over this one table (never Java) — e.g. the bts_freight_flows view. Aggregates are sample-weighted estimates and approximate the official CFS tables. Bulk CSV export of BTS Socrata y9wr-xk52; snapshot, partition overwritten each run. Source: data.bts.gov/api/views/y9wr-xk52/rows.csv.
| Column | Type | Null | Description |
|---|---|---|---|
shipmt_ |
string | no | Shipment identifier — PK |
survey_ |
integer | no | CFS survey year (this PUF file is 2017) |
orig_ |
string | yes | Origin state FIPS (FK to geo.state_ref) |
orig_ |
string | yes | Origin CFS area code (state-MA) |
dest_ |
string | yes | Destination state FIPS (FK to geo.state_ref) |
dest_ |
string | yes | Destination CFS area code (state-MA) |
naics |
string | yes | Shipper NAICS code |
quarter |
integer | yes | Quarter of shipment (1-4) |
sctg_ |
string | yes | SCTG commodity code, zero-padded to 2 digits (FK to cfs_sctg_ref.sctg_code for single non-suppressed codes; a "NN-NN" value is a confidentiality-collapsed range with no single ref row) |
mode_ |
string | yes | CFS transport mode code, zero-padded to 2+ digits (raw; some recoded for confidentiality; FK to cfs_mode_ref.mode_code) |
shipmt_ |
double | yes | Shipment value (USD) |
shipmt_ |
double | yes | Shipment weight (pounds) |
dist_ |
double | yes | Great-circle distance origin->destination (miles) |
dist_ |
double | yes | Routed distance origin->destination (miles) |
temp_ |
string | yes | Temperature-controlled shipment (true/false) |
export_ |
string | yes | Export shipment (true/false) |
export_ |
string | yes | Export final destination country indicator |
hazmat |
string | yes | Hazardous material code (N = not hazmat) |
wgt_ |
double | yes | Shipment tabulation weighting factor (multiply measures by this for population estimates) |
cfs_sctg_ref · table¶
SCTG (Standard Classification of Transported Goods) code list — Appendix A-3 of the 2017 CFS PUF Data Users Guide, the cfs_shipments.sctg_code lookup. Census/BTS publish this only as a PDF table (no CSV/XLSX distribution), parsed here via CfsSctgRefTransformer. 43 rows: the 41 detailed 2-digit codes, "43" (mixed freight), and "00" (suppressed). sctg_group is populated only on the first code of a confidentiality-collapsed range (e.g. "01" carries group "01-05"); cfs_shipments.sctg_code itself can also independently hold the collapsed "NN-NN" range value directly, which has no matching single row here — that is expected, not a join defect (see the sctg_code column comment on cfs_shipments). 2017-vintage, one-time reference data; Census has not revised this appendix since.
| Column | Type | Null | Description |
|---|---|---|---|
sctg_ |
string | no | 2-digit SCTG code (PK; "00" = suppressed, "43" = mixed freight) |
description |
string | no | Official SCTG commodity description |
sctg_ |
string | yes | Confidentiality-collapsed SCTG group range this code heads (e.g. "01-05"), only where the appendix gives one |
cfs_mode_ref · table¶
Mode of transportation code list — Appendix A-4 of the 2017 CFS PUF Data Users Guide, the cfs_shipments.mode_code lookup. Parsed via CfsModeRefTransformer from the same PDF as cfs_sctg_ref (no CSV/XLSX distribution exists). 21 rows: the 20 detailed mode codes (e.g. "04" for-hire truck, "06" rail, "101" multiple waterways) plus "00" (suppressed). 2017-vintage, one-time reference data; Census has not revised this appendix since.
| Column | Type | Null | Description |
|---|---|---|---|
mode_ |
string | no | CFS mode code (PK; "00" = suppressed) |
description |
string | no | Official mode-of-transportation description |
bts_port_teu · table¶
Monthly container throughput (TEUs) for the Top-10 U.S. container ports, from BTS's Port Performance Freight Statistics Program (Socrata rd72-aq8r, "Monthly TEU Data"). Melted from the source's one-row-per-month/one-column-per-port layout into one row per (port, month). This is the best freely-ingestible port-level container-volume series found — the industry-standard NRF/Hackett Global Port Tracker has no free bulk-downloadable time series, only point figures in press releases (confirmed independently by two arms in Defect Register D-109). NOT a currently-updated series: the source dataset itself stops at October 2022 (46 months from Jan 2019) and has not been refreshed since — verified live 27 Aug 2026. Real historical data for that window, not a live/current-era proxy; a national customs-value proxy (econ.trade_imports) remains the only current-era option.
| Column | Type | Null | Description |
|---|---|---|---|
report_ |
date | no | First of month |
port_ |
string | no | Source column name for this port (e.g. "los_angeles_ca") |
port_ |
string | yes | Human-readable port name |
teu |
double | yes | Twenty-foot equivalent units handled that month |
bridges · table¶
FHWA National Bridge Inventory — one row per raw NBI record per annual data-year snapshot, NOT one row per bridge: the source file commingles primary bridge records, culvert records, and border/jointly-owned-structure secondary records under one row shape (see record_type). Filter to record_type='1' to match FHWA's own published national bridge count. Deck/superstructure/substructure condition ratings (0-9, N), FHWA's own precomputed bridge_condition (Good/Fair/Poor) and lowest_rating summary fields, location, year built/reconstructed, traffic, and improvement-cost fields (bridge/roadway/total, plus year_of_imp) for federal-spending comparisons. The "delimited" national file uses a single-quote text qualifier, not RFC4180 double quote, so source.response.quoted is false: a handful of free-text columns (e.g. features_desc, facility_carried) carry literal leading/trailing single quotes that this table does not strip — harmless for the numeric/coded columns this table curates — and any stray literal " in free text (an apostrophe mistyped as one, an inch mark) is read as ordinary text instead of an RFC4180 quote, which would otherwise merge that record with the next line and desync every column in both. decimal_latitude/decimal_longitude are computed from the source's packed DDMMSS.ss / DDDMMSS.ss fields (Items 16/17) using length-relative substring extraction (minutes/seconds anchored to the end of the string, degrees to whatever remains at the front) rather than fixed character positions, so a digit-count change at the front of the field (e.g. a leading zero) doesn't shift the split; county_code is zero-padded back to 3 digits for the same leading-zero-loss reason numeric fields generally have. LAT_016/LONG_017 are also listed in source.response.rawFields to stop the generic CSV ingest from routing them through numeric inference at all — undeclared as their own column, they'd otherwise be parsed as a Long/Double and re-serialized before this expression ever runs, which can append a trailing .0 that length-relative extraction can't distinguish from real digits. The raw LAT_016/LONG_017 fields are not carried through as their own output columns. Source: fhwa.dot.gov/bridge/nbi/{year}allstatesallrecsdel.zip (see fhwa.dot.gov/bridge/nbi/ascii.cfm).
| Column | Type | Null | Description |
|---|---|---|---|
state_ |
string | yes | 2-digit NBI/FIPS state code (FK to geo.state_ref) |
structure_ |
string | no | Structure number, unique within state — PK component |
record_ |
string | yes | NBI Item 5A: '1'=primary bridge inventory record, '2'=culvert record, a letter (A-Z)=secondary/reference record for a border or jointly-owned structure (see OTHER_STATE_CODE_098A/OTHR_STATE_STRUC_NO_099, not yet carried through). This table's raw source file (fhwa.dot.gov/bridge/nbi) commingles all three kinds under one row shape; FHWA's own published national bridge count (e.g. 623,218 for 2024) counts record_type='1' only — WHERE record_type='1' reproduces that figure to within 0.1%. Confirmed live: culverts + secondary records account for the ~117K-row gap between this table's raw COUNT(*) and FHWA's headline total. |
county_ |
string | yes | 3-digit county code component (FK component to geo.counties via state_code+county_code) |
facility_ |
string | yes | |
location |
string | yes | |
features_ |
string | yes | Feature intersected (waterway, road, railroad, etc.) |
decimal_ |
double | yes | Decoded from packed NBI Item 16 (DDMMSS.ss). Minutes/seconds are taken from the right end of the string rather than a fixed offset, so a leading zero the generic CSV ingest's numeric inference would otherwise strip from a purely-numeric field doesn't shift a fixed-position split. LAT_016 is also listed in source.response.rawFields (see the table comment) so it reaches this expression as the exact source string, not a re-serialized number. |
decimal_ |
double | yes | Decoded from packed NBI Item 17 (DDDMMSS.ss); negated (US bridges are West). Length-relative extraction — see decimal_latitude's comment; longitude degrees is normally 3 digits (leading zero for <100°), which is why a fixed SUBSTRING(1,3) isn't safe here. LONG_017 is also listed in source.response.rawFields for the same reason as LAT_016. |
year_ |
integer | yes | |
year_ |
integer | yes | |
traffic_ |
integer | yes | |
avg_ |
integer | yes | |
year_ |
integer | yes | |
deck_ |
string | yes | NBI condition code 0-9 (9=excellent) or N (not applicable) |
superstructure_ |
string | yes | |
substructure_ |
string | yes | |
culvert_ |
string | yes | |
structural_ |
string | yes | |
bridge_ |
string | yes | FHWA's Good/Fair/Poor rollup. FHWA's own precomputed BRIDGE_CONDITION field does not exist in the raw NBI file before 2019 (confirmed against the cached 2017/2018 files — the column is simply absent, not blank), which left this NULL on all 615,576 2017 rows and all 616,595 2018 rows. Computed here from the four component ratings using FHWA's own published classification (Poor: any of deck/superstructure/substructure/culvert <= 4; Good: all >= 7; Fair: otherwise) when the raw field is missing or invalid — validated against 617,084 record_type=1 rows in 2019, where both the raw field and the components are present: 100% agreement, zero mismatches. Also guards against a single malformed 2024 row that carried "42" (that year's state_code, apparently shifted into this field) by restricting the raw field to its only 4 legal values before trusting it, falling through to the computed rollup otherwise. |
lowest_ |
integer | yes | Lowest of the four component condition ratings. Same 2017/2018 absence as bridge_condition (LOWEST_RATING is not a column in the raw NBI file before 2019) - computed from the components with the identical formula when the raw field is missing. A value of 99 means every component was itself missing/not applicable for that structure, not a genuinely high rating - filter it out of any MIN/aggregate. |
deck_ |
double | yes | |
structure_ |
double | yes | |
main_ |
integer | yes | |
date_ |
string | yes | MMYYYY per the NBI coding guide |
inspect_ |
integer | yes | |
bridge_ |
double | yes | |
roadway_ |
double | yes | |
total_ |
double | yes | |
year_ |
integer | yes | |
owner |
string | yes | |
functional_ |
string | yes | |
highway_ |
string | yes | |
scour_ |
string | yes | Scour vulnerability rating code (safety-critical for waterway crossings) |
phmsa_hazardous_liquid_incidents · table¶
PHMSA hazardous liquid pipeline accident reports (Form PHMSA F 7000-1), one row per accident, January 2010-present. phmsa.dot.gov itself 403s automated fetches; this pulls the identical bulk file from data.transportation.gov's open-data catalog instead — the catalog entry (resource 27nc-rsge) is a Socrata "href" pointer, not a queryable Socrata table, so the fetch targets its file attachment directly rather than the Socrata row API. Curated to a subset of the source's ~650 columns (safety outcome, cost, cause, and identity fields — not the full forensic investigation detail). Confirmed live: this snapshot is already deduplicated to one row per REPORT_NUMBER (no repeated SUPPLEMENTAL_NUMBER revisions), unlike the multi-supplemental versioning PHMSA's other endpoints can carry. For per-mile safety-rate normalization, join to phmsa_hazardous_liquid_mileage on operator_id + report_year. Only the 2010-present era is loaded; PHMSA also publishes three earlier eras (1986-2001, 2004-2009, pre-1986) under an incompatible pre-2010 form revision, not ingested here.
| Column | Type | Null | Description |
|---|---|---|---|
report_ |
string | no | PHMSA report number (PK) |
report_ |
string | yes | |
activity_ |
integer | yes | Year of the incident (IYEAR) |
report_ |
string | yes | |
operator_ |
string | yes | PHMSA operator identifier — join key to phmsa_hazardous_liquid_mileage.operator_id |
operator_ |
string | yes | |
operator_ |
string | yes | 2-letter USPS state code of the operator's address (not necessarily the incident location) |
local_ |
string | yes | Local date/time the incident occurred |
location_ |
double | yes | |
location_ |
double | yes | |
onshore_ |
string | yes | 2-letter USPS state code of the incident location (onshore incidents only) |
onshore_ |
string | yes | |
on_ |
string | yes | |
commodity_ |
string | yes | |
system_ |
string | yes | |
unintentional_ |
double | yes | |
intentional_ |
double | yes | |
recovered_ |
double | yes | |
fatalities_ |
integer | yes | Total fatalities (PHMSA's own precomputed sum across employee/contractor/emergency-responder/general-public) |
injuries_ |
integer | yes | Total injuries (PHMSA's own precomputed sum across employee/contractor/emergency-responder/general-public) |
ignite_ |
string | yes | |
explode_ |
string | yes | |
cause |
string | yes | PHMSA root-cause category (e.g. CORROSION, MATERIAL/WELD/EQUIP FAILURE, INCORRECT OPERATION, NATURAL FORCE DAMAGE, EXCAVATION DAMAGE, OTHER OUTSIDE FORCE DAMAGE, ALL OTHER CAUSES) |
cause_ |
string | yes | |
est_ |
double | yes | Estimated cost of operator-paid public/private property damage (USD) |
est_ |
double | yes | |
est_ |
double | yes | |
est_ |
double | yes | |
est_ |
double | yes | |
pipe_ |
string | yes |
phmsa_hazardous_liquid_mileage · table¶
PHMSA hazardous liquid pipeline operators' annual report (Form PHMSA F 7000-1.1), Part A (operator identity) through Part E (pipe-age distribution) fields, one row per (report_year, operator, commodity) — the per-mile normalization denominator for phmsa_hazardous_liquid_incidents (join on operator_id + report_year). Same data.transportation.gov bulk-file route as the incidents table (catalog resource aemm-7pyq, an "href" pointer; this fetches its file attachment directly). The source ZIP splits each year's annual report into ~11 "Part" CSVs (Part A-E, F-G, H, I, ... R); only the Part A-E file is ingested here, since it alone carries total_miles (Part D) and mileage-by-installation-decade (Part E) — the fields this warehouse needs. Confirmed identical column layout across 2017-2024 (the years the source publishes as separate Part-CSVs; extractPattern merges all matching entries into one table). 2010-2016 exist only as whole-workbook XLSX files (one per year, sheet "HL AR Part A to E") rather than separate Part-CSVs, but confirmed live to carry the exact same 88-column header as the 2017+ era — a PhmsaHazardousLiquidMileageHistoricalTransformer responseTransformer parses those years via POI and appends them to the 2017+ CSV text extractPattern already produces, so this table now covers 2010-present.
| Column | Type | Null | Description |
|---|---|---|---|
report_ |
integer | yes | |
report_ |
string | yes | |
operator_ |
string | yes | PHMSA operator identifier — join key to phmsa_hazardous_liquid_incidents.operator_id |
operator_ |
string | yes | |
operator_ |
string | yes | 2-letter USPS state code of the operator's address |
commodity |
string | yes | |
hca_ |
double | yes | Miles in High Consequence Areas, onshore (Part B) |
hca_ |
double | yes | |
hca_ |
double | yes | |
total_ |
double | yes | Total regulated pipeline miles operated (Part D) — the per-mile safety-rate denominator |
total_ |
double | yes | |
total_ |
double | yes | |
miles_ |
double | yes | |
miles_ |
double | yes | |
miles_ |
double | yes | |
miles_ |
double | yes | |
report_ |
string | yes | e.g. INITIAL, AMENDED — later amended reports for the same (report_year, operator) supersede earlier ones; not deduplicated here |
phmsa_gas_distribution_incidents · table¶
PHMSA gas distribution pipeline incident reports (Form PHMSA F 7100.1), one row per incident, January 2010-present. Same data.transportation.gov open-data catalog route as phmsa_hazardous_liquid_incidents (catalog resource 27nc-rsge, the same multi-commodity "href" pointer entry; this fetches the Gas Distribution file attachment instead of the Hazardous Liquid one). Confirmed live: 1,550 rows, one per REPORT_NUMBER, no comma-padding rows (unlike the annual-report CSVs). Gas incidents report release volumes in thousand standard cubic feet (mcf) per Form field A7/A8, not barrels — unintentional_release_mcf/intentional_release_mcf are not comparable to phmsa_hazardous_liquid_incidents' _bbls columns. No offshore concept for local distribution systems (location_state_abbr/location_county_name only, unlike the onshore/offshore split gas transmission and hazardous liquid carry). Only the 2010-present era is loaded; PHMSA also publishes three earlier eras (1984-2004, 2004-2009 [sic, overlapping label on the source catalog], and 1970-mid1984) under incompatible earlier form revisions, not ingested here.
| Column | Type | Null | Description |
|---|---|---|---|
report_ |
string | no | PHMSA report number (PK) |
report_ |
string | yes | |
activity_ |
integer | yes | Year of the incident (IYEAR) |
report_ |
string | yes | |
operator_ |
string | yes | PHMSA operator identifier — join key to phmsa_gas_distribution_mileage.operator_id |
operator_ |
string | yes | |
operator_ |
string | yes | 2-letter USPS state code of the operator's address (not necessarily the incident location) |
local_ |
string | yes | Local date/time the incident occurred |
location_ |
double | yes | |
location_ |
double | yes | |
location_ |
string | yes | 2-letter USPS state code of the incident location — gas distribution systems are always onshore, no on/off-shore split |
location_ |
string | yes | |
commodity_ |
string | yes | |
system_ |
string | yes | |
unintentional_ |
double | yes | Volume released unintentionally, thousand standard cubic feet (mcf) — Form field A7 |
intentional_ |
double | yes | Volume released intentionally/controlled blowdown, mcf — Form field A8 |
fatalities_ |
integer | yes | Total fatalities (PHMSA's own precomputed sum across employee/contractor/emergency-responder/general-public) |
injuries_ |
integer | yes | Total injuries (PHMSA's own precomputed sum across employee/contractor/emergency-responder/general-public) |
ignite_ |
string | yes | |
explode_ |
string | yes | |
cause |
string | yes | PHMSA root-cause category |
cause_ |
string | yes | |
est_ |
double | yes | Estimated cost of operator-paid public/private property damage (USD) |
est_ |
double | yes | |
est_ |
double | yes | |
est_ |
double | yes | |
gas_ |
double | yes | Estimated dollar value of gas lost unintentionally — gas's analog to a liquid spill's environmental-cost field, since lost gas has no cleanup cost but does have a commodity value |
gas_ |
double | yes | |
pipe_ |
string | yes |
phmsa_gas_distribution_mileage · table¶
PHMSA gas distribution operators' annual report (Form PHMSA F 7100.1-1), one row per (report_year, operator, commodity) — the per-mile normalization denominator for phmsa_gas_distribution_incidents (join on operator_id + report_year). Same data.transportation.gov bulk-file route as phmsa_hazardous_liquid_mileage (catalog resource aemm-7pyq, the same multi-commodity "href" pointer; this fetches the Gas Distribution file attachment). Unlike the hazardous-liquid annual report, this source publishes one flat CSV per year (not split into lettered Parts), but the column set still drifts slightly year to year (278 cols in 2017-2022, 274 in 2023, 300 in 2024 — all differences are trailing excavation-damage-detail columns not used here); the ETL's zip-merge aligns columns by name across files with differing headers, not position, so this is safe. Confirmed live: the 2020-2024 files carry comma-only padding lines (81-145 per year) that parse into all-NULL rows without a rowFilter, same defect class as phmsa_hazardous_liquid_mileage. An operator can file more than one commodity row per year (Natural Gas, Propane Gas, Landfill Gas, Synthetic Gas, Hydrogen Gas), so report_number — not operator_id + report_year — is the unique key. total_services (individual customer service-line count) has no analog in the hazardous-liquid table; gas distribution systems are sized by service count as well as main mileage. 2010-2016 exist only as whole-workbook XLSX files (one per year, single sheet "GD AR
| Column | Type | Null | Description |
|---|---|---|---|
report_ |
integer | yes | |
report_ |
string | no | PHMSA report number (PK) — an operator may file multiple commodity rows per year, so this is the unique key, not operator_id + report_year |
operator_ |
string | yes | PHMSA operator identifier — join key to phmsa_gas_distribution_incidents.operator_id |
operator_ |
string | yes | |
operator_ |
string | yes | 2-letter USPS state code of the operator's office address |
commodity |
string | yes | Natural Gas, Propane Gas, Landfill Gas, Synthetic Gas, or Hydrogen Gas |
total_ |
double | yes | Total distribution main mileage operated, all materials combined — the per-mile safety-rate denominator |
total_ |
double | yes | Total individual customer service lines — gas-distribution-specific system-size denominator, no analog in the hazardous-liquid or gas-transmission mileage tables |
miles_ |
double | yes | |
miles_ |
double | yes | |
miles_ |
double | yes | |
report_ |
string | yes | e.g. INITIAL, AMENDED — later amended reports for the same (report_year, operator) supersede earlier ones; not deduplicated here |
phmsa_gas_transmission_incidents · table¶
PHMSA gas transmission & gathering pipeline incident reports (Form PHMSA F 7100.2), one row per incident, January 2010-present. Same data.transportation.gov open-data catalog route as phmsa_hazardous_liquid_incidents (catalog resource 27nc-rsge, the same multi-commodity "href" pointer entry; this fetches the Gas Transmission & Gathering file attachment instead). Confirmed live: 1,996 rows, one per REPORT_NUMBER, no comma-padding rows. Like gas distribution, release volumes are in thousand standard cubic feet (mcf), not barrels (unintentional_release_mcf/intentional_release_mcf, not _bbls). Unlike gas distribution, transmission pipelines can run offshore, so this table carries the same on_off_shore/onshore_state_abbr/onshore_county_name split as phmsa_hazardous_liquid_incidents. Only the 2010-present era is loaded; PHMSA also publishes three earlier eras (1970-mid1984, mid1984-2001, 2002-2009) under incompatible earlier form revisions, not ingested here.
| Column | Type | Null | Description |
|---|---|---|---|
report_ |
string | no | PHMSA report number (PK) |
report_ |
string | yes | |
activity_ |
integer | yes | Year of the incident (IYEAR) |
report_ |
string | yes | |
operator_ |
string | yes | PHMSA operator identifier — join key to phmsa_gas_transmission_mileage.operator_id |
operator_ |
string | yes | |
operator_ |
string | yes | 2-letter USPS state code of the operator's address (not necessarily the incident location) |
local_ |
string | yes | Local date/time the incident occurred |
location_ |
double | yes | |
location_ |
double | yes | |
onshore_ |
string | yes | 2-letter USPS state code of the incident location (onshore incidents only) |
onshore_ |
string | yes | |
on_ |
string | yes | |
commodity_ |
string | yes | |
system_ |
string | yes | |
unintentional_ |
double | yes | Volume released unintentionally, thousand standard cubic feet (mcf) |
intentional_ |
double | yes | Volume released intentionally/controlled blowdown, mcf |
fatalities_ |
integer | yes | Total fatalities (PHMSA's own precomputed sum across employee/contractor/emergency-responder/general-public) |
injuries_ |
integer | yes | Total injuries (PHMSA's own precomputed sum across employee/contractor/emergency-responder/general-public) |
ignite_ |
string | yes | |
explode_ |
string | yes | |
cause |
string | yes | PHMSA root-cause category |
cause_ |
string | yes | |
est_ |
double | yes | Estimated cost of operator-paid public/private property damage (USD) |
est_ |
double | yes | |
est_ |
double | yes | |
est_ |
double | yes | |
gas_ |
double | yes | Estimated dollar value of gas lost unintentionally — gas's analog to a liquid spill's environmental-cost field |
gas_ |
double | yes | |
pipe_ |
string | yes |
phmsa_gas_transmission_mileage · table¶
PHMSA gas transmission & gathering operators' annual report (Form PHMSA F 7100.2-1), Part A-D fields, one row per (report_year, operator, commodity) — the per-mile normalization denominator for phmsa_gas_transmission_incidents (join on operator_id + report_year). Same data.transportation.gov bulk-file route as phmsa_hazardous_liquid_mileage (catalog resource aemm-7pyq, the same multi-commodity "href" pointer; this fetches the Gas Transmission & Gathering file attachment). The source ZIP splits each year's annual report into ~12-14 "Part" CSVs (Part A-D, F-G, H, I, ... T); only the Part A-D file is ingested here, since it alone carries total_miles (Part D) and the HCA mileage summary (Part B) — the fields this warehouse needs. Confirmed identical column layout (154 cols) across 2017-2024. Unlike the gas distribution and hazardous-liquid annual reports, this form has no Part E installation-decade mileage breakdown at all (confirmed: no PARTE-prefixed columns anywhere in the 2024 zip), so miles_installed_ columns are not carried here. total_miles (PARTDTOTALMILES) is the sum of separately-reported transmission-only and gathering-only mileage (PARTDTTOTAL + PARTDGTOTAL, confirmed live), both also captured here since the two pipeline types differ operationally and are usually analyzed separately. Confirmed live: comma-only padding lines exist here too (1-16 per year, fewer than the other annual reports but the same defect), requiring the same OPERATOR_ID rowFilter. An operator can file more than one commodity row per year (Natural Gas, Landfill Gas, Hydrogen Gas, and assorted "Other Gas-" industrial gases), so report_number is the unique key, not operator_id + report_year. 2010-2016 exist only as whole-workbook XLSX files (one per year, sheet "GT AR Part A to D") rather than separate per-year Part-CSVs; a PhmsaGasTransmissionMileageHistoricalTransformer responseTransformer parses those years via POI and appends them to the 2017+ CSV text extractPattern already produces, so this table now covers 2010-present. Confirmed live: the 2010-2011 workbooks carry only 116 columns (vs. 154 for 2012+), but every target field this table ingests is present for the whole 2010-2016 span — the narrower layout only drops columns this table never used anyway.
| Column | Type | Null | Description |
|---|---|---|---|
report_ |
integer | yes | |
report_ |
string | no | PHMSA report number (PK) — an operator may file multiple commodity rows per year, so this is the unique key, not operator_id + report_year |
operator_ |
string | yes | PHMSA operator identifier — join key to phmsa_gas_transmission_incidents.operator_id |
operator_ |
string | yes | |
operator_ |
string | yes | 2-letter USPS state code of the operator's address |
commodity |
string | yes | |
hca_ |
double | yes | Miles in High Consequence Areas, onshore (Part B) |
hca_ |
double | yes | |
hca_ |
double | yes | |
total_ |
double | yes | Transmission-only pipeline miles (Part D), excludes gathering lines |
total_ |
double | yes | Gathering-only pipeline miles (Part D), excludes transmission lines |
total_ |
double | yes | Total regulated pipeline miles operated, transmission + gathering combined (Part D) — the per-mile safety-rate denominator |
report_ |
string | yes | e.g. INITIAL, AMENDED — later amended reports for the same (report_year, operator) supersede earlier ones; not deduplicated here |
rail_service_performance · table¶
STB EP 724 Rail Service Data — weekly Class I railroad service-performance filings required under 49 CFR 1250 (BNSF, CN, CP, CPKC, CSXT, KCS, NS, UP). Long format: one row per (railroad, measure, sub_measure, report week) — average train speed (mph), terminal dwell time (hours), average cars on line, dwell time at origin for unit trains, trains held per day (by cause), cars in revenue service not moved in 48+ hours, grain car orders/ loadings/past-due, coal unit train loadings actual vs. planned, and carloads originated/received by commodity category — each measure carries its own units/scale in measure_units/measure_scale, so ALWAYS filter on measure_name_analytics (mixing measures in an aggregate mixes incompatible units, e.g. mph with hours with car counts). sub_measure's meaning depends on the measure: train type, terminal name, region, or commodity. Delta by year; dataLag 0 (year == effective_year, essentially no publish lag). Source: opendata.stb.gov/api/v2/catalog/datasets/ep724-public-data.
| Column | Type | Null | Description |
|---|---|---|---|
railroad_ |
string | no | Class I railroad AAR reporting mark (BNSF, CN, CP, CPKC, CSXT, KCS, NS, UP) — PK component |
railroad_ |
string | yes | Standardized railroad name |
measure_ |
string | no | Standardized snake_case measure identifier — PK component. The ~21 distinct measures carry incompatible units/scales (see measure_units/ measure_scale on the same row); enumerate with SELECT DISTINCT measure_name_analytics, measure_name_full, measure_units. |
measure_ |
string | yes | Human-readable measure name as filed (e.g. "Average Train Speed") |
data_ |
integer | yes | STB internal data element number for the measure |
sub_ |
string | yes | Sub-classification as filed — PK component. Meaning depends on measure_name_analytics: train type (e.g. Grain, Intermodal) for speed / dwell-at-origin measures, terminal name for terminal dwell time, commodity for carloads, cause for train-holding measures. |
sub_ |
string | yes | Standardized/normalized version of sub_measure |
fact_ |
double | yes | Standardized numeric value for the measure (NULL where the filed value was non-numeric, e.g. n/a) |
measure_ |
string | yes | Unit of measure (e.g. mph, hours, cars) |
measure_ |
integer | yes | Scale factor applied to fact_value_analytics |
measure_ |
string | yes | Confidentiality designation (e.g. Public) |
report_ |
date | no | Start date of the weekly reporting period — PK component |
report_ |
date | yes | End date of the weekly reporting period |
report_ |
integer | yes | STB filing year (report_year_analytics; a report week can span into an adjacent calendar year) |
report_ |
string | yes | Filing frequency (weekly) |
airline_ontime_by_carrier_month · view¶
Monthly on-time summary by reporting carrier (nationwide, not by route): flight counts, average arrival delay, cancellation rate, and the share of departures delayed 15+ minutes (pct_dep_delayed_15). The headline punctuality rollup over airline_ontime.
View — columns are resolved by the query engine at runtime.
fatal_crashes_by_state_year · view¶
Fatal crashes, total fatalities, and pedestrians involved by state and year — the core FARS rollup over fatal_crashes, joinable to geo.states and census population for per-capita rates.
View — columns are resolved by the query engine at runtime.
transit_ridership_by_agency_year · view¶
Annual transit ridership by agency, mode, and state: unlinked passenger trips and vehicle revenue miles, summed from the monthly transit_ridership series.
View — columns are resolved by the query engine at runtime.
bts_freight_flows · view¶
Commodity Flow Survey freight flows — the origin-state x destination-state x SCTG commodity x mode estimate, aggregated from the cfs_shipments Public Use File by the tabulation weight (WGT_FACTOR). value_million = USD millions, tons_thousands = thousands of short tons (weight_lb / 2000), ton_miles_million = millions of ton-miles (tons x routed miles). These are sample-weighted estimates and approximate — not identical to — the official published CFS tables. Every other CFS cross-tab (by NAICS, by distance band, ...) is a sibling view over cfs_shipments; add as needed.
View — columns are resolved by the query engine at runtime.
faa_aircraft_registry · view¶
Friendly denormalized view of the FAA aircraft registry: faa_aircraft_master joined to faa_aircraft_reference (manufacturer / model / category / seats) and faa_engine_reference (engine make / model / horsepower / thrust), with the registrant-type, aircraft-type, engine-type, category and status codes decoded. n_number is surfaced as the full tail number (N-prefixed). Raw per-file detail (addresses, Mode-S codes, dates, kit build, other names) stays on faa_aircraft_master; other cross-tabs are sibling views. registrant_name is unstructured (no per-registrant id; n_number/unique_id are per-aircraft) for registrant_type != Individual (entity-type registrants). ref.canonical_org_entity carries it as an already-resolved identity (faa_registrant_name, with an LEI when matched); join there on the name rather than re-running a fuzzy match against gleif_entities.legal_name by hand.
View — columns are resolved by the query engine at runtime.