Add electricity price ingestion and feature pipeline.
Introduce ENTSO-E data retrieval with layered caching, robust bidding-zone and missing-data handling, and persist model-ready features with detailed architecture/developer documentation. Made-with: Cursor
This commit is contained in:
@@ -0,0 +1,55 @@
|
||||
CREATE TABLE IF NOT EXISTS entsoe_api_cache (
|
||||
cache_key TEXT PRIMARY KEY,
|
||||
namespace TEXT NOT NULL,
|
||||
function_name TEXT NOT NULL,
|
||||
args_json JSONB NOT NULL,
|
||||
payload BYTEA NOT NULL,
|
||||
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
|
||||
expires_at TIMESTAMPTZ
|
||||
);
|
||||
|
||||
CREATE INDEX IF NOT EXISTS idx_entsoe_api_cache_namespace_fn
|
||||
ON entsoe_api_cache(namespace, function_name);
|
||||
|
||||
CREATE INDEX IF NOT EXISTS idx_entsoe_api_cache_expires_at
|
||||
ON entsoe_api_cache(expires_at);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS electricity_market_observations (
|
||||
country_code TEXT NOT NULL,
|
||||
delivery_start TIMESTAMPTZ NOT NULL,
|
||||
day_ahead_price DOUBLE PRECISION,
|
||||
load_forecast DOUBLE PRECISION,
|
||||
wind_forecast DOUBLE PRECISION,
|
||||
solar_forecast DOUBLE PRECISION,
|
||||
ingested_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
|
||||
PRIMARY KEY (country_code, delivery_start)
|
||||
);
|
||||
|
||||
CREATE INDEX IF NOT EXISTS idx_electricity_market_observations_delivery
|
||||
ON electricity_market_observations(delivery_start);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS electricity_price_features (
|
||||
country_code TEXT NOT NULL,
|
||||
delivery_start TIMESTAMPTZ NOT NULL,
|
||||
day_ahead_price DOUBLE PRECISION NOT NULL,
|
||||
load_forecast DOUBLE PRECISION NOT NULL,
|
||||
wind_forecast DOUBLE PRECISION NOT NULL,
|
||||
solar_forecast DOUBLE PRECISION NOT NULL,
|
||||
residual_load DOUBLE PRECISION NOT NULL,
|
||||
lagged_price DOUBLE PRECISION[] NOT NULL,
|
||||
lagged_residual_load DOUBLE PRECISION[] NOT NULL,
|
||||
hour_of_day_sin DOUBLE PRECISION NOT NULL,
|
||||
hour_of_day_cos DOUBLE PRECISION NOT NULL,
|
||||
weekday_sin DOUBLE PRECISION NOT NULL,
|
||||
weekday_cos DOUBLE PRECISION NOT NULL,
|
||||
month_sin DOUBLE PRECISION NOT NULL,
|
||||
month_cos DOUBLE PRECISION NOT NULL,
|
||||
feature_version TEXT NOT NULL DEFAULT 'v1',
|
||||
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
|
||||
PRIMARY KEY (country_code, delivery_start, feature_version),
|
||||
CONSTRAINT chk_lagged_price_len CHECK (CARDINALITY(lagged_price) = 24),
|
||||
CONSTRAINT chk_lagged_residual_load_len CHECK (CARDINALITY(lagged_residual_load) = 24)
|
||||
);
|
||||
|
||||
CREATE INDEX IF NOT EXISTS idx_electricity_price_features_delivery
|
||||
ON electricity_price_features(delivery_start);
|
||||
Reference in New Issue
Block a user