akindices/app/misc/transform.sql
Matthew Dillon 690b325884 Misc cleanup
2015-10-10 14:31:58 -07:00

79 lines
2 KiB
SQL

-- Transforms AKIndices v1 schema to v2 schema
SELECT t.community_id,
d.datatype,
d.model,
d.modelname,
d.scenario,
d.resolution,
t.year::text,
json_build_array(
t.january::decimal(3,1),
t.february::decimal(3,1),
t.march::decimal(3,1),
t.april::decimal(3,1),
t.may::decimal(3,1),
t.june::decimal(3,1),
t.july::decimal(3,1),
t.august::decimal(3,1),
t.september::decimal(3,1),
t.october::decimal(3,1),
t.november::decimal(3,1),
t.december::decimal(3,1))::jsonb AS temps
INTO TEMP temp01
FROM temperatures t
INNER JOIN datasets d ON d.id=t.dataset_id;
--------------------------------------------------------------------------------
SELECT community_id,
datatype,
model,
modelname,
scenario,
resolution,
json_object_agg(year, temps)::jsonb AS data
INTO TEMP temp02
FROM temp01
GROUP BY community_id, datatype, model, modelname, scenario, resolution;
--------------------------------------------------------------------------------
CREATE TEMP SEQUENCE a;
SELECT nextval('a') AS id,
community_id,
json_build_object(
'datatype', datatype,
'model', model,
'modelname', modelname,
'scenario', scenario,
'resolution', resolution)::jsonb as dataset,
data
INTO TEMP temp03
FROM temp02;
--------------------------------------------------------------------------------
WITH all_json_key_value AS (
SELECT id, community_id, t1.key, t1.value
FROM temp03, jsonb_each(dataset) AS t1
UNION
SELECT id, community_id, t1.key, t1.value
FROM temp03, jsonb_each(data) AS t1
)
SELECT community_id, json_object_agg(key, value) AS data
INTO TEMP temp04
GROUP BY id, community_id;
--------------------------------------------------------------------------------
SELECT community_id, json_agg(data)::jsonb AS data
INTO TEMP temp05
FROM temp04
GROUP BY community_id;
--------------------------------------------------------------------------------
SELECT c.name, c.latitude, c.longitude, c.northing, c.easting, t.data
INTO new_communities
FROM temp05 t
INNER JOIN communities c ON c.id=t.community_id;