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(