Mercurial > gemma
changeset 5536:dc2000b807bd aggregate-gm-import-logging
WIP: More on aggregation.
author | Sascha L. Teichmann <sascha.teichmann@intevation.de> |
---|---|
date | Mon, 25 Oct 2021 21:33:27 +0200 |
parents | 1fba5766d820 |
children | 2e5e51288a6c |
files | schema/updates/1469/aggregate-gm-logs.sql |
diffstat | 1 files changed, 90 insertions(+), 3 deletions(-) [+] |
line wrap: on
line diff
--- a/schema/updates/1469/aggregate-gm-logs.sql Mon Oct 25 20:44:15 2021 +0200 +++ b/schema/updates/1469/aggregate-gm-logs.sql Mon Oct 25 21:33:27 2021 +0200 @@ -9,6 +9,7 @@ last_time timestamp with time zone; curr_gid text; gauge text; + joined text; num integer; BEGIN @@ -36,10 +37,96 @@ FOR line IN logs LOOP IF last_id <> line.import_id THEN - --RAISE NOTICE '%', line.import_id; + + -- unknown + SELECT INTO joined string_agg(gid, ', ') + FROM agg_tracker + WHERE unknown; + + IF joined IS NOT NULL THEN + INSERT INTO filtered_logs VALUES ( + last_id, last_time, 'warn'::log_type, + 'Cannot find following gauges: ' || joined); + END IF; + + -- assume zpg + SELECT INTO joined string_agg(gid, ', ') + FROM agg_tracker + WHERE assume_zpg; + + IF joined IS NOT NULL THEN + INSERT INTO filtered_logs VALUES ( + last_id, last_time, 'warn'::log_type, + '''Reference_code'' not specified. Assuming ''ZPG'': ' || joined); + END IF; + + -- assume cm + SELECT INTO joined string_agg( + gid || ' (' || assume_cm || ')', ', ') + FROM agg_tracker + WHERE assume_cm > 0; + + IF joined IS NOT NULL THEN + INSERT INTO filtered_logs VALUES ( + last_id, last_time, 'warn'::log_type, + '''Unit'' not specified. Assuming ''cm'': ' || joined); + END IF; + + -- bad values + SELECT INTO joined string_agg( + gid || ' (' || bad_values || ')', ', ') + FROM agg_tracker + WHERE bad_values > 0; + + IF joined IS NOT NULL THEN + INSERT INTO filtered_logs VALUES ( + last_id, last_time, 'warn'::log_type, + 'Ignored measurements with value -99999: ' || joined); + END IF; + + + -- TODO: ""Missing mandatory values: " + -- TODO: "Cannot convert units: " + -- TODO: "Ignored measure codes:" + + -- predictions + SELECT INTO joined string_agg( + gid || ' (' || predictions || ')', ', ') + FROM agg_tracker + WHERE predictions > 0; + + IF joined IS NOT NULL THEN + INSERT INTO filtered_logs VALUES ( + last_id, last_time, 'info'::log_type, + 'New predictions: ' || joined); + END IF; + + -- measurements + SELECT INTO joined string_agg( + gid || ' (' || measurements || ')', ', ') + FROM agg_tracker + WHERE measurements > 0; + + IF joined IS NOT NULL THEN + INSERT INTO filtered_logs VALUES ( + last_id, last_time, 'info'::log_type, + 'New measurements: ' || joined); + END IF; + + -- nothing changed + SELECT INTO joined string_agg(gid, ', ') + FROM agg_tracker + WHERE measurements = 0 and predictions = 0; + + IF joined IS NOT NULL THEN + INSERT INTO filtered_logs VALUES ( + last_id, last_time, 'info'::log_type, + 'No changes for: ' || joined); + END IF; + + + TRUNCATE agg_tracker; last_id := line.import_id; - -- TODO: Generated log lines from agg_tracker - TRUNCATE agg_tracker; ELSIF line.msg ~ '^Found measurements/predictions for ....................$' THEN curr_gid := substring(