Skip to content

Observation schema

weather.observations() returns merged METAR/SPECI reports. The canonical schema.observation.merged.v1 record has 30 fields; the weather read also attaches local_standard_date, the local-standard-time day used by training and settlement joins.

Python DataFrames and TypeScript rows use snake_case. They are not yet the same contents, so inspect the returned schema before sharing a frozen contract across runtimes.

Field Type Notes
station string Canonical ICAO/ASOS id, for example KNYC
event_time_utc UTC timestamp string When the report is valid
observation_type enum METAR or SPECI
source string Bare row source: awc, iem, or ghcnh
local_standard_date date Derived local-standard-time day for this station

The merged report key is (station, event_time_utc, observation_type). When sources overlap, the fixed merge priority selects one survivor and the row keeps the source that actually won.

Field Unit Nullable
temp_c °C Yes
temp_f °F Yes
dewpoint_c °C Yes
dewpoint_f °F Yes

The SDK preserves the available precision. Integer settlement rounding belongs in the settlement recipe, not the stored observation.

Field Unit Nullable
wind_direction_degrees degrees true Yes
wind_speed_kt knots Yes
wind_gust_kt knots Yes

Variable winds can have a null direction.

Field Unit Notes
altimeter_inhg inHg Altimeter setting
sea_level_pressure_hpa hPa Sea-level pressure
visibility_miles statute miles Parsed report visibility
precipitation_in_1h inches Accumulation in the preceding hour

These measurements are nullable when the source report does not carry them.

Up to four layers are preserved:

Fields Notes
sky_cover_1sky_cover_4 CLR, FEW, SCT, BKN, OVC, VV, or null
sky_base_1_ftsky_base_4_ft Layer base in feet, nullable

Layer 1 is the lowest reported significant layer.

Field Notes
weather_codes Raw METAR weather-code string
peak_wind_gust_kt Peak gust in knots
peak_wind_direction_degrees Peak-wind direction
peak_wind_time Peak-wind timestamp
snow_depth_inches Snow depth
qc_field Upstream source quality marker
raw_metar Original METAR text when the source provides it

AWC’s structured JSON can leave raw_metar null. Do not assume every provider exposes the original bulletin text.

The 30 canonical merged-schema fields are:

  • identity/source: 4
  • temperature: 4
  • wind: 3
  • pressure/visibility/precipitation: 4
  • sky cover and bases: 8
  • weather/peak wind/snow/QC/raw text: 7

local_standard_date is the additional derived join column on weather.observations() output.

Common stale names and their 2.0 replacements:

1.x or pre-contract name 2.0
station_code station
observed_at event_time_utc
wind_dir_degrees wind_direction_degrees
sea_level_pressure_mb sea_level_pressure_hpa
precip_1hr_inches precipitation_in_1h
peak_wind_dir peak_wind_direction_degrees