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
56 lines
2.1 KiB
SQL
56 lines
2.1 KiB
SQL
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);
|