adding _OBS_GetRelatedColumn function
This commit is contained in:
@@ -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;
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user