jdemaeyer / brightsky

JSON API for DWD's open weather data.
https://brightsky.dev/
MIT License
290 stars 18 forks source link

Add multi-station weather querying #48

Closed jdemaeyer closed 4 years ago

jdemaeyer commented 4 years ago

If one of the meteorological elements is not available from our preferred station, get it from the next one.

I.e. instead of

SELECT DISTINCT ON (timestamp)
    temperature,
    ...

do

SELECT
    timestamp,
    FIRST(temperature),
    ...
GROUP BY timestamp

This implies that we cannot return source information (station_id, location, etc.), since a single timestamp could be comprised of elements from multiple sources.

jdemaeyer commented 4 years ago

Benchmarks:

By lat/lon:
  50 one-day queries,  sequential:   2.76 s
  50 one-day queries,  parallel:     1.53 s
  50 one-week queries, sequential:   7.45 s
  50 one-week queries, parallel:     4.95 s

By lat/lon, no fallback:
  50 one-day queries,  sequential:   2.12 s
  50 one-day queries,  parallel:     1.16 s
  50 one-week queries, sequential:   5.70 s
  50 one-week queries, parallel:     3.77 s

By station:
  50 one-day queries,  sequential:   1.30 s
  50 one-day queries,  parallel:     0.59 s
  50 one-week queries, sequential:   3.42 s
  50 one-week queries, parallel:     1.64 s

By source:
  50 one-day queries,  sequential:   0.53 s
  50 one-day queries,  parallel:     0.25 s
  50 one-week queries, sequential:   2.11 s
  50 one-week queries, parallel:     1.00 s