From 6fd8a43e44e67b48699476340c3191a04a9864dc Mon Sep 17 00:00:00 2001 From: John Krauss Date: Thu, 21 Apr 2016 14:17:31 -0400 Subject: [PATCH 1/4] adding standardizemeasurename --- src/pg/sql/40_observatory_utility.sql | 20 +++++++++++++++++++ .../expected/40_observatory_utility_test.out | 5 +++++ .../test/sql/40_observatory_utility_test.sql | 3 +++ 3 files changed, 28 insertions(+) diff --git a/src/pg/sql/40_observatory_utility.sql b/src/pg/sql/40_observatory_utility.sql index 6eb22c1..69ea27c 100644 --- a/src/pg/sql/40_observatory_utility.sql +++ b/src/pg/sql/40_observatory_utility.sql @@ -173,3 +173,23 @@ BEGIN return result; END; $$ LANGUAGE plpgsql; + +-- Function that replaces all non digits or letters with _ trims and lowercases the +-- passed measure name + +CREATE OR REPLACE FUNCTION cdb_observatory._OBS_StandardizeMeasureName(measure_name text) +RETURNS text +AS $$ +DECLARE + result text; +BEGIN + -- Turn non letter or digits to _ + result = regexp_replace(measure_name, '[^\dA-Za-z]+','_', 'g'); + -- Remove duplicate _'s + result = regexp_replace(result,'_{2,}','_', 'g'); + -- Trim _'s from beginning and end + result = trim(both '_' from result); + result = lower(result); + RETURN result; +END; +$$ LANGUAGE plpgsql; diff --git a/src/pg/test/expected/40_observatory_utility_test.out b/src/pg/test/expected/40_observatory_utility_test.out index 5fb3a2f..309f35e 100644 --- a/src/pg/test/expected/40_observatory_utility_test.out +++ b/src/pg/test/expected/40_observatory_utility_test.out @@ -140,6 +140,11 @@ SELECT cdb_observatory._OBS_GetRelatedColumn( {"\"es.ine\".total_pop",NULL,"\"us.census.acs\".B01001001"} (1 row) + _obs_standardizemeasurename +----------------------------- + test_343_2_qqq +(1 row) + \i test/sql/drop_fixtures.sql SET client_min_messages TO NOTICE; \set ECHO none diff --git a/src/pg/test/sql/40_observatory_utility_test.sql b/src/pg/test/sql/40_observatory_utility_test.sql index 37f0648..9fc7d63 100644 --- a/src/pg/test/sql/40_observatory_utility_test.sql +++ b/src/pg/test/sql/40_observatory_utility_test.sql @@ -84,4 +84,7 @@ SELECT cdb_observatory._OBS_GetRelatedColumn( 'denominator' ); +-- should give back a standardized measure name +SELECT cdb_observatory._OBS_StandardizeMeasureName('test 343 %% 2 qqq }}{{}}'); + \i test/sql/drop_fixtures.sql From 54110795532396d7b09ffcfad10ecc1117cbecf6 Mon Sep 17 00:00:00 2001 From: John Krauss Date: Thu, 21 Apr 2016 14:20:16 -0400 Subject: [PATCH 2/4] fix expectations --- src/pg/test/expected/40_observatory_utility_test.out | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/pg/test/expected/40_observatory_utility_test.out b/src/pg/test/expected/40_observatory_utility_test.out index 309f35e..05b78a5 100644 --- a/src/pg/test/expected/40_observatory_utility_test.out +++ b/src/pg/test/expected/40_observatory_utility_test.out @@ -140,6 +140,8 @@ SELECT cdb_observatory._OBS_GetRelatedColumn( {"\"es.ine\".total_pop",NULL,"\"us.census.acs\".B01001001"} (1 row) +-- should give back a standardized measure name +SELECT cdb_observatory._OBS_StandardizeMeasureName('test 343 %% 2 qqq }}{{}}'); _obs_standardizemeasurename ----------------------------- test_343_2_qqq From eda10dfa61bb84fac3670ffe7a024c92788eda2a Mon Sep 17 00:00:00 2001 From: "Andrew W. Hill" Date: Mon, 25 Apr 2016 10:48:01 -0400 Subject: [PATCH 3/4] Update methods.md removed JSON response stuff --- doc/methods.md | 38 ++++++++++++++------------------------ 1 file changed, 14 insertions(+), 24 deletions(-) diff --git a/doc/methods.md b/doc/methods.md index 8d52e44..8e1ae08 100644 --- a/doc/methods.md +++ b/doc/methods.md @@ -18,27 +18,24 @@ normalize | for measures that are are **sums** (e.g. population) the default nor #### Returns -A JSON object containing the following properties +A NUMERIC value containing the following properties Key | Description --- | --- value | the raw or normalized measure -name | the human readable name of the measure -description | a brief description of the measure -type | the data type (text, number, boolean) #### Example Add a Measure to an empty column based on point locations in your table ```SQL -UPDATE tablename SET local_male_population = OBS_GetUSCensusMeasure(the_geom, 'Male Population') -> 'value' +UPDATE tablename SET local_male_population = OBS_GetUSCensusMeasure(the_geom, 'Male Population') ``` Get a measure at a single point location ```SQL -SELECT * FROM json_each(OBS_GetUSCensusMeasure(CDB_LatLng(40.7, -73.9), 'Male Population')) +SELECT OBS_GetUSCensusMeasure(CDB_LatLng(40.7, -73.9), 'Male Population') ``` + +## OBS_GetUSCensusCategory(point_geometry, measure_name); + +The ```OBS_GetUSCensusCategory(point_geometry, category_name)``` method returns a categorical measure based on a subset of the US Census variables at a point location. It requires a different function from ```OBS_GetUSCensusMeasure``` because this function will always return TEXT, whereas ```OBS_GetUSCensusMeasure``` will always returna NUMERIC value. + +#### Arguments + +Name |Description +--- | --- +point_geometry | a WGS84 point geometry (the_geom) +measure_name | a human readable string name of a US Census variable. The glossary of measure_names is [available below]('measure_name table'). +#### Returns + +A NUMERIC value containing the following properties + +Key | Description +--- | --- +value | the raw or normalized measure + +#### Example + +Add a Measure to an empty column based on point locations in your table + +```SQL +UPDATE tablename SET local_male_population = OBS_GetUSCensusCategory(the_geom, 'Spielman Singleton Category 10') +``` + +Get a measure at a single point location + +```SQL +SELECT OBS_GetUSCensusCategory(CDB_LatLng(40.7, -73.9), 'Spielman Singleton Category 10') +``` + + + ## OBS_GetMeasure(point_geometry, measure_id); The ```OBS_GetMeasure(point_geometry, measure_id)``` method returns any Data Observatory measure at a point location.