raw_responses_realtime and Iceberg marvia.raw_responses_realtime
Sources: hot-store SQL in src/marvia/store/hot.py, DuckDB SCHEMA_SQL in src/marvia/store.py, and Iceberg schema/partition spec in src/marvia/warehouse.py.
| Column | Real type(s) | Meaning |
|---|---|---|
id | SQLite INTEGER PRIMARY KEY AUTOINCREMENT; PostgreSQL BIGSERIAL PRIMARY KEY; DuckDB BIGINT PRIMARY KEY DEFAULT nextval(...); Iceberg LongType required | Monotonic persisted row identifier; the cold flush carries this id into Iceberg. |
feed_kind | SQLite/PostgreSQL TEXT; DuckDB VARCHAR; Iceberg StringType required; constrained to trip_updates, vehicle_positions, or alerts | Which GTFS-Realtime feed produced the row. |
captured_at | SQLite TEXT; PostgreSQL/DuckDB TIMESTAMPTZ; Iceberg TimestamptzType required | UTC time when the poll response was captured. |
feed_header_timestamp | SQLite TEXT; PostgreSQL/DuckDB TIMESTAMPTZ; Iceberg TimestamptzType | Publisher timestamp from the realtime feed header when Renfe sends one. |
request_url | SQLite/PostgreSQL TEXT; DuckDB VARCHAR; Iceberg StringType required | Exact Renfe feed URL requested. |
status_code | SQLite/PostgreSQL INTEGER with HTTP-range check; DuckDB USMALLINT; Iceberg IntegerType required | HTTP response status for the poll. |
body_json | SQLite TEXT; PostgreSQL JSONB; DuckDB JSON; Iceberg StringType required | JSON response body after the Malaga C1/C2 capture filter is applied. |
raw_payload | SQLite/PostgreSQL TEXT; DuckDB VARCHAR; Iceberg StringType required | Raw payload text after the same Malaga C1/C2 filter; used to preserve filtered raw fidelity. |
latency_ms | SQLite REAL; PostgreSQL DOUBLE PRECISION; DuckDB DOUBLE; Iceberg DoubleType required | Measured request latency in milliseconds. |
http_headers_json | SQLite TEXT; PostgreSQL JSONB; DuckDB JSON; Iceberg StringType required | Persisted HTTP response headers as JSON. |
captured_date | Iceberg-only StringType; Arrow writer marks it non-null | UTC date partition key derived from captured_at as YYYY-MM-DD. |
captured_hour | Iceberg-only IntegerType; Arrow writer marks it non-null | UTC hour partition key derived from captured_at, from 0 through 23. |