Mercurial > gemma
comparison pkg/controllers/gauges.go @ 3302:ec6163c6687d
'Historicise' gauges on import
Gauge data sets will be updated or a new version will be inserted
depending on temporal validity and a timestamp marking the last
update in the RIS-Index of a data set. The trigger on date_info is
removed because the value is actually an attribut coming from the
RIS-Index.
Gauge measurements and predictions are associated to the version with
matching temporal validity. Bottlenecks are always associated to the
actual version of the gauge, although this might change as soon as
bottlenecks are 'historicised', too.
author | Tom Gottfried <tom@intevation.de> |
---|---|
date | Thu, 16 May 2019 18:41:43 +0200 |
parents | 232fc90e6ee2 |
children | 18777f6df3ef |
comparison
equal
deleted
inserted
replaced
3301:6514b943654e | 3302:ec6163c6687d |
---|---|
42 date_issue, | 42 date_issue, |
43 predicted, | 43 predicted, |
44 water_level | 44 water_level |
45 FROM ( | 45 FROM ( |
46 SELECT | 46 SELECT |
47 fk_gauge_id, | 47 location, |
48 measure_date, | 48 measure_date, |
49 date_issue, | 49 date_issue, |
50 false AS predicted, | 50 false AS predicted, |
51 water_level | 51 water_level |
52 FROM waterway.gauge_measurements | 52 FROM waterway.gauge_measurements |
53 UNION ALL | 53 UNION ALL |
54 SELECT | 54 SELECT |
55 fk_gauge_id, | 55 location, |
56 measure_date, | 56 measure_date, |
57 date_issue, | 57 date_issue, |
58 true AS predicted, | 58 true AS predicted, |
59 water_level | 59 water_level |
60 FROM waterway.gauge_predictions | 60 FROM waterway.gauge_predictions |
61 ) AS gmp | 61 ) AS gmp |
62 WHERE | 62 WHERE |
63 fk_gauge_id = ( | 63 location = ( |
64 $1::char(2), | 64 $1::char(2), |
65 $2::char(3), | 65 $2::char(3), |
66 $3::char(5), | 66 $3::char(5), |
67 $4::char(5), | 67 $4::char(5), |
68 $5::int | 68 $5::int |
78 value_min, | 78 value_min, |
79 value_max, | 79 value_max, |
80 predicted | 80 predicted |
81 FROM ( | 81 FROM ( |
82 SELECT | 82 SELECT |
83 fk_gauge_id, | 83 location, |
84 measure_date, | 84 measure_date, |
85 date_issue, | 85 date_issue, |
86 water_level, | 86 water_level, |
87 NULL AS value_min, | 87 NULL AS value_min, |
88 NULL AS value_max, | 88 NULL AS value_max, |
89 false AS predicted | 89 false AS predicted |
90 FROM waterway.gauge_measurements | 90 FROM waterway.gauge_measurements |
91 UNION ALL | 91 UNION ALL |
92 SELECT | 92 SELECT |
93 fk_gauge_id, | 93 location, |
94 measure_date, | 94 measure_date, |
95 date_issue, | 95 date_issue, |
96 water_level, | 96 water_level, |
97 lower(conf_interval) AS value_min, | 97 lower(conf_interval) AS value_min, |
98 upper(conf_interval) AS value_max, | 98 upper(conf_interval) AS value_max, |
104 | 104 |
105 selectAllWaterlevelsMeasuredRangeSQL = ` | 105 selectAllWaterlevelsMeasuredRangeSQL = ` |
106 SELECT | 106 SELECT |
107 min(measure_date), | 107 min(measure_date), |
108 max(measure_date) | 108 max(measure_date) |
109 FROM waterway.gauge_measurements WHERE | 109 FROM waterway.gauge_measurements |
110 fk_gauge_id = ( | 110 WHERE |
111 location = ( | |
111 $1::char(2), | 112 $1::char(2), |
112 $2::char(3), | 113 $2::char(3), |
113 $3::char(5), | 114 $3::char(5), |
114 $4::char(5), | 115 $4::char(5), |
115 $5::int | 116 $5::int |
125 percentile_disc(0.5) within group (order by water_level) AS median, | 126 percentile_disc(0.5) within group (order by water_level) AS median, |
126 percentile_disc(0.75) within group (order by water_level) AS q75, | 127 percentile_disc(0.75) within group (order by water_level) AS q75, |
127 avg(water_level) AS mean, | 128 avg(water_level) AS mean, |
128 min(water_level) AS min, | 129 min(water_level) AS min, |
129 max(water_level) AS max | 130 max(water_level) AS max |
130 FROM waterway.gauge_measurements WHERE | 131 FROM waterway.gauge_measurements |
131 fk_gauge_id = ( | 132 WHERE |
133 location = ( | |
132 $1::char(2), | 134 $1::char(2), |
133 $2::char(3), | 135 $2::char(3), |
134 $3::char(5), | 136 $3::char(5), |
135 $4::char(5), | 137 $4::char(5), |
136 $5::int | 138 $5::int |
143 SELECT | 145 SELECT |
144 measure_date, | 146 measure_date, |
145 water_level | 147 water_level |
146 FROM waterway.gauge_measurements | 148 FROM waterway.gauge_measurements |
147 WHERE | 149 WHERE |
148 staging_done AND | 150 location = ( |
149 fk_gauge_id = ( | |
150 $1::char(2), | 151 $1::char(2), |
151 $2::char(3), | 152 $2::char(3), |
152 $3::char(5), | 153 $3::char(5), |
153 $4::char(5), | 154 $4::char(5), |
154 $5::int | 155 $5::int |
155 ) | 156 )::isrs |
157 AND staging_done | |
156 AND measure_date BETWEEN $6 AND $7 | 158 AND measure_date BETWEEN $6 AND $7 |
157 ORDER BY measure_date | 159 ORDER BY measure_date |
158 ` | 160 ` |
159 ) | 161 ) |
160 | 162 |
661 return | 663 return |
662 } | 664 } |
663 | 665 |
664 filters := filterAnd{ | 666 filters := filterAnd{ |
665 buildFilterTerm( | 667 buildFilterTerm( |
666 "fk_gauge_id = ($%d::char(2), $%d::char(3), $%d::char(5), $%d::char(5), $%d::int)", | 668 "location = ($%d::char(2), $%d::char(3), $%d::char(5), $%d::char(5), $%d::int)", |
667 isrs.CountryCode, | 669 isrs.CountryCode, |
668 isrs.LoCode, | 670 isrs.LoCode, |
669 isrs.FairwaySection, | 671 isrs.FairwaySection, |
670 isrs.Orc, | 672 isrs.Orc, |
671 isrs.Hectometre, | 673 isrs.Hectometre, |
672 ), | 674 ), |
673 &filterOr{ | 675 &filterOr{ |
674 &filterNot{&filterTerm{format: "predicted"}}, | 676 &filterNot{&filterTerm{format: "predicted"}}, |
675 buildFilterTerm( | 677 buildFilterTerm( |
676 `date_issue = ( | 678 `date_issue = ( |
677 SELECT max(date_issue) FROM waterway.gauge_measurements | 679 SELECT max(date_issue) |
678 WHERE fk_gauge_id = ($%d::char(2), $%d::char(3), $%d::char(5), $%d::char(5), $%d::int))`, | 680 FROM waterway.gauge_measurements gm |
681 WHERE location = ($%d::char(2), $%d::char(3), $%d::char(5), $%d::char(5), $%d::int))`, | |
679 isrs.CountryCode, | 682 isrs.CountryCode, |
680 isrs.LoCode, | 683 isrs.LoCode, |
681 isrs.FairwaySection, | 684 isrs.FairwaySection, |
682 isrs.Orc, | 685 isrs.Orc, |
683 isrs.Hectometre, | 686 isrs.Hectometre, |