adding _OBS_GetRelatedColumn function

This commit is contained in:
Stuart Lynn
2016-04-20 17:24:07 -04:00
parent d6077457dd
commit c10da16d55
3 changed files with 60 additions and 13 deletions

View File

@@ -151,3 +151,25 @@ BEGIN
END;
$$ LANGUAGE plpgsql;
CREATE OR REPLACE FUNCTION cdb_observatory._GetRelatedColumn(columns_ids text[], reltype text )
RETURNS TEXT[]
AS $$
DECLARE
result TEXT[];
BEGIN
EXECUTE '
With ids as (
select row_number() over() as no, id from (select unnest($1) as id) t
)
select array_agg(target_id order by no)
FROM ids
LEFT JOIN observatory.obs_column_to_column
on source_id = id
where reltype = $2 or reltype is null
'
INTO result
using columns_ids, reltype;
return result;
END;
$$ LANGUAGE plpgsql;

View File

@@ -29,7 +29,7 @@ SELECT
CDB_LatLng(40.7128,-74.0059),
'"us.census.tiger".census_tract'
);
_obs_geomtable
_obs_geomtable
----------------------------------------------
obs_a92e1111ad3177676471d66bb8036e6d057f271b
(1 row)
@@ -41,9 +41,9 @@ SELECT
CDB_LatLng(40.7128,-74.0059),
'"us.census.tiger".nonexistant_id' -- not in catalog
);
_obs_geomtable
_obs_geomtable
----------------
(1 row)
-- future test: give back nulls when geometry doesn't intersect
@@ -65,11 +65,11 @@ SELECT
'2009 - 2013'
))).*
ORDER BY colname, tablename ASC;
colname | tablename | aggregate
colname | tablename | aggregate
-----------+----------------------------------------------+-----------
geoid | obs_11ee8b82c877c073438bc935a91d3dfccef875d1 |
geoid | obs_ab038198aaab3f3cb055758638ee4de28ad70146 |
geoid | obs_d34555209878e8c4b37cf0b2b3d072ff129ec470 |
geoid | obs_11ee8b82c877c073438bc935a91d3dfccef875d1 |
geoid | obs_ab038198aaab3f3cb055758638ee4de28ad70146 |
geoid | obs_d34555209878e8c4b37cf0b2b3d072ff129ec470 |
total_pop | obs_ab038198aaab3f3cb055758638ee4de28ad70146 | sum
(4 rows)
@@ -81,7 +81,7 @@ SELECT
'2009 - 2013'
))).*
ORDER BY 1 ASC;
colname | tablename | aggregate
colname | tablename | aggregate
---------+-----------+-----------
(0 rows)
@@ -91,7 +91,7 @@ SELECT
cdb_observatory._OBS_LookupCensusHuman(
Array['gini_index']
);
_obs_lookupcensushuman
_obs_lookupcensushuman
---------------------------------
{"\"us.census.acs\".B19083001"}
(1 row)
@@ -101,9 +101,9 @@ SELECT
cdb_observatory._OBS_LookupCensusHuman(
Array['cookies']
);
_obs_lookupcensushuman
_obs_lookupcensushuman
------------------------
(1 row)
-- OBS_BuildSnapshotQuery
@@ -112,7 +112,7 @@ SELECT
cdb_observatory._OBS_BuildSnapshotQuery(
Array['total_pop','male_pop','female_pop','median_age']
);
_obs_buildsnapshotquery
_obs_buildsnapshotquery
-------------------------------------------------------------------------------------------------
SELECT vals[1] As total_pop, vals[2] As male_pop, vals[3] As female_pop, vals[4] As median_age
(1 row)
@@ -122,11 +122,26 @@ SELECT
cdb_observatory._OBS_BuildSnapshotQuery(
Array['mandarin_orange']
);
_obs_buildsnapshotquery
_obs_buildsnapshotquery
------------------------------------
SELECT vals[1] As mandarin_orange
(1 row)
-- should give back "\"es.ine\".total_pop",NULL,"\"us.census.acs\".B01001001"}
SELECT
select * from cdb_observatory._GetRelatedColumn(
Array[
'"es.ine".pop_0_4',
'"us.census.acs".B01001001',
'"us.census.acs".B01001002'
],
'denominator'
);
_getrelatedcolumn
-------------------------------------------------------------
{"\"es.ine\".total_pop",NULL,"\"us.census.acs\".B01001001"}
(1 row)
\i test/sql/drop_fixtures.sql
SET client_min_messages TO NOTICE;
\set ECHO none

View File

@@ -75,4 +75,14 @@ SELECT
Array['mandarin_orange']
);
SELECT
select * from cdb_observatory._GetRelatedColumn(
Array[
'"es.ine".pop_0_4',
'"us.census.acs".B01001001',
'"us.census.acs".B01001002'
],
'denominator'
);
\i test/sql/drop_fixtures.sql