|
CREATE OR REPLACE TABLE readings_stg AS |
|
WITH src AS (SELECT * |
|
FROM read_json('https://environment.data.gov.uk/flood-monitoring/data/readings?latest')) |
|
SELECT u.* FROM ( |
|
SELECT UNNEST(items) AS u FROM src); |
|
|
|
CREATE OR REPLACE TABLE measures_stg AS |
|
WITH src AS (SELECT * |
|
FROM read_json('https://environment.data.gov.uk/flood-monitoring/id/measures')) |
|
SELECT u.* FROM ( |
|
SELECT UNNEST(items) AS u FROM src); |
|
|
|
CREATE OR REPLACE TABLE stations_stg AS |
|
WITH src AS (SELECT * |
|
FROM read_json('https://environment.data.gov.uk/flood-monitoring/id/stations')) |
|
SELECT u.* FROM ( |
|
SELECT UNNEST(items) AS u FROM src); |
|
|
|
|
|
CREATE OR REPLACE TABLE measures AS |
|
SELECT * |
|
EXCLUDE ("@id", latestReading) |
|
REPLACE( |
|
REGEXP_REPLACE(station, |
|
'http://environment\.data\.gov\.uk/flood-monitoring/id/stations/', |
|
'') AS station |
|
) |
|
FROM measures_stg; |
|
|
|
ALTER TABLE measures |
|
ADD CONSTRAINT measures_pk PRIMARY KEY (notation); |
|
|
|
|
|
CREATE OR REPLACE TABLE stations AS |
|
SELECT * EXCLUDE (measures) |
|
FROM stations_stg; |
|
|
|
ALTER TABLE stations |
|
ADD CONSTRAINT stations_pk PRIMARY KEY (notation); |
|
|
|
|
|
CREATE TABLE IF NOT EXISTS readings AS |
|
SELECT * EXCLUDE "@id" FROM readings_stg WHERE FALSE; |
|
|
|
|
|
ALTER TABLE readings |
|
ADD CONSTRAINT readings_pk PRIMARY KEY (dateTime, measure); |
|
|
|
|
|
INSERT OR IGNORE INTO readings |
|
SELECT * |
|
EXCLUDE "@id" |
|
REPLACE( |
|
REGEXP_REPLACE(measure, |
|
'http://environment\.data\.gov\.uk/flood-monitoring/id/measures/', |
|
'') AS measure) |
|
FROM readings_stg; |
|
|
|
|
|
CREATE OR REPLACE VIEW vw_readings_enriched AS |
|
SELECT "r_\0": COLUMNS(r.*), |
|
"m_\0": COLUMNS(m.*), |
|
"s_\0": COLUMNS(s.*) |
|
FROM |
|
readings r |
|
LEFT JOIN measures m ON r.measure = m.notation |
|
LEFT JOIN stations s ON m.station = s.notation; |
|
|
|
|
|
CREATE TABLE IF NOT EXISTS readings_enriched AS |
|
SELECT * FROM vw_readings_enriched LIMIT 0; |
|
|
|
ALTER TABLE readings_enriched |
|
ADD CONSTRAINT readings_enriched_pk PRIMARY KEY (r_dateTime, r_measure); |
|
|
|
INSERT OR IGNORE INTO readings_enriched |
|
SELECT * FROM vw_readings_enriched; |
|
|
|
SELECT DATE_TRUNC('day', r_dateTime) AS day, COUNT(*) AS row_ct, MIN(r_dateTime) AS min_dateTime, MAX(r_dateTime) AS max_dateTime FROM readings_enriched GROUP BY 1 ORDER BY 1; |