From bcbd8a2be41ad04d1a235f0b0aa5c51104f452c0 Mon Sep 17 00:00:00 2001 From: John Krauss Date: Wed, 1 Mar 2017 16:03:14 +0000 Subject: [PATCH] change OBS_GetLegacyMetadata to return median/average measures too when called for polygons --- NEWS.md | 2 ++ src/pg/sql/42_observatory_exploration.sql | 6 ++++-- .../expected/42_observatory_exploration_test.out | 8 +++++++- .../test/sql/42_observatory_exploration_test.sql | 14 ++++++++++++-- 4 files changed, 25 insertions(+), 5 deletions(-) diff --git a/NEWS.md b/NEWS.md index cbd35ff..a5d2813 100644 --- a/NEWS.md +++ b/NEWS.md @@ -5,6 +5,8 @@ __Improvements__ * It is now possible to obtain measures that are averages or medians over arbitrary polygons ([#254](https://github.com/CartoDB/observatory-extension/pull/254). * Added test point for Australian data +* `OBS_GetLegacyMetadata` now returns median and averages in cases where it is + called for measures for polygons 1.3.0 (2017-01-17) diff --git a/src/pg/sql/42_observatory_exploration.sql b/src/pg/sql/42_observatory_exploration.sql index 574e997..b3473ef 100644 --- a/src/pg/sql/42_observatory_exploration.sql +++ b/src/pg/sql/42_observatory_exploration.sql @@ -369,8 +369,10 @@ RETURNS TABLE ( DECLARE aggregate_condition TEXT DEFAULT ''; BEGIN - IF aggregate_type IS NOT NULL THEN - aggregate_condition := format(' AND numer_aggregate = %L ', aggregate_type); + IF LOWER(aggregate_type) ILIKE 'sum' THEN + aggregate_condition := ' AND numer_aggregate IN (''sum'', ''median'', ''average'') '; + ELSIF aggregate_type IS NOT NULL THEN + aggregate_condition := format(' AND numer_aggregate ILIKE %L ', aggregate_type); END IF; RETURN QUERY EXECUTE format($string$ diff --git a/src/pg/test/expected/42_observatory_exploration_test.out b/src/pg/test/expected/42_observatory_exploration_test.out index dc5d0e0..6bf0a94 100644 --- a/src/pg/test/expected/42_observatory_exploration_test.out +++ b/src/pg/test/expected/42_observatory_exploration_test.out @@ -192,10 +192,16 @@ t _median_income_in_legacy_builder_metadata t (1 row) +_gini_in_legacy_builder_metadata +t +(1 row) _total_pop_in_legacy_builder_metadata_sums t (1 row) -_median_income_not_in_legacy_builder_metadata_sums +_median_income_in_legacy_builder_metadata_sums +t +(1 row) +_gini_not_in_legacy_builder_metadata_sums t (1 row) _no_dupe_subsections_in_legacy_builder_metadata diff --git a/src/pg/test/sql/42_observatory_exploration_test.sql b/src/pg/test/sql/42_observatory_exploration_test.sql index 821eb9a..e0ec8c0 100644 --- a/src/pg/test/sql/42_observatory_exploration_test.sql +++ b/src/pg/test/sql/42_observatory_exploration_test.sql @@ -499,15 +499,25 @@ SELECT 'us.census.acs.B19013001' IN (SELECT FROM cdb_observatory.OBS_LegacyBuilderMetadata() ) AS _median_income_in_legacy_builder_metadata; +SELECT 'us.census.acs.B19083001' IN (SELECT + (jsonb_array_elements(((jsonb_array_elements(subsection))->'f1')->'columns')->'f1')->>'id' AS id + FROM cdb_observatory.OBS_LegacyBuilderMetadata() +) AS _gini_in_legacy_builder_metadata; + SELECT 'us.census.acs.B01003001' IN (SELECT (jsonb_array_elements(((jsonb_array_elements(subsection))->'f1')->'columns')->'f1')->>'id' AS id FROM cdb_observatory.OBS_LegacyBuilderMetadata('sum') ) AS _total_pop_in_legacy_builder_metadata_sums; -SELECT 'us.census.acs.B19013001' NOT IN (SELECT +SELECT 'us.census.acs.B19013001' IN (SELECT + (jsonb_array_elements(((jsonb_array_elements(subsection))->'f1')->'columns')->'f1')->>'id' AS id + FROM cdb_observatory.OBS_LegacyBuilderMetadata('sum') +) AS _median_income_in_legacy_builder_metadata_sums; + +SELECT 'us.census.acs.B19083001' NOT IN (SELECT (jsonb_array_elements(((jsonb_array_elements(subsection))->'f1')->'columns')->'f1')->>'id' AS id FROM cdb_observatory.OBS_LegacyBuilderMetadata('sum') -) AS _median_income_not_in_legacy_builder_metadata_sums; +) AS _gini_not_in_legacy_builder_metadata_sums; SELECT COUNT(*) = 0 _no_dupe_subsections_in_legacy_builder_metadata FROM ( SELECT name, subsection, count(*) FROM