diff --git a/internal/server/postgres/dataserverimpl_test.go b/internal/server/postgres/dataserverimpl_test.go index d52b5ea..6a4a946 100644 --- a/internal/server/postgres/dataserverimpl_test.go +++ b/internal/server/postgres/dataserverimpl_test.go @@ -921,10 +921,10 @@ func TestGetForecastAsTimeseries(t *testing.T) { } resp, err := dc.GetForecastAsTimeseries(t.Context(), &pb.GetForecastAsTimeseriesRequest{ - LocationUuid: siteResp.LocationUuid, - HorizonMins: uint32(tc.horizonMins), - Forecaster: forecasterResp.Forecaster, - EnergySource: pb.EnergySource_ENERGY_SOURCE_SOLAR, + LocationUuid: siteResp.LocationUuid, + HorizonMins: uint32(tc.horizonMins), + Forecaster: forecasterResp.Forecaster, + EnergySource: pb.EnergySource_ENERGY_SOURCE_SOLAR, TimeWindow: &pb.TimeWindow{ StartTimestampUtc: timestamppb.New(pivotTime.Add(-time.Hour * 48)), EndTimestampUtc: timestamppb.New(pivotTime.Add(time.Hour * 36)), diff --git a/internal/server/postgres/sql/queries/predictions.sql b/internal/server/postgres/sql/queries/predictions.sql index 0a9347e..73219fb 100644 --- a/internal/server/postgres/sql/queries/predictions.sql +++ b/internal/server/postgres/sql/queries/predictions.sql @@ -400,16 +400,18 @@ relevant_predicted_values AS ( deltas AS ( SELECT rv.geometry_uuid, - rv.source_type_id, - rv.forecast_uuid, - rv.target_time_utc, rv.horizon_mins, rv.p50_sip - og.value_sip AS delta_sip FROM relevant_predicted_values AS rv - LEFT OUTER JOIN obs.observed_generation_values AS og USING (geometry_uuid, source_type_id) + INNER JOIN obs.observed_generation_values AS og + ON rv.geometry_uuid = og.geometry_uuid + AND rv.source_type_id = og.source_type_id + AND rv.target_time_utc = og.observation_timestamp_utc WHERE og.observer_uuid = $3 - AND og.observation_timestamp_utc = rv.target_time_utc + AND og.geometry_uuid = ANY(sqlc.arg(geometry_uuids)::UUID []) + AND og.observation_timestamp_utc >= sqlc.arg(pivot_timestamp)::TIMESTAMP - INTERVAL '8 days' + AND og.observation_timestamp_utc < sqlc.arg(pivot_timestamp)::TIMESTAMP + INTERVAL '1 millisecond' ) SELECT d.geometry_uuid,