From 2dc98672b062b0f26736572f1a766ac90003d4fb Mon Sep 17 00:00:00 2001 From: Chris Henrick Date: Thu, 21 Aug 2014 13:37:40 -0400 Subject: [PATCH 1/3] added SQL code to create unique id for qs data --- geocoder/admin1/sql/build_data_table.sql | 45 ++++++++++++++++++++++++ 1 file changed, 45 insertions(+) create mode 100644 geocoder/admin1/sql/build_data_table.sql diff --git a/geocoder/admin1/sql/build_data_table.sql b/geocoder/admin1/sql/build_data_table.sql new file mode 100644 index 0000000..16e1a92 --- /dev/null +++ b/geocoder/admin1/sql/build_data_table.sql @@ -0,0 +1,45 @@ +---- ADMIN1 Geometry Table ----- +------------------------------- +--- NOTE --- +-- for countries that have admin1 regions we use data from qs_adm1_region +-------------------------------------------------------------- + +--- add column global_id to admin1 and admin1 region tables +--- only do this if they don't exist: +--ALTER TABLE qs_adm1 ADD COLUMN global_id INT; +--ALTER TABLE qs_adm1_region ADD COLUMN global_id INT; + +--- create a unique id for both the adm1 and adm1_region tables +--- first create new table in memory +--- use the cartodb_id with the table name +WITH all_data AS ( + SELECT cartodb_id AS source_id, 'qs_adm1' AS sourcetable FROM qs_adm1 + UNION ALL + SELECT cartodb_id AS source_id, 'qs_adm1_region' AS sourcetable FROM qs_adm1_region +), +--- create a unique global id for data from both tables +global_id AS ( + SELECT *, ROW_NUMBER() OVER (ORDER BY source_id ASC) id FROM all_data +), +--- update both tables globa_id column +first_update AS ( + UPDATE qs_adm1 SET global_id = ( + SELECT id FROM global_id WHERE source_id = qs_adm1.cartodb_id AND sourcetable ='qs_adm1' + ) + RETURNING cartodb_id + ) + UPDATE qs_adm1_region SET global_id = ( + SELECT id FROM global_id WHERE source_id = qs_adm1_region.cartodb_id AND sourcetable ='qs_adm1_region' + ) + +-- clear all existing data from the table +DELETE FROM adm1; + +-- insert data from quattro shapes adm1 where countries don't have Regions +INSERT INTO adm1 (the_geom, global_id, ) + SELECT + FROM qs_adm1 + WHERE qs_adm0 NOT IN ('Belgium', 'Finland', 'France', 'Hungary', 'Italy', 'Serbia', 'Spain', 'United Kingdom') + + +-- synonyms table = rank, isoCode, id, name, name_code \ No newline at end of file From c3d404750e9974f1dcfdbaf19d086ac01877322b Mon Sep 17 00:00:00 2001 From: Chris Henrick Date: Thu, 21 Aug 2014 13:47:49 -0400 Subject: [PATCH 2/3] add inserts from qs data --- geocoder/admin1/sql/build_data_table.sql | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/geocoder/admin1/sql/build_data_table.sql b/geocoder/admin1/sql/build_data_table.sql index 16e1a92..153a3fa 100644 --- a/geocoder/admin1/sql/build_data_table.sql +++ b/geocoder/admin1/sql/build_data_table.sql @@ -30,16 +30,22 @@ first_update AS ( ) UPDATE qs_adm1_region SET global_id = ( SELECT id FROM global_id WHERE source_id = qs_adm1_region.cartodb_id AND sourcetable ='qs_adm1_region' - ) + ); -- clear all existing data from the table DELETE FROM adm1; -- insert data from quattro shapes adm1 where countries don't have Regions -INSERT INTO adm1 (the_geom, global_id, ) - SELECT +INSERT INTO adm1 (the_geom, global_id) + SELECT (the_geom, global_id) FROM qs_adm1 - WHERE qs_adm0 NOT IN ('Belgium', 'Finland', 'France', 'Hungary', 'Italy', 'Serbia', 'Spain', 'United Kingdom') + WHERE qs_adm0 NOT IN ('Belgium', 'Finland', 'France', 'Hungary', 'Italy', 'Serbia', 'Spain', 'United Kingdom'); + +-- insert data from quattro shapes adm1 regions +INSERT INTO adm1 (the_geom, global_id) + SELECT (the_geom, global_id) + FROM qs_adm1_region + -- synonyms table = rank, isoCode, id, name, name_code \ No newline at end of file From 7a6b07c5e368446601624aa95db4b1d9b600c0eb Mon Sep 17 00:00:00 2001 From: Chris Henrick Date: Thu, 21 Aug 2014 13:53:25 -0400 Subject: [PATCH 3/3] fixed select statements --- geocoder/admin1/sql/build_data_table.sql | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/geocoder/admin1/sql/build_data_table.sql b/geocoder/admin1/sql/build_data_table.sql index 153a3fa..ddb70aa 100644 --- a/geocoder/admin1/sql/build_data_table.sql +++ b/geocoder/admin1/sql/build_data_table.sql @@ -37,15 +37,14 @@ DELETE FROM adm1; -- insert data from quattro shapes adm1 where countries don't have Regions INSERT INTO adm1 (the_geom, global_id) - SELECT (the_geom, global_id) + SELECT the_geom, global_id FROM qs_adm1 WHERE qs_adm0 NOT IN ('Belgium', 'Finland', 'France', 'Hungary', 'Italy', 'Serbia', 'Spain', 'United Kingdom'); -- insert data from quattro shapes adm1 regions INSERT INTO adm1 (the_geom, global_id) - SELECT (the_geom, global_id) - FROM qs_adm1_region - + SELECT the_geom, global_id + FROM qs_adm1_region; -- synonyms table = rank, isoCode, id, name, name_code \ No newline at end of file