adding standardizemeasurename

This commit is contained in:
John Krauss 2016-04-21 14:17:31 -04:00
parent 06232b235a
commit 6fd8a43e44
3 changed files with 28 additions and 0 deletions

View File

@ -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;

View File

@ -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

View File

@ -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