629 Commits
0.0.1 ... 1.1.3

Author SHA1 Message Date
Mario de Frutos
08980f47a7 Merge pull request #215 from CartoDB/develop
Release 1.1.3
2016-11-17 20:08:00 +01:00
Mario de Frutos
54d512d4fb Release 1.1.3 artifact 2016-11-17 20:03:50 +01:00
Mario de Frutos
2a0ff6a541 Merge pull request #214 from CartoDB/release-v-1.1.3
release v1.1.3
2016-11-17 19:58:56 +01:00
John Krauss
62e13086e1 release v1.1.3 2016-11-15 18:36:53 +00:00
Mario de Frutos
60b723de92 Merge pull request #212 from CartoDB/develop
Release 1.1.2
2016-11-11 17:09:56 +01:00
Mario de Frutos
7e04c38c3a Release 1.1.2 artifact 2016-11-11 17:08:04 +01:00
Mario de Frutos
45dea25ec0 Merge pull request #211 from CartoDB/release-v-1.1.2
Release v 1.1.2
2016-11-11 17:05:28 +01:00
John Krauss
39836ea321 update NEWS.md 2016-11-09 22:11:20 +00:00
john krauss
17d343a756 Merge pull request #209 from CartoDB/use-rasters
Use rasters
2016-11-09 16:58:25 -05:00
john krauss
c7c8a6676a Merge pull request #210 from CartoDB/eu-epa-testpoints
add test points for EU and EPA, make it easier to work with meta.py
2016-11-09 16:47:14 -05:00
John Krauss
be4b5abbfa use highest ranked geom for obs_getmeasure, simplify scoring 2016-11-07 23:57:33 +00:00
John Krauss
8dad88a6b3 fix minor bug in _obs_getgeometryscores with FIRST, add tests 2016-11-07 21:26:44 +00:00
John Krauss
7e6489f2a1 add test points for EU and EPA, make it easier to work with meta.py 2016-11-07 16:50:00 +00:00
John Krauss
9fdca9161c minor stylistic fix 2016-11-04 15:32:25 +00:00
John Krauss
785a5eed29 obs_getgeometryscores and usage by obs_getavailablegeometries 2016-11-02 21:11:38 +00:00
Mario de Frutos
c91fcab28c Merge pull request #208 from CartoDB/develop
Release 1.1.1
2016-10-21 12:09:59 +02:00
Mario de Frutos
174ee65f46 Release 1.1.1 artifact 2016-10-21 12:08:49 +02:00
Mario de Frutos
4aac696963 Merge pull request #205 from CartoDB/release-v-1.1.1
Release v 1.1.1
2016-10-21 12:06:01 +02:00
John Krauss
5c5b587495 Merge remote-tracking branch 'origin/release-v-1.1.1' into release-v-1.1.1 2016-10-14 20:18:01 +00:00
John Krauss
dccae1ed8b NEWS for 1.1.1 2016-10-14 20:17:46 +00:00
john krauss
1e02593fae Merge pull request #204 from CartoDB/fr-ca-testpoints
adding testpoints for FR, Guayane, and CA
2016-10-14 16:09:39 -04:00
John Krauss
89d10ff993 do not skip canada tests 2016-10-14 18:39:47 +00:00
John Krauss
e35b7825ce adding testpoints for FR, Guayane, and CA 2016-10-07 20:27:04 +00:00
Javier Goizueta
ff613f7c12 Merge pull request #203 from CartoDB/develop
Release v1.1.0
2016-10-05 16:48:44 +02:00
Javier Goizueta
06e0b5bcf8 Release 1.1.0 2016-10-05 16:24:55 +02:00
Javier Goizueta
efae735324 Merge pull request #202 from CartoDB/release-v-1.1.0
Release v 1.1.0
2016-10-05 16:16:36 +02:00
John Krauss
7bf87faba1 adding NEWS for 1.1.0 2016-10-04 22:35:48 +00:00
john krauss
0b7e794fb9 Merge pull request #201 from CartoDB/builder-api-func
Builder api func
2016-10-04 18:29:43 -04:00
John Krauss
017b404264 make bounds optional for dimensional queries, add all tests 2016-10-04 22:21:05 +00:00
John Krauss
50b745227b working obs_getavailablenumerators tests 2016-10-04 20:10:24 +00:00
John Krauss
2171cb83c7 add tests for builder legacy func 2016-10-04 19:46:37 +00:00
John Krauss
0d9f0e4996 allow null geom to be passed in for the obs_get* functions, add in convenience legacy builder metadata function 2016-10-04 19:16:32 +00:00
John Krauss
b473ffe307 updated fixtures generation from local postgres, fixed a few tests that broke 2016-10-03 20:36:14 +00:00
John Krauss
2a1598d491 first pass on generating new metadata from local 2016-09-30 20:44:03 +00:00
John Krauss
827104756e another test stub 2016-09-30 17:39:25 +00:00
John Krauss
3602aab804 remove table defintions, stub in tests 2016-09-29 20:53:12 +00:00
John Krauss
48221fc358 Merge branch 'develop' into builder-api-func 2016-09-29 20:23:08 +00:00
Carla
5629bdf035 Merge pull request #197 from CartoDB/develop
Release v1.0.7
2016-09-21 12:02:04 +02:00
Carla Iriberri
f4113eaea3 Release 1.0.7 2016-09-21 11:24:29 +02:00
Carla
86fac2a600 Merge pull request #196 from CartoDB/release-v-1.0.7
Release v 1.0.7
2016-09-21 11:12:22 +02:00
John Krauss
2d753cd758 Skip bad MX measure, smaller buffer for faster tests, updated NEWS.md 2016-09-20 17:56:23 +00:00
john krauss
96a98c3bce Merge pull request #194 from CartoDB/null-resilience
Resolve #178
2016-09-20 13:38:11 -04:00
john krauss
d58263935d Merge pull request #195 from CartoDB/ca-testing
Add point to make sure CA data is present
2016-09-20 12:27:02 -04:00
John Krauss
104608c6d3 Add point to make sure CA data is present 2016-09-20 16:31:15 +00:00
John Krauss
c67fe12111 return NULL in cases when NULL is passed as input geometry or geometry ID. resolves #178 2016-09-20 16:26:13 +00:00
John Krauss
18cfdc60d0 tmp commit 2016-09-19 16:08:37 +00:00
Carla
d63934bfc5 Merge pull request #191 from CartoDB/develop
Release 1.0.6 with table level framework improvements
2016-09-08 13:52:36 +02:00
Carla Iriberri
860290595c Release 1.0.6 2016-09-08 10:37:37 +02:00
Carla
bf4ade2fa0 Merge pull request #186 from CartoDB/measure_release
Use explicit functions for query construction and metadata
2016-09-08 09:58:25 +02:00
Carla
32d37a74b3 Remove cascades and quote conveniently 2016-09-02 12:04:03 +02:00
Mario de Frutos
da877e4ef0 Modify PR template to include the update of NEWS.md 2016-08-25 14:36:07 +02:00
Mario de Frutos
15de07ca33 Modify PR template 2016-08-25 14:30:42 +02:00
Mario de Frutos
8af3e22661 Merge pull request #188 from CartoDB/pr_template
Added PR template
2016-08-25 14:27:14 +02:00
Mario de Frutos
fdd591b159 Added PR template 2016-08-25 11:28:01 +02:00
Carla Iriberri
5eb4ede219 Fix 2016-08-23 17:20:48 +02:00
Carla Iriberri
dd5f560359 Separate functions between files 2016-08-19 16:39:30 +02:00
Carla Iriberri
62c2693553 Avoid function check to dispatch 2016-08-19 13:04:54 +02:00
Carla Iriberri
48d1bfdb13 Remove JSON manipulation to use json functions 2016-08-19 12:45:38 +02:00
Carla Iriberri
30f27e5b58 Check function name and use param names instead of 2016-08-18 15:43:03 +02:00
Carla Iriberri
26b22a9bf4 Use explicit functions for query construction and metadata 2016-08-18 15:36:32 +02:00
Mario de Frutos
c9e809c061 Merge pull request #185 from CartoDB/develop
Release 1.0.5
2016-08-18 15:06:50 +02:00
Mario de Frutos
43e83751ae Release 1.0.5 artifact 2016-08-18 15:05:38 +02:00
Mario de Frutos
4c13434b9a Merge pull request #182 from CartoDB/sql-tests
SQL Integration and Performance Tests
2016-08-18 14:54:53 +02:00
Mario de Frutos
8785639ece Merge pull request #154 from CartoDB/iriberri-patch-1
Use 6432 for connections from server
2016-08-18 11:10:02 +02:00
John Krauss
f991f5a1e6 docs and NEWS for the new tests 2016-08-12 18:56:06 +00:00
John Krauss
e4b4ebf72d Adapted autotest to to work with SQL directly instead of over HTTP SQL API 2016-08-12 18:48:31 +00:00
Mario de Frutos
20f56c98de Merge pull request #179 from CartoDB/develop
Release 1.0.4
2016-08-10 16:20:00 +02:00
Mario de Frutos
e4ea90835a Release 1.0.4 artifact 2016-08-10 16:18:59 +02:00
Mario de Frutos
8f2c8f571c Merge pull request #175 from CartoDB/release-v-1.0.4
Release v 1.0.4
2016-08-10 16:15:56 +02:00
John Krauss
e9857e89fb release-v-1.0.4 increment and news 2016-07-26 13:08:28 +00:00
john krauss
8ed2135a7f Merge pull request #174 from CartoDB/all-null-defaults
Always default to NULL, fixes #173
2016-07-26 09:03:53 -04:00
John Krauss
af69b44f25 Always default to NULL, fixes #173 2016-07-26 13:05:40 +00:00
Mario de Frutos
e12b729c51 Release 1.0.3 artifact 2016-07-25 16:44:05 +02:00
Mario de Frutos
a42827a3c9 Merge pull request #172 from CartoDB/develop
Release 1.0.3
2016-07-25 16:11:28 +02:00
Mario de Frutos
948cdbff19 Merge pull request #171 from CartoDB/release-v-1.0.3
Release v 1.0.3
2016-07-25 16:09:35 +02:00
John Krauss
1c7c73f948 release candidate 1.0.3 2016-07-25 13:20:09 +00:00
john krauss
360adc47df Merge pull request #170 from CartoDB/handle-bad-geoms
Handle bad geoms
2016-07-25 09:15:09 -04:00
john krauss
571f1f343a Merge pull request #168 from CartoDB/fix-per-sq-m-obs-getmeasure-area
Fix per sq m obs getmeasure area
2016-07-25 09:14:08 -04:00
john krauss
186c57efbd Merge pull request #167 from CartoDB/null-defaults
Null defaults
2016-07-25 09:12:51 -04:00
john krauss
b139a24012 Merge pull request #165 from CartoDB/fix-required-libs
Fix required libs
2016-07-25 09:09:21 -04:00
john krauss
260704327e Merge pull request #164 from CartoDB/hotfix-error-on-exception
in this function, its "measure_id" not "numer_id"
2016-07-25 09:06:26 -04:00
John Krauss
252610673a handle difficult geometries more gracefully. fixes #160 2016-07-25 13:05:36 +00:00
John Krauss
d054f37528 fixes #160: snaptogrid then buffer input polygons 2016-07-22 21:47:06 +00:00
John Krauss
3d58fd284a fix #159
ensure getuscensusmeasure and getpopulation work as expected with NULL passed explicitly as normalization
2016-07-22 19:24:36 +00:00
John Krauss
efcea9be7b Merge branch 'fix-required-libs' into fix-per-sq-m-obs-getmeasure-area 2016-07-22 18:59:42 +00:00
John Krauss
cf242515e3 install postgres_fdw in test setup. fixes #166 2016-07-22 18:59:11 +00:00
John Krauss
4c434f5448 tests doublechecking NULL default handled correctly, and that area normalization for polygon is per square kilometer 2016-07-22 18:56:27 +00:00
John Krauss
59dd09c554 Merge branch 'fix-required-libs' into fix-per-sq-m-obs-getmeasure-area 2016-07-22 18:17:54 +00:00
John Krauss
8187ab4bbe ensure tests run in order. Fixes #162 2016-07-22 17:44:16 +00:00
John Krauss
e54d95fa8f remove unused plpythonu and cartodb dependencies
Fixes #161
2016-07-22 17:43:40 +00:00
John Krauss
d766f08b03 calculate area normalization of a polygon by square kilometer, not square meter. fixes #158 2016-07-22 15:18:43 +00:00
John Krauss
8f345fd508 in this function, its "measure_id" not "numer_id" 2016-07-21 15:35:09 -04:00
csobier
383c3eb6ec Merge pull request #155 from CartoDB/148-move-glossary-and-license-files
added absolutel urls for doc links as weird redirects are happening f…
2016-07-19 11:58:59 -04:00
csobier
798c0a73a1 added absolutel urls for doc links as weird redirects are happening for relative links 2016-07-19 11:57:40 -04:00
Carla
bfa57f4971 Use 6432 for connections from server 2016-07-19 17:54:08 +02:00
csobier
e7a16f4b4d Merge pull request #153 from CartoDB/148-move-glossary-and-license-files
fixing hyperlinks to live docs
2016-07-19 11:43:23 -04:00
csobier
540ff68a90 fixing hyperlinks to live docs 2016-07-19 11:42:19 -04:00
csobier
6a1df2abd1 Merge pull request #149 from CartoDB/148-move-glossary-and-license-files
removed glossary and license files, updated any hyperlinks to these f…
2016-07-19 11:32:25 -04:00
csobier
dc9ed2de33 fixes issue 148 2016-07-19 11:30:09 -04:00
Carla
acaa434118 Merge pull request #152 from CartoDB/obs_fdw_dependency
Add postgres_fdw as a dependency of observatory
2016-07-19 15:58:05 +02:00
Carla
173d7c0aec Add postgres_fdw as a dependency of observatory 2016-07-19 15:56:25 +02:00
Belén Achaerandio
970d5d2119 Merge pull request #151 from CartoDB/add-docs-url
CR Update measures_functions.md
2016-07-19 15:06:32 +02:00
Belén Achaerandio
a3681062cb second-fix 2016-07-19 12:28:57 +02:00
Belén Achaerandio
a179a46b86 Update measures_functions.md 2016-07-19 12:15:58 +02:00
Mario de Frutos
4c434ffb8d Release 1.0.2 artifact 2016-07-15 15:52:38 +02:00
Mario de Frutos
b041821fc0 Merge pull request #150 from CartoDB/develop
Release 1.0.2 wit mocks for augment functions
2016-07-15 15:49:03 +02:00
Mario de Frutos
876515f9aa Merge pull request #127 from CartoDB/table_level_functions
Add table level functions and mocks
2016-07-15 15:47:02 +02:00
Mario de Frutos
25570e5b11 Merge pull request #147 from CartoDB/develop
Release 1.0.2
2016-07-15 15:28:52 +02:00
csobier
1054443117 removed glossary and license files, updated any hyperlinks to these files 2016-07-15 09:05:49 -04:00
Carla
d93752efa3 move addr_host as a parameter 2016-07-15 11:34:42 +02:00
Mario de Frutos
588cda3262 Merge pull request #146 from CartoDB/release-v-1.0.2
Release v 1.0.2
2016-07-14 17:12:33 +02:00
john krauss
e43d0ca4cf Merge pull request #144 from CartoDB/getmeasure-using-obsmeta
Getmeasure using obsmeta
2016-07-14 09:24:51 -04:00
john krauss
987c4c5b76 Merge pull request #145 from CartoDB/obsmeta-end-to-end
use obs_meta for tests
2016-07-14 09:22:57 -04:00
John Krauss
51ce13f8b9 update NEWS with additional improvements 2016-07-14 09:21:16 -04:00
John Krauss
25f4dbc416 use obs_meta for tests 2016-07-14 09:11:02 -04:00
John Krauss
c09e0b6e83 can eliminate getrelatedcolumn 2016-07-13 18:42:25 -04:00
John Krauss
748428ace1 Merge branch 'release-v-1.0.2' into getmeasure-using-obsmeta 2016-07-13 18:41:04 -04:00
john krauss
10a0dc9b26 Merge pull request #141 from CartoDB/fix-hardcoded-getcategory-geom
Fix hardcoded getcategory geom
2016-07-13 18:39:31 -04:00
john krauss
9245de84b0 Merge pull request #142 from CartoDB/comment-notices
comment out notices
2016-07-13 18:38:59 -04:00
john krauss
514e1e4c5b Merge pull request #138 from CartoDB/mx-tests
test location for MX
2016-07-13 18:38:46 -04:00
John Krauss
7bb1bbd804 handle predenomination of points properly 2016-07-13 18:37:17 -04:00
John Krauss
1d008ccbe9 should not try to use area normalization for zhvi 2016-07-13 18:33:53 -04:00
John Krauss
f581278b8a default is now NULL 2016-07-13 18:24:45 -04:00
John Krauss
cbf1c5e67d fix default normalizations 2016-07-13 18:16:53 -04:00
John Krauss
adc663b563 default to area normalization for point, no normalization for polygon getmeasures 2016-07-13 18:14:09 -04:00
John Krauss
3a37b98b72 we still needt hese for getdemographicsnapshot 2016-07-13 17:54:19 -04:00
John Krauss
a4a20e9c1d prevent internal join for denominated getmeasure by polygon 2016-07-13 17:41:05 -04:00
John Krauss
f485426085 fix syntax error 2016-07-13 17:38:54 -04:00
John Krauss
75e765f256 explicit type casts for = ANY 2016-07-13 17:38:05 -04:00
John Krauss
b690478aff use IN ANY to avoid joins elsewhere, and filter by nonzero overlap for all getmeasure polygon queries 2016-07-13 17:36:27 -04:00
John Krauss
6fa9d5c96a add missing array_agg 2016-07-13 17:27:03 -04:00
John Krauss
fc6317161f avoid joins 2016-07-13 17:26:01 -04:00
John Krauss
c07d9f6833 add missing params 2016-07-13 17:13:45 -04:00
John Krauss
ff173a0152 filter so theres some overlap 2016-07-13 17:12:16 -04:00
John Krauss
a7de1f2228 intersects, not overlaps 2016-07-13 16:57:27 -04:00
John Krauss
86529ada5a use st_overlaps instead of && 2016-07-13 16:53:50 -04:00
John Krauss
80cdc5e8ca fix predicate 2016-07-13 16:48:06 -04:00
John Krauss
7c8c5cca0a fix params 2016-07-13 16:42:02 -04:00
John Krauss
a946ab9d03 fix params in denominated polygon getmeasure 2016-07-13 16:28:50 -04:00
John Krauss
da127baa3c implementation for polygon/multipolygon weighted getmeasure 2016-07-13 16:24:33 -04:00
John Krauss
e89a88aa83 use subselects as joins are horrifically slow over FDW 2016-07-13 15:59:27 -04:00
John Krauss
af2259bb0a fix wrong number of variables INTO 2016-07-13 13:39:33 -04:00
John Krauss
fb083f4b9e fix typo 2016-07-13 13:30:05 -04:00
John Krauss
976e119abb fix typo 2016-07-13 12:21:53 -04:00
John Krauss
bbc6f9ef36 getmeasure bypassing several older functions, areas not yet implemented 2016-07-13 12:20:01 -04:00
John Krauss
5229279ee9 Merge branch 'comment-notices' into release-v-1.0.2-preview 2016-07-13 11:14:00 -04:00
John Krauss
0090e537fc add comment-notices branch merge to NEWS.md 2016-07-13 11:07:06 -04:00
John Krauss
e4052ed565 better feedback in autotest 2016-07-13 10:59:25 -04:00
John Krauss
2107796f07 updates to NEWS.md and observatory.control 2016-07-12 17:49:34 -04:00
john krauss
2463623658 Merge pull request #136 from CartoDB/obs-meta-internal
Use obs_meta for OBS_GetMeasureByID, support obs_meta
2016-07-12 17:33:43 -04:00
John Krauss
91797918c1 Merge branch 'fix-hardcoded-getcategory-geom' into release-v-1.0.2-preview 2016-07-12 16:10:19 -04:00
John Krauss
6a39bedee7 fix ambiguous colname for categories in points too 2016-07-12 16:10:00 -04:00
John Krauss
6ce0e5a8d9 Merge branch 'fix-hardcoded-getcategory-geom' into release-v-1.0.2-preview 2016-07-12 16:08:05 -04:00
John Krauss
81176d1df2 fix possible ambiguity in category colname 2016-07-12 16:06:19 -04:00
John Krauss
f22854b4e9 Merge branch 'fix-hardcoded-getcategory-geom' into release-v-1.0.2-preview 2016-07-12 15:58:02 -04:00
John Krauss
54701d595a Merge branch 'obs-meta-internal' into release-v-1.0.2-preview 2016-07-12 15:57:44 -04:00
John Krauss
4b26eeda65 fix to correct segment for testarea area 2016-07-12 15:33:26 -04:00
John Krauss
4fc02f99e2 choose largest segment in the polygon 2016-07-12 14:37:43 -04:00
John Krauss
5bb4285528 fix typo 2016-07-12 14:16:28 -04:00
John Krauss
1e9c3fb860 fix typo 2016-07-12 14:15:00 -04:00
John Krauss
62a2c259a7 fix typo 2016-07-12 14:13:09 -04:00
John Krauss
61854a070d fix wrong quoting 2016-07-12 14:11:02 -04:00
John Krauss
8654c22c87 handle area categories properly 2016-07-12 14:06:43 -04:00
John Krauss
62c08864af remove bad "target_table" notice 2016-07-12 12:37:30 -04:00
John Krauss
af39a37b43 fix missing comma 2016-07-12 12:34:32 -04:00
John Krauss
26b61a6ddb minor formatting 2016-07-12 12:26:10 -04:00
John Krauss
965fb94704 fix bugs in obs_getcategory implementation 2016-07-12 12:22:06 -04:00
John Krauss
84dec8bdf4 simplify obs_getcategory and use obs_meta 2016-07-12 12:09:42 -04:00
John Krauss
568996930b test location for MX 2016-07-12 12:02:49 -04:00
John Krauss
ebc27dbbb7 faster obs_meta generation, use better formatting and handle NULL boundary_id 2016-07-12 11:52:56 -04:00
John Krauss
56fa19118b adjust expectations 2016-07-12 11:25:50 -04:00
John Krauss
4f3baac10a adjust expectations and make sure echo is none 2016-07-12 11:21:42 -04:00
John Krauss
b512985b46 drop/create less, better indexes 2016-07-12 11:15:08 -04:00
John Krauss
329b4dbca3 do not imitate foreign keys 2016-07-12 10:46:53 -04:00
John Krauss
897cf38d42 faster generation of obs-meta via indexes 2016-07-12 10:42:00 -04:00
John Krauss
fe6343c73f should use coaelesce, not nullif 2016-07-12 10:16:19 -04:00
John Krauss
26ee8aedb1 solve null identifier issue 2016-07-12 10:16:13 -04:00
John Krauss
66e2c6be54 create obs_meta out of dump band 2016-07-12 10:16:02 -04:00
John Krauss
6b41994a87 add missing formatstring args 2016-07-12 10:15:53 -04:00
John Krauss
d3d5cbdbbd use obs_meta in obs_getmeasurebyid 2016-07-12 10:15:44 -04:00
John Krauss
4d51ecc12e comment out notices 2016-07-12 10:14:59 -04:00
Carlos Matallín
c0030acb0c Merge pull request #131 from CartoDB/docs-781
rebranding
2016-07-07 18:57:47 +02:00
Carlos Matallín
e938ee0c7b Merge branch 'develop' into docs-781 2016-07-07 18:57:26 +02:00
Rafa de la Torre
8fa2d642bf Update release dir with make release 2016-07-01 19:02:53 +02:00
Rafa de la Torre
926435a908 Update NEWS and control file for v1.0.1 2016-07-01 18:57:21 +02:00
Rafa de la Torre
80073aa213 Merge remote-tracking branch 'origin/develop' 2016-07-01 18:53:11 +02:00
Rafa de la Torre
3f78797e14 Merge pull request #130 from CartoDB/preemptive-setsrid
preemptively set_srid for obs_getavailableboundaries
2016-07-01 18:49:57 +02:00
John Krauss
11dbb860ab preemptively set_srid for obs_getavailableboundaries 2016-07-01 18:43:05 +02:00
Carla
9ade6588e2 Add augment functions, add mocks for data retrieval, create own fdw functions to avoid cartodb dependency 2016-07-01 12:31:39 +02:00
Andy Eschbacher
5ef1427bc3 Merge pull request #126 from CartoDB/develop
documentation updates
2016-06-28 13:11:00 -04:00
csobier
3f63f6f138 Merge pull request #125 from CartoDB/docs-879-update-license
modified license content as per Operations request
2016-06-28 12:22:47 -04:00
Rafa de la Torre
3d59adc452 Remove paragraph from RELEASE.md doc
Remove paragraph about generating upgrade and downgrade paths, as we're
not applying it to the release process.
2016-06-28 17:27:35 +02:00
Rafa de la Torre
50c5f01f3f New release v1.0.0. 2016-06-28 17:27:16 +02:00
Rafa de la Torre
0dad5427c4 Merge pull request #124 from CartoDB/release-v-1.0.0
Release v 1.0.0
2016-06-28 17:19:32 +02:00
csobier
71c098c1c3 updated API file to show where all live, public docs are coming from. Updated link to PDF catalog 2016-06-28 10:48:46 -04:00
csobier
4057f76fc1 modified license content as per Operations request 2016-06-28 07:52:21 -04:00
John Krauss
17aeb5187b update to NEWS and control file in prep for release 2016-06-27 12:51:39 -04:00
John Krauss
cf7c115a76 Merge branch 'release-v-0.0.6' into fix-geom_geoid_colname 2016-06-27 12:39:09 -04:00
John Krauss
4e8341daab Merge branch 'release-v-0.0.6' into obs-dump-version 2016-06-27 12:37:15 -04:00
John Krauss
ca4327d3cd use data_geoid_colname with data table, reenable area-based measure tests that can catch this bug 2016-06-27 11:55:03 -04:00
John Krauss
bac48d7bea add missing RETURN 2016-06-22 14:35:40 -04:00
John Krauss
91383fe933 correct obs_getdumpversion to obs_dumpversion 2016-06-22 14:33:53 -04:00
John Krauss
446bdec30d obs_dumpversion and associated tests 2016-06-22 14:29:58 -04:00
John Krauss
f362e97f88 remove geometrycollection from obs_table fixture 2016-06-22 14:20:03 -04:00
John Krauss
975137641d fix ambiguous reference o the_geom 2016-06-22 13:38:29 -04:00
John Krauss
9379224629 use intersection against geom instead of && against bounds, update fixtures 2016-06-22 12:20:52 -04:00
John Krauss
7733529ff5 Merge remote-tracking branch 'origin/develop' into more-automated-tests 2016-06-22 12:13:03 -04:00
John Krauss
5a68f77b64 use Madrid for all spanish tests, add point for england/wales wales specifically 2016-06-20 13:16:12 -04:00
John Krauss
63448d6214 many more (commented out) tests for complete geom coverage, plus getuscensusmeasure tests 2016-06-01 18:16:50 -04:00
csobier
a18b07fa84 rebranded name must appear in ALL CAPS 2016-05-31 12:33:15 -04:00
csobier
11b05877f4 reverted rebranded code, as instruted. Legacy cartodb code instead 2016-05-31 12:05:34 -04:00
Mario de Frutos
62b23be2e0 Merge branch 'master' into develop 2016-05-30 18:31:22 +02:00
Mario de Frutos
eefdae8a58 Version 0.0.5 SQL file 2016-05-30 18:30:21 +02:00
Mario de Frutos
563c31a77f Version 0.0.5 SQL file 2016-05-30 18:26:02 +02:00
Mario de Frutos
3334e60ab8 Merge pull request #103 from CartoDB/develop
Version 0.0.5
2016-05-30 18:22:59 +02:00
csobier
da6aac4a18 Merge pull request #102 from CartoDB/docs-101-license-phrasing
updated license INE description
2016-05-30 12:01:18 -04:00
csobier
5e99b60329 updated license INE description 2016-05-30 11:05:50 -04:00
Mario de Frutos
67d735af03 Merge pull request #99 from CartoDB/bump-control-0.0.5
updating version to 0.0.5
2016-05-30 16:20:00 +02:00
Andy Eschbacher
e960f3e097 backfilling news 2016-05-26 14:13:12 -04:00
Andy Eschbacher
8fbb9ebbcc updating version to 0.0.5 2016-05-26 13:48:37 -04:00
Andy Eschbacher
389823d4fd Merge pull request #96 from CartoDB/add-getmeasurebyid
Adds OBS_GetMeasureById
2016-05-26 13:37:50 -04:00
Andy Eschbacher
076e285ed7 adds notes on test calls 2016-05-26 13:37:02 -04:00
Andy Eschbacher
43dc37f62b Merge branch 'develop' into add-getmeasurebyid 2016-05-26 13:31:55 -04:00
Andy Eschbacher
49d584822c adds another test on different types of inputs 2016-05-26 13:28:56 -04:00
csobier
02ca484719 applied docs 781 to data observatory docs 2016-05-26 12:31:01 -04:00
Mario de Frutos
a7785bcae2 Merge pull request #98 from CartoDB/develop
Version 0.0.4
2016-05-25 15:48:30 +02:00
Mario de Frutos
faa72b69ed Version 0.0.4 files 2016-05-25 15:45:59 +02:00
Mario de Frutos
023e48503e Merge pull request #97 from CartoDB/fix-broken-getuscensusmeasure-tag
Fix broken getuscensusmeasure tag
2016-05-25 15:43:38 +02:00
John Krauss
4d3b147497 Merge remote-tracking branch 'origin/develop' into fix-broken-getuscensusmeasure-tag 2016-05-24 16:14:17 -04:00
John Krauss
7250be9efe observatory release 2016-05-24 16:13:11 -04:00
john krauss
dc718ab7d0 Merge pull request #95 from CartoDB/fix-broken-getuscensusmeasure-tag
update fixtures and swap us.census.acs.demographics for us.census% fu…
2016-05-24 16:11:42 -04:00
John Krauss
de567e4dc7 fix expectations that were borked because of a holey fixture resolved with https://github.com/CartoDB/bigmetadata/issues/38 2016-05-24 15:18:40 -04:00
Andy Eschbacher
3502282835 adds more description for timespan 2016-05-24 13:30:22 -04:00
Andy Eschbacher
f9ecf1595c adds docs for obs_getmeasurebyid 2016-05-24 13:28:21 -04:00
John Krauss
614bce3051 remove tight binding between metadata and tests for some of the exploration tests 2016-05-24 13:24:37 -04:00
Andy Eschbacher
b5267c14bf removes unneeded todo 2016-05-24 13:15:19 -04:00
Andy Eschbacher
afb548c75d adds tests 2016-05-24 12:02:32 -04:00
Andy Eschbacher
94756a2377 minor formatting changes 2016-05-24 11:27:41 -04:00
Andy Eschbacher
2e312464aa fixes geom_ref in where condition 2016-05-24 11:22:39 -04:00
Andy Eschbacher
3f77a384c7 adds missing comma 2016-05-24 11:06:53 -04:00
Andy Eschbacher
1ba7299fe4 adds obs_getmeasurebyid 2016-05-24 11:02:35 -04:00
John Krauss
45ae255223 update es.ine expectations and tests 2016-05-24 12:51:55 +00:00
John Krauss
dc5e9ba2ad update fixtures and swap us.census.acs.demographics for us.census% fuzzy match for getuscensusmeasure 2016-05-24 12:34:06 +00:00
Mario de Frutos
a6e2530dda Merge pull request #93 from CartoDB/develop
Version 0.0.3
2016-05-24 11:52:22 +02:00
Mario de Frutos
b848ccc077 Version 0.0.3 release files 2016-05-24 11:45:45 +02:00
John Krauss
ebcc9130c7 restore accidentally commented tests 2016-05-23 11:10:29 -04:00
John Krauss
974911e01b better point for spanish census testing 2016-05-23 10:55:36 -04:00
john krauss
8c1db899dd Merge pull request #80 from CartoDB/more-tests-for-boundaries
adding additional tests for boundary metadata function
2016-05-23 08:52:01 -04:00
Andy Eschbacher
7e431ea223 adding forgotten test expectation 2016-05-21 10:15:01 -04:00
John Krauss
73dfba2d4b Merge remote-tracking branch 'origin/develop' into more-tests-for-boundaries 2016-05-20 18:02:32 -04:00
john krauss
d189bbe3c7 Merge pull request #79 from CartoDB/remove-geoid-from-obs_getpolygons
Remove geoid from obs getpolygons
2016-05-20 18:01:42 -04:00
John Krauss
90aa7c2417 Merge branch 'develop' into remove-geoid-from-obs_getpolygons 2016-05-20 18:00:51 -04:00
john krauss
a1bbd5ace5 Merge pull request #67 from CartoDB/iss66-cast-geom-ids-to-text
cast geom ids to text
2016-05-20 17:59:07 -04:00
Andy Eschbacher
d92f472708 remove verbose version of test 2016-05-19 16:52:31 -04:00
Andy Eschbacher
38226e40b4 merge from develop 2016-05-19 16:48:40 -04:00
Mario de Frutos
faa3c168da Merge pull request #87 from CartoDB/release-v1-alpha
Release 0.0.2
2016-05-19 16:31:55 +02:00
Mario de Frutos
6e1477890c Merge branch 'develop' into release-v1-alpha 2016-05-19 16:29:47 +02:00
Mario de Frutos
5d5df7d57a Release 0.0.2 version files 2016-05-19 16:29:31 +02:00
Mario de Frutos
ffa0f7c95f Merge branch 'master' into develop 2016-05-19 16:25:52 +02:00
Mario de Frutos
9186635387 Merge branch 'master' into develop 2016-05-19 16:02:57 +02:00
csobier
792d6c90a1 Merge pull request #86 from CartoDB/docs-835-update-license-section
update license docs, per vhamer's request
2016-05-18 21:36:07 -04:00
csobier
dffda42f5d update license docs, per vhamer's request 2016-05-18 14:58:47 -04:00
Mario de Frutos
1894c421ec Merge branch 'develop' into release-v1-alpha 2016-05-18 09:55:34 +02:00
Mario de Frutos
00165b17e6 Fixed wrong return for an empty element in _OBS_Get 2016-05-18 09:55:16 +02:00
Mario de Frutos
6a5e299fa5 Merge branch 'develop' into release-v1-alpha 2016-05-18 08:44:01 +02:00
Mario de Frutos
fe3a6759f7 Merge pull request #84 from CartoDB/use-observatory-account-meta
simpler access to metadata via observatory.cartodb.com
2016-05-18 08:14:49 +02:00
csobier
05ac246032 Merge pull request #85 from CartoDB/docs-hyperlink-to-best-practices
added hyperlinks to best practices section
2016-05-17 18:51:59 -04:00
csobier
51705eb411 added hyperlinks to best practices section 2016-05-17 18:26:45 -04:00
Andrew W. Hill
797b217c8f Merge pull request #78 from CartoDB/docs-license
added new doc topic, license
2016-05-17 17:42:14 -04:00
csobier
eb5bcb2f18 wordsmithed 2016-05-17 17:13:30 -04:00
csobier
7f34c5e0e9 converted license links to workable hyperlinks 2016-05-17 16:42:20 -04:00
andrewxhill
fdfab967af updated with none in boundary table 2016-05-17 15:38:19 -04:00
andrewxhill
0848d5aee4 remove ; 2016-05-17 15:37:13 -04:00
andrewxhill
54d0a6319c updated measures doc 2016-05-17 15:12:05 -04:00
andrewxhill
bb78ea7fe5 updated bounary functions 2016-05-17 15:02:14 -04:00
andrewxhill
a49be9506f search updated 2016-05-17 14:42:55 -04:00
John Krauss
73200df38b simpler access to metadata via observatory.cartodb.com 2016-05-17 13:32:46 -04:00
John Krauss
49d3962a54 better readme for scripts/ 2016-05-17 12:25:44 -04:00
Mario de Frutos
9cddac7768 Merge branch 'develop' into release-v1-alpha 2016-05-17 18:00:59 +02:00
Andy Eschbacher
a9d357699a Merge branch 'develop' into iss66-cast-geom-ids-to-text 2016-05-17 11:52:48 -04:00
John Krauss
8d17375766 fix extra "u" 2016-05-17 11:39:11 -04:00
csobier
323435fcfa updated all urls to point to changed permalinks 2016-05-17 11:38:40 -04:00
John Krauss
ddf9e9f3cc fixes to segment expectation 2016-05-17 11:35:19 -04:00
John Krauss
3983967920 Merge branch 'develop' into get_segment_snapshot_fix 2016-05-17 11:20:32 -04:00
Andy Eschbacher
3f76602028 adding who's on first expectation 2016-05-17 11:13:17 -04:00
Andy Eschbacher
e145d26cbd adding new fixtures with who's on first 2016-05-17 11:12:57 -04:00
Andy Eschbacher
fd483b60f4 Merge branch 'develop' into iss66-cast-geom-ids-to-text 2016-05-17 11:09:10 -04:00
Andy Eschbacher
5f1a49f879 Merge pull request #70 from CartoDB/update-total-pop-column-ids
updating total pop column reference
2016-05-17 11:03:32 -04:00
Andy Eschbacher
e4d8422787 update test results 2016-05-17 11:02:59 -04:00
Andy Eschbacher
80d7813845 removes whitespaces 2016-05-17 08:33:43 -04:00
Andy Eschbacher
0d5e45fc98 Merge branch 'develop' into update-total-pop-column-ids 2016-05-17 08:30:02 -04:00
Andy Eschbacher
52f44e995a updating expected outputs for tests 2016-05-17 08:28:45 -04:00
Andy Eschbacher
b73883aa1c updates fixtures 2016-05-17 08:28:23 -04:00
Andy Eschbacher
4f82b9d3f2 update test outputs 2016-05-17 08:27:55 -04:00
Mario de Frutos
f17dc6d8ff Added return statements when missing 2016-05-17 11:06:43 +02:00
Andy Eschbacher
f0baf48e85 update timespan 2016-05-16 17:50:17 -04:00
John Krauss
b296845d02 Merge remote-tracking branch 'origin/develop' into develop 2016-05-16 17:08:32 -04:00
Andy Eschbacher
1a51c786d3 Merge branch 'develop' into update-total-pop-column-ids 2016-05-16 16:50:15 -04:00
Andy Eschbacher
a3bf071acb adding more recent defaults and return catches for return query 2016-05-16 16:49:48 -04:00
John Krauss
cd82837a51 use school district point for clipped geoms too 2016-05-16 15:32:40 -04:00
Andrew W. Hill
b19e774604 Update license.md 2016-05-16 15:04:16 -04:00
Andrew W. Hill
7205676913 Update license.md 2016-05-16 15:03:46 -04:00
Andrew W. Hill
5d9a12dac0 Update license.md 2016-05-16 14:42:59 -04:00
Andrew W. Hill
c4b45606a8 Update license.md
updated
2016-05-16 14:42:43 -04:00
Andy Eschbacher
b5f4a617e8 adding more tests 2016-05-16 14:40:59 -04:00
Andy Eschbacher
57adaf78d6 puts in data_geoid 2016-05-16 14:30:27 -04:00
csobier
e78b9f603c added new doc topic, license 2016-05-16 14:04:40 -04:00
Andy Eschbacher
60e716878f template geoid 2016-05-16 14:00:04 -04:00
Andy Eschbacher
1e0b0a181c removing geoid from obs_getpolygons 2016-05-16 13:32:55 -04:00
Andrew W. Hill
94495e793e Update glossary.md
updated!
2016-05-16 12:34:09 -04:00
Mario de Frutos
75c8e052a1 Fixed more casts to text 2016-05-16 18:01:53 +02:00
Mario de Frutos
c53bc10a26 Merge pull request #76 from CartoDB/cast-colnames-in-getavailableboundaries
casting return types to text
2016-05-16 17:54:17 +02:00
Mario de Frutos
4536de681e Cast aggregate to text 2016-05-16 17:53:58 +02:00
John Krauss
8563ca7e45 additional options for testing 2016-05-16 11:52:41 -04:00
Andy Eschbacher
b074c1194b casting return types to text 2016-05-16 11:50:12 -04:00
John Krauss
02a529f0fc better test points 2016-05-16 11:28:27 -04:00
Mario de Frutos
4af1eb8efd Merge pull request #75 from CartoDB/cast_obs_searchtables_to_text
casting to text, fixing return catch
2016-05-16 17:18:11 +02:00
Andy Eschbacher
126643b84e casting to text, fixing return catch 2016-05-16 11:15:15 -04:00
Mario de Frutos
d3ff79c398 Merge pull request #74 from CartoDB/cast-column-to-text-obs-getgeommetadata
cast returned values to text
2016-05-16 16:24:33 +02:00
Andy Eschbacher
08bbfe190a putting cast in proper place 2016-05-16 10:23:59 -04:00
Andy Eschbacher
73e768d698 cast returned values to text 2016-05-16 10:21:32 -04:00
John Krauss
60606db136 Merge remote-tracking branch 'origin/develop' into automated-tests 2016-05-16 09:36:01 -04:00
Andy Eschbacher
f56ab75859 Merge pull request #40 from CartoDB/docs-768-obs-docs-structure
broke up original methods file into resprective functions for the liv…
2016-05-13 17:55:47 -04:00
Stuart Lynn
06204d471e fixing obs_getSegmentSnapshot 2016-05-13 15:40:48 -04:00
John Krauss
8959ec4e9a Merge remote-tracking branch 'origin/develop' into automated-tests 2016-05-13 14:11:19 -04:00
Andy Eschbacher
c6213e388c updating fixtures for new metadata defintions 2016-05-13 13:42:34 -04:00
Andy Eschbacher
9ff99cbfbd updating total pop column reference 2016-05-13 11:23:10 -04:00
Andy Eschbacher
7e7f572bf1 Merge branch 'develop' into docs-768-obs-docs-structure 2016-05-13 09:36:46 -04:00
Andy Eschbacher
d99312aa06 update all examples 2016-05-13 09:30:16 -04:00
Andy Eschbacher
2c10e75af6 cast return value of obs_getboundaryid to text 2016-05-13 06:51:13 -04:00
Andy Eschbacher
8696037dd6 adding test of who's on first 2016-05-12 22:29:46 -04:00
Andy Eschbacher
4fb79c6bc4 adds missing returns to properly exit function 2016-05-12 21:32:44 -04:00
Andy Eschbacher
18eb4b8e41 casting geom_refs to text 2016-05-12 21:08:58 -04:00
John Krauss
cc798730a2 make sure theres actually data there 2016-05-12 16:36:05 -04:00
John Krauss
9a5c8777ce use different test points for different measures 2016-05-12 16:23:00 -04:00
john krauss
3230a9996b Merge pull request #64 from CartoDB/fix-boundary-string-operators
using appropriate operators in format function
2016-05-12 15:25:31 -04:00
Andy Eschbacher
02a4dbde57 using appropriate operators in format function 2016-05-12 15:13:50 -04:00
John Krauss
d0122786db first-pass automatic testing 2016-05-12 14:21:31 -04:00
Andy Eschbacher
e72c0521ea updating examples and descriptions for function examples 2016-05-12 14:10:31 -04:00
john krauss
e74964c1ee Merge pull request #62 from CartoDB/add-fixture-gen-script
adds fixture gen script
2016-05-12 11:42:01 -04:00
John Krauss
bab13bd5ad use schema feature of sqldumpr, use different WHERE clause for zcta 2016-05-12 11:41:47 -04:00
Andy Eschbacher
bd6f3e2337 adds fixture gen script 2016-05-12 11:07:21 -04:00
john krauss
0acf9aa4ba Merge pull request #61 from CartoDB/default-recent-timespan-weighted-geom
Default recent timespan weighted geom
2016-05-12 10:42:30 -04:00
John Krauss
aca37666fa Merge remote-tracking branch 'origin/develop' into default-recent-timespan-weighted-geom 2016-05-12 09:51:14 -04:00
John Krauss
8e3c75a94b Merge branch 'develop' into remove-geoid-from-getboundaryid 2016-05-12 09:48:50 -04:00
John Krauss
1152eb542a Merge branch 'iss52-timespan-overuse' into develop 2016-05-12 09:47:47 -04:00
John Krauss
3f1b1cfcb9 update tests to work with latest zillow 2016-05-12 09:39:44 -04:00
Andy Eschbacher
ebb2af249b adding back missing return; 2016-05-12 08:31:20 -04:00
Andy Eschbacher
9a7c0885bf remove words error when it's a notice 2016-05-12 08:08:13 -04:00
Andy Eschbacher
a6c395e3be remove hard-coded geoid from getgeometryid 2016-05-12 08:03:06 -04:00
John Krauss
506f9ead30 first-pass defaults to latest timespan/boundary_id 2016-05-11 18:17:48 -04:00
John Krauss
ccf61c3583 array typing issues 2016-05-11 17:59:58 -04:00
John Krauss
d1c2598167 fix bug with table alias 2016-05-11 17:57:46 -04:00
John Krauss
b2b34bfe05 default to latest if unspecified timespan/boundary id 2016-05-11 17:55:52 -04:00
John Krauss
011baaacd5 Merge branch 'develop' into default-recent-timespan-weighted-geom 2016-05-11 16:58:14 -04:00
John Krauss
ce0601e157 include correct zcta rows 2016-05-11 16:35:40 -04:00
John Krauss
e9f6326f04 add missing tiger.zcta5 2016-05-11 16:25:32 -04:00
John Krauss
7e1fcc2b15 fix broken schema in tests 2016-05-11 16:20:59 -04:00
Andy Eschbacher
b656569d51 remove unused normalize type from error reporting 2016-05-11 16:18:14 -04:00
John Krauss
addaef7d40 zillow expectation 2016-05-11 16:09:52 -04:00
John Krauss
d2233609bc add zillow test, still missing expectation 2016-05-11 16:08:59 -04:00
Andy Eschbacher
00ebca5132 adding errors about augmentation functions 2016-05-11 16:08:08 -04:00
John Krauss
aab24d00dd use data_geoid_colname for data, geom_geoid_colname for geom 2016-05-11 15:47:29 -04:00
John Krauss
56f4d2f256 fix geoid hardcode 2016-05-11 14:58:19 -04:00
Andy Eschbacher
b21ff8a65e adding errors to docs 2016-05-11 14:50:23 -04:00
Andy Eschbacher
4d60a211de fixes timespan mis-naming issue 2016-05-11 13:38:51 -04:00
Andy Eschbacher
2be3943e56 rename boundary doc 2016-05-11 13:27:58 -04:00
Andy Eschbacher
6b4158ae09 Merge branch 'develop' into docs-768-obs-docs-structure 2016-05-11 12:28:38 -04:00
Andy Eschbacher
a6752e090d align docs 2016-05-11 12:16:41 -04:00
Andy Eschbacher
9d3bb40877 scratch work to get _obs_columndata to return better defaults 2016-05-11 11:39:23 -04:00
Andy Eschbacher
ec1c2f8dfb removing hard-coded geoid from _obs_getpoints 2016-05-11 11:25:08 -04:00
Mario de Frutos
340e4b7ce1 Merge branch 'develop' into release-v1-alpha 2016-05-11 17:13:06 +02:00
Andy Eschbacher
96f67129ab updating docs 2016-05-11 10:58:23 -04:00
Andy Eschbacher
c8a1265b49 converting to point geoms 2016-05-11 09:39:12 -04:00
Andy Eschbacher
c1ac8ad64b add missing schema to function 2016-05-11 09:39:12 -04:00
Andy Eschbacher
397d8f28ec updating geometry types to (geometry/point, 4326) where appropriate 2016-05-11 09:39:12 -04:00
Andy Eschbacher
36698cce22 update tests to account for json responses with different key orders and
numeric precision
2016-05-11 09:39:12 -04:00
Andy Eschbacher
c2ea695bd2 updating tests after adding new fixtures 2016-05-11 09:39:12 -04:00
Andy Eschbacher
321daf0a5d scratch work to figure out test behavior 2016-05-11 09:39:12 -04:00
Andy Eschbacher
446fb34618 removed unused test 2016-05-11 09:39:12 -04:00
Andy Eschbacher
2f91b8f298 minor edits 2016-05-11 09:39:12 -04:00
Andy Eschbacher
7c57d8b9e3 updating test for 41 2016-05-11 09:39:12 -04:00
John Krauss
0a0b7347fe updated fixture file 2016-05-11 09:39:12 -04:00
Andy Eschbacher
8874b07474 updating default timespan 2016-05-11 09:39:12 -04:00
John Krauss
ff9923a466 a few more lines 2016-05-11 09:39:12 -04:00
John Krauss
26f0ee79fa fix fixture, test and function bugs 2016-05-11 09:39:12 -04:00
John Krauss
b132e8992d fix casting issue 2016-05-11 09:39:12 -04:00
John Krauss
e8c8c0e039 fix comma bug 2016-05-11 09:39:12 -04:00
John Krauss
1ffa6b48e9 allow _obs_geomtable to take a timespan, and default to most recent 2016-05-11 09:39:12 -04:00
John Krauss
9f9c27e8bc update expectations for 40 2016-05-11 09:39:12 -04:00
John Krauss
e5fd0eaca9 update test 2016-05-11 09:39:12 -04:00
Andy Eschbacher
1bddece563 fix tests after adding new fixtures 2016-05-11 09:39:12 -04:00
Andy Eschbacher
1934957135 minor test fixes 2016-05-11 09:39:12 -04:00
John Krauss
0671a5ba48 for now stick to 2009-2013 default 2016-05-11 09:39:12 -04:00
John Krauss
c7b74b068f switch optional defaults to null 2016-05-11 09:39:12 -04:00
Andy Eschbacher
b665773b50 fixing tests after adding new fixtures 2016-05-11 09:39:12 -04:00
Andy Eschbacher
314a241ec6 move fixture scripts to fixtures/ 2016-05-11 09:39:12 -04:00
Andy Eschbacher
237ad8ec00 removing old fixtures 2016-05-11 09:39:12 -04:00
Andy Eschbacher
de8110157a regenerated fixtures 2016-05-11 09:39:12 -04:00
John Krauss
af14526734 kill obs_lookupcensushuman 2016-05-11 09:39:12 -04:00
John Krauss
c0d04c7d9b remove test expectations 2016-05-11 09:39:12 -04:00
John Krauss
0e64257a3b remove _obs_getcensus and make demographicsnapshot use obs_get directly 2016-05-11 09:39:12 -04:00
Andy Eschbacher
5593e4776b whitespace in tests uggggh 2016-05-11 09:39:12 -04:00
Andy Eschbacher
0dba8c8132 adding spaces to header 2016-05-11 09:39:12 -04:00
Andy Eschbacher
2ba0234143 adding missing header formatting for test 2016-05-11 09:39:12 -04:00
Andy Eschbacher
b85d750ed1 fixing tests after adding new fixture data 2016-05-11 09:39:12 -04:00
Andy Eschbacher
08d2016b1c fix test after adding more fixture data 2016-05-11 09:39:12 -04:00
Andy Eschbacher
ba3a98af20 adding all of brooklyn to segments fixtures 2016-05-11 09:39:12 -04:00
John Krauss
6a04409875 eliminate extra quotes 2016-05-11 09:39:12 -04:00
John Krauss
8ddc32f2c9 fix slight numeric differences 2016-05-11 09:39:12 -04:00
John Krauss
043d66e30c fix expectations 2016-05-11 09:39:12 -04:00
John Krauss
bd1ad1414e fix expectations 2016-05-11 09:39:12 -04:00
John Krauss
66c7e7692a fix obs_search signature & tests 2016-05-11 09:39:12 -04:00
John Krauss
c3a84d6395 fix broken columns metadata fixture and some other expectations 2016-05-11 09:39:12 -04:00
Andy Eschbacher
42395efd21 continuing to rebase 2016-05-11 09:38:45 -04:00
Andy Eschbacher
dcca7bef23 boundary expected test results 2016-05-11 09:35:33 -04:00
Andy Eschbacher
579e0bc6c3 adding tests for boundary functions 2016-05-11 09:35:33 -04:00
Andy Eschbacher
61f3c4b58f move misplaced todo; add missing declared var 2016-05-11 09:35:33 -04:00
Andy Eschbacher
28028f1b04 updating boundaries 2016-05-11 09:35:06 -04:00
Andy Eschbacher
e1d8d4e903 small edits 2016-05-11 09:33:22 -04:00
Andy Eschbacher
858e20c9c9 change return name of boundaries to the_geom 2016-05-11 09:33:22 -04:00
Andy Eschbacher
d5275c3f54 changing overlap default to intersects 2016-05-11 09:27:42 -04:00
Andy Eschbacher
434c291247 adding user-selected overlap methods 2016-05-11 09:27:42 -04:00
Andy Eschbacher
9de2c15a39 formatting 2016-05-11 09:27:42 -04:00
Andy Eschbacher
89343a2ae3 adding _obs_getgeometrymetadata function 2016-05-11 09:27:42 -04:00
Andy Eschbacher
192e4045cc adding point and radius functions 2016-05-11 09:27:42 -04:00
Andy Eschbacher
ad348136da adding boundaries by bbox functions 2016-05-11 09:27:42 -04:00
Andy Eschbacher
c05d4cb909 Merge pull request #53 from CartoDB/iss51-tests-fixes
update tests to account for json responses with different key orders and
2016-05-11 08:44:44 -04:00
Andy Eschbacher
94b1ad4a71 Merge pull request #55 from CartoDB/iss52-metaissue-updates
Iss52 metaissue updates
2016-05-11 08:43:41 -04:00
Andy Eschbacher
1973198a06 update tests to account for json responses with different key orders and
numeric precision
2016-05-11 08:03:23 +02:00
andrewxhill
91559480d0 type 2016-05-10 16:42:09 -04:00
andrewxhill
21d74dc226 boundary methods update 2016-05-10 16:40:28 -04:00
andrewxhill
10ec53f08e still need to review the GetCategory method with stuart after data deployment 2016-05-10 16:12:20 -04:00
andrewxhill
6a595b36a0 cleanup, starting to remove SELECT examples 2016-05-10 16:01:39 -04:00
Andy Eschbacher
3839261d89 add all default args to function descriptions, fix return types 2016-05-10 15:54:27 -04:00
Andy Eschbacher
7c655dcaa6 converting to point geoms 2016-05-10 15:44:58 -04:00
Andy Eschbacher
f9394129d9 add missing schema to function 2016-05-10 15:21:58 -04:00
Andy Eschbacher
dfbdb3c9ad updating geometry types to (geometry/point, 4326) where appropriate 2016-05-10 15:09:07 -04:00
Andy Eschbacher
25b3e5e2ec update tests to account for json responses with different key orders and
numeric precision
2016-05-10 14:24:21 -04:00
csobier
8e43b87933 updated hyperlinks to platform docs location 2016-05-10 09:44:25 -04:00
csobier
b005fc5d9e updated hyperlink to platform docs location 2016-05-10 09:42:03 -04:00
csobier
b6e0cfc8e3 updated hyperlinks to platform location 2016-05-10 09:41:03 -04:00
csobier
c96b6ef261 updated url link to catalog PDF placeholder 2016-05-09 13:44:08 -04:00
Andy Eschbacher
8733b819fe Merge pull request #50 from CartoDB/fixture-autogen
fixture autogen and test fixes after metadata updates
2016-05-06 07:49:59 -04:00
Andy Eschbacher
e39b438a0a updating tests after adding new fixtures 2016-05-06 07:47:00 -04:00
Andy Eschbacher
d747d3d3a9 scratch work to figure out test behavior 2016-05-05 17:53:11 -04:00
Andy Eschbacher
a5a011e9db removed unused test 2016-05-05 17:52:41 -04:00
Andy Eschbacher
c46630847b minor edits 2016-05-05 17:51:32 -04:00
Andy Eschbacher
67c66358e8 updating test for 41 2016-05-05 16:22:08 -04:00
John Krauss
d4b0f72016 updated fixture file 2016-05-05 15:51:36 -04:00
Andy Eschbacher
66f2948d4d Merge branch 'fixture-autogen' of https://github.com/CartoDB/observatory-extension into fixture-autogen 2016-05-05 15:39:30 -04:00
Andy Eschbacher
cff1189acd updating default timespan 2016-05-05 15:39:17 -04:00
John Krauss
290ca3cb20 a few more lines 2016-05-05 15:00:03 -04:00
John Krauss
e306408a6a fix fixture, test and function bugs 2016-05-05 14:58:06 -04:00
John Krauss
499eb6da62 fix casting issue 2016-05-05 14:49:43 -04:00
John Krauss
5dcec6e126 fix comma bug 2016-05-05 14:48:34 -04:00
John Krauss
73f8ea1b4e allow _obs_geomtable to take a timespan, and default to most recent 2016-05-05 14:45:56 -04:00
John Krauss
7aabc1be76 update expectations for 40 2016-05-05 14:36:07 -04:00
John Krauss
111d07c80a update test 2016-05-05 14:31:16 -04:00
Andy Eschbacher
4a3d35759b fix tests after adding new fixtures 2016-05-05 14:20:57 -04:00
Andy Eschbacher
10df7bc745 Merge branch 'develop' into fixture-autogen 2016-05-05 14:06:54 -04:00
john krauss
ef61d91acc Merge pull request #49 from CartoDB/null-optional-defaults
Null optional defaults and remove "land_area" for now
2016-05-05 14:06:17 -04:00
Andy Eschbacher
a60fe76259 minor test fixes 2016-05-05 14:01:53 -04:00
John Krauss
b938058b92 for now stick to 2009-2013 default 2016-05-05 14:01:42 -04:00
John Krauss
92d090a392 switch optional defaults to null 2016-05-05 13:59:08 -04:00
Andy Eschbacher
f8e5d162ec fixing tests after adding new fixtures 2016-05-05 13:57:54 -04:00
Andy Eschbacher
3b9d71aa00 move fixture scripts to fixtures/ 2016-05-05 13:54:04 -04:00
Andy Eschbacher
c03800779a removing old fixtures 2016-05-05 13:53:30 -04:00
Andy Eschbacher
ef42e1212c regenerated fixtures 2016-05-05 13:52:23 -04:00
john krauss
a792cb5f4f Merge pull request #48 from CartoDB/kill_get_census
Kill get census
2016-05-05 12:07:29 -04:00
John Krauss
3299bb013b kill obs_lookupcensushuman 2016-05-05 11:46:04 -04:00
John Krauss
5d20bd0804 remove test expectations 2016-05-05 11:43:16 -04:00
John Krauss
14ab3bef6a remove _obs_getcensus and make demographicsnapshot use obs_get directly 2016-05-05 11:37:04 -04:00
John Krauss
ab75d2ecd6 Merge branch 'develop' into eliminate-quotes-in-ids 2016-05-03 17:16:28 -04:00
john krauss
7b784adb44 Merge pull request #39 from CartoDB/add-boundary-bbox-functions
Adding boundary overlap functions
2016-05-03 17:16:00 -04:00
Andy Eschbacher
7dcc22828f whitespace in tests uggggh 2016-05-03 17:11:27 -04:00
Andy Eschbacher
af1afa57f3 adding spaces to header 2016-05-03 17:07:18 -04:00
Andy Eschbacher
ea8b212d45 adding missing header formatting for test 2016-05-03 17:04:18 -04:00
Andy Eschbacher
1b3e8f52e1 fixing tests after adding new fixture data 2016-05-03 17:00:15 -04:00
Andy Eschbacher
199f090d7b fix test after adding more fixture data 2016-05-03 16:51:57 -04:00
Andy Eschbacher
59b5a09b32 adding all of brooklyn to segments fixtures 2016-05-03 16:41:08 -04:00
John Krauss
050398bc84 eliminate extra quotes 2016-05-03 16:32:52 -04:00
John Krauss
8f021c0b49 Merge remote-tracking branch 'origin/eliminate-quotes-in-ids' into eliminate-quotes-in-ids 2016-05-03 16:26:10 -04:00
John Krauss
fe7035c702 Merge branch 'add-boundary-bbox-functions' into eliminate-quotes-in-ids 2016-05-03 16:25:55 -04:00
John Krauss
cccf2a6615 fix slight numeric differences 2016-05-03 15:19:46 -04:00
John Krauss
cf7aae8ce3 fix slight numeric differences 2016-05-03 15:16:53 -04:00
John Krauss
4125f05b28 fix expectations 2016-05-03 14:31:00 -04:00
John Krauss
998d6e742c fix expectations 2016-05-03 14:29:13 -04:00
John Krauss
47b2227453 fix obs_search signature & tests 2016-05-03 14:27:36 -04:00
John Krauss
685cb21779 fix broken columns metadata fixture and some other expectations 2016-05-03 14:23:26 -04:00
John Krauss
7f2d675602 eliminate quotes in IDs 2016-05-03 14:10:47 -04:00
Andy Eschbacher
c6ad6b3c08 boundary expected test results 2016-05-02 15:42:22 -04:00
Andy Eschbacher
2d635db39b adding tests for boundary functions 2016-05-02 15:40:43 -04:00
Andy Eschbacher
9601aab581 move misplaced todo; add missing declared var 2016-05-02 14:18:53 -04:00
csobier
805dedd7e5 updated Glossary, removed quotes from boundary ids and reorganized order of border ids 2016-05-02 13:36:16 -04:00
csobier
93b9e1a65e added url link to catalog PDF-link doesn't work yet, but url is static 2016-05-02 12:25:48 -04:00
Andy Eschbacher
2200b2e437 extracting getboundariesbybbox to interal, more general function 2016-05-02 12:12:49 -04:00
Andy Eschbacher
c5a49ade60 updates to docs descriptions 2016-05-02 09:53:30 -04:00
Andy Eschbacher
57fe6862b0 small edits 2016-05-02 08:55:01 -04:00
csobier
ba2e9306a6 added break to display table correctly 2016-04-29 21:28:49 -04:00
csobier
fa90389e82 fixed glossary tables, note missing descriptions 2016-04-29 20:40:45 -04:00
Andy Eschbacher
7556e43b22 change return name of boundaries to the_geom 2016-04-29 14:02:00 -07:00
Andy Eschbacher
5168023091 adding docs for boundary functions 2016-04-29 14:01:36 -07:00
csobier
f1ecc39cb7 broke up original methods file into resprective functions for the live docs categories of obs measures 2016-04-29 15:56:03 -04:00
Andy Eschbacher
530ce4e61e changing overlap default to intersects 2016-04-29 08:52:05 -07:00
Andy Eschbacher
ac3574b98b adding user-selected overlap methods 2016-04-28 16:45:41 -07:00
Andy Eschbacher
2325f97684 formatting 2016-04-28 16:33:07 -07:00
Andy Eschbacher
ab93ff4ec0 adding _obs_getgeometrymetadata function 2016-04-28 16:25:10 -07:00
Andy Eschbacher
0ba66c8f31 adding point and radius functions 2016-04-28 12:05:36 -07:00
Andy Eschbacher
1a19e33877 adding boundaries by bbox functions 2016-04-28 11:14:15 -07:00
John Krauss
502ffca6ec increment version 2016-04-28 13:38:01 -04:00
John Krauss
cdf70ea545 fix tests 2016-04-28 13:28:38 -04:00
Andy Eschbacher
d5e67b9fe1 updating getGeometry* to getBoundary* 2016-04-27 13:07:19 -07:00
Andy Eschbacher
6230e52d98 quashing more cdb_latlng 2016-04-27 11:09:47 -07:00
Andy Eschbacher
a9d084e250 removing cdb_latlng from tests 2016-04-27 10:54:54 -07:00
Andy Eschbacher
11df52dc3b remove cartodb dependency 2016-04-27 10:28:53 -07:00
John Krauss
8e38cafe87 fix to work with little area 2016-04-25 19:13:07 -04:00
John Krauss
4ad485984c fix expectations & fixture metadata 2016-04-25 19:08:29 -04:00
John Krauss
236ad00a26 fix bug in drop_fixtures 2016-04-25 18:59:01 -04:00
John Krauss
73ab1ea58a add new fixture 2016-04-25 18:55:29 -04:00
John Krauss
dc66ec40c4 fix nullvalue miscounting 2016-04-25 18:29:10 -04:00
John Krauss
d686b6b436 fix namespace issue 2016-04-25 18:20:26 -04:00
John Krauss
c9c5509f6b more expectation fixes 2016-04-25 18:00:51 -04:00
John Krauss
2152f97c9d fixing some bugs introduced by merge into tests 2016-04-25 17:58:36 -04:00
John Krauss
12610e8a8a adjust getmeasure and getcategory to work with json 2016-04-25 17:55:40 -04:00
John Krauss
f2d71fb5a0 fix signature bugs 2016-04-25 16:40:25 -04:00
John Krauss
647ebf9255 fix signature bugs 2016-04-25 16:39:23 -04:00
John Krauss
10fc4f56f0 fix bug with variable declaration 2016-04-25 16:31:06 -04:00
John Krauss
108fa9cc56 Merge branch 'release_v1_api_functions' into release_v1_api_functions_aug_use 2016-04-25 16:25:11 -04:00
John Krauss
0274337ded include both carriage returns and newlines in test expectation 2016-04-25 16:15:54 -04:00
John Krauss
34e2fdd284 carriage return for multiline 2016-04-25 16:10:10 -04:00
John Krauss
c45b2cfdd5 fixing test errors 2016-04-25 15:49:59 -04:00
John Krauss
972b9b941f Merge branch 'release_v1_api_functions' into release_v1_api_functions_add_boundary_functions 2016-04-25 15:41:32 -04:00
John Krauss
4e87eae904 Merge branch 'release_v1_api_functions' into get_obs_json_version 2016-04-25 15:35:49 -04:00
John Krauss
b93ea03786 update tests for segmentation to work with JSON 2016-04-25 15:31:39 -04:00
John Krauss
3e99b2deeb add in missing test 2016-04-25 15:19:38 -04:00
John Krauss
0d811f6eb3 uncomment some public-facing code 2016-04-25 15:10:09 -04:00
John Krauss
0535d3e305 fixes for first test in 41 2016-04-25 15:00:56 -04:00
John Krauss
82a838ff74 whitespace fixes 2016-04-25 14:56:45 -04:00
Stuart Lynn
21d306898b typo 2016-04-25 13:24:39 -04:00
Andrew W. Hill
1d9e37fd60 Update methods.md
added OBS_GetUSCensusCategory(point, category)
2016-04-25 10:59:59 -04:00
Andrew W. Hill
eda10dfa61 Update methods.md
removed JSON response stuff
2016-04-25 10:48:01 -04:00
Stuart Lynn
ace34f6ad8 removing table returning census snapshot function for json returning one for now 2016-04-25 10:45:54 -04:00
Stuart Lynn
20ec7ef25a whitespace fix 2016-04-25 10:18:18 -04:00
Stuart Lynn
511a15d993 removing extra test statment 2016-04-25 10:15:08 -04:00
Stuart Lynn
07b678e448 test for obs get census 2016-04-25 10:12:43 -04:00
Stuart Lynn
68f5bce80b updating get census functions to work with new json internals 2016-04-25 09:52:34 -04:00
Stuart Lynn
6709ce1589 removing extra json in function causing bug 2016-04-25 09:24:25 -04:00
Andy Eschbacher
55bbe55b4a adding tests for getgeometry* 2016-04-22 21:21:18 -04:00
Andy Eschbacher
0ab7982727 adding expected out for getgeometry* functions 2016-04-22 21:20:43 -04:00
Andy Eschbacher
18445d7755 adding better comments and tidying up code 2016-04-22 21:19:55 -04:00
Andy Eschbacher
ebc2c6dec5 adding tests for _obs_searchtables 2016-04-22 21:19:19 -04:00
Andy Eschbacher
54c3407d49 adding fixture to load/drop scripts 2016-04-22 20:55:59 -04:00
Stuart Lynn
aa29a287d1 tests for OBS_GetCategories 2016-04-22 16:49:51 -04:00
Stuart Lynn
0406d493a7 removing extra JSON from testing 2016-04-22 16:49:38 -04:00
Stuart Lynn
a9b22caadf updating OBS_GetCategories to json internals 2016-04-22 16:40:21 -04:00
Stuart Lynn
2c46a72038 bug fix 2016-04-22 16:14:56 -04:00
Stuart Lynn
7782bdeec2 adding tests fro new json returning get methods 2016-04-22 16:10:41 -04:00
Stuart Lynn
69ac0d25f2 Adding tests for new json returning utility functions 2016-04-22 16:10:30 -04:00
Andy Eschbacher
31609e347a adding new fixture 2016-04-22 15:48:07 -04:00
Andy Eschbacher
6fa7bcd871 adding expected for getgeom functions 2016-04-22 15:08:34 -04:00
Stuart Lynn
3394483a45 migrating OBS_GET, OBS_GetPoints, OBS_GetPolygons and OBS_GetMeasure to all use json internals 2016-04-22 14:45:22 -04:00
Stuart Lynn
7659ededaa Changing OBS_GetColumnData to return json and more metadata 2016-04-22 14:43:56 -04:00
John Krauss
a8829e76da fix expectations 2016-04-22 13:55:41 -04:00
John Krauss
7e9047eaf0 first pass getcategories & tests 2016-04-22 13:52:53 -04:00
John Krauss
830a65b93f remove internal use of json 2016-04-22 12:28:16 -04:00
John Krauss
22549206c2 return numeric instead of json for obs_getmeasure and obs_getuscensusmeasure 2016-04-22 12:23:14 -04:00
John Krauss
0baa3b4a33 updating expectations 2016-04-22 12:15:58 -04:00
John Krauss
0221379606 fix missing tabs 2016-04-22 12:01:45 -04:00
John Krauss
893002e6c0 add obs_column_tag and obs_tag fixtures 2016-04-22 11:52:47 -04:00
John Krauss
8268044c2f basic tests 2016-04-21 22:43:00 -04:00
John Krauss
74e4e5877a first pass obs_getuscensusmeasure functioning 2016-04-21 22:40:40 -04:00
Andy Eschbacher
6d30ee352c adding schema 2016-04-21 16:29:27 -04:00
Andy Eschbacher
17267c5894 adding schema hard-coded to function names 2016-04-21 16:22:32 -04:00
Andy Eschbacher
a2a0a6f3b7 harmonizing functions with timespan 2016-04-21 16:19:51 -04:00
Stuart Lynn
1e625ce3ef Updated version of OBS_Get to support json returning 2016-04-21 15:18:39 -04:00
Stuart Lynn
00d43a7812 Updating OBS_ColumnData to support more info 2016-04-21 15:16:04 -04:00
Andy Eschbacher
e119e0ddda make search_tables a table returning function 2016-04-21 15:13:02 -04:00
John Krauss
516ac1e358 Merge branch 'release_v1_api_functions' into release_v1_api_functions_aug_use 2016-04-21 14:22:41 -04:00
john krauss
f8ab20c8aa Merge pull request #25 from CartoDB/new_normalize_census_name
New normalize census name
2016-04-21 14:21:42 -04:00
John Krauss
5411079553 fix expectations 2016-04-21 14:20:16 -04:00
John Krauss
6fd8a43e44 adding standardizemeasurename 2016-04-21 14:17:31 -04:00
John Krauss
f5e2ae6273 updated expectations 2016-04-21 13:57:08 -04:00
John Krauss
be20b052ce first-pass working denominator for getmeasure 2016-04-21 13:54:09 -04:00
John Krauss
b16a2ca6a8 Merge remote-tracking branch 'origin/release_v1_api_functions' into release_v1_api_functions_aug_use 2016-04-21 12:32:34 -04:00
john krauss
06232b235a Merge pull request #21 from CartoDB/denominator
adding _OBS_GetRelatedColumn function
2016-04-21 12:31:31 -04:00
John Krauss
afd1be30b5 fixing whitespace 2016-04-21 12:30:50 -04:00
John Krauss
90a944070d more test and whitespace fixes 2016-04-21 12:26:55 -04:00
John Krauss
b8148768b8 fix whitespace and bug in test call 2016-04-21 12:22:20 -04:00
Stuart Lynn
6684c67e61 updating function name 2016-04-21 12:14:30 -04:00
John Krauss
06290fedf7 matching expectations 2016-04-21 11:41:52 -04:00
John Krauss
722b9404dc tests for getpopulation 2016-04-21 11:39:44 -04:00
John Krauss
24eeaa787d first-pass obs_getpopulation 2016-04-21 11:33:37 -04:00
Andy Eschbacher
e72583e15c formatting 2016-04-21 09:48:43 -04:00
Andy Eschbacher
16d65d01f3 finishing getgeometrybyid 2016-04-21 09:48:20 -04:00
Stuart Lynn
c10da16d55 adding _OBS_GetRelatedColumn function 2016-04-20 17:24:07 -04:00
john krauss
17db441b6e Merge pull request #19 from CartoDB/add_back_search_functions
Adding OBS_search function and tests
2016-04-20 17:16:45 -04:00
John Krauss
75f4e6d412 add trailing whitespace 2016-04-20 17:11:12 -04:00
John Krauss
1702a392b3 add trailing whitespace 2016-04-20 17:08:56 -04:00
John Krauss
30c1ed08c0 adjusting expectations 2016-04-20 17:05:29 -04:00
John Krauss
39e9ff32e5 missing "and" 2016-04-20 16:57:07 -04:00
John Krauss
851419a927 fix duplicate var name issue 2016-04-20 16:49:41 -04:00
John Krauss
a6655003aa fix duplicate var name issue 2016-04-20 16:47:40 -04:00
John Krauss
6696d4fcf5 adding id to return for obs_search, fixing OBS_GetAvailableBoundaries 2016-04-20 16:45:24 -04:00
andrewxhill
346f944383 added getavailboundaries 2016-04-20 16:45:19 -04:00
andrewxhill
e36850b2c7 Merge branch 'release_v1_api_functions' of github.com:CartoDB/observatory-extension into release_v1_api_functions 2016-04-20 16:45:00 -04:00
andrewxhill
9f44caaa62 added obssearch doc 2016-04-20 16:37:11 -04:00
Stuart Lynn
2503ed2124 Merge pull request #20 from CartoDB/release_v1_api_functions_aug_use
Release v1 api functions aug use
2016-04-20 16:33:53 -04:00
andrewxhill
0ab1cba06a add getgeombyid docs 2016-04-20 16:28:06 -04:00
John Krauss
594c6b5d80 test_point => TestPoint 2016-04-20 16:23:57 -04:00
andrewxhill
34631d8a52 add getgeomid doc 2016-04-20 16:23:17 -04:00
John Krauss
73f4a682cf fix whitespace and testpoint 2016-04-20 16:22:13 -04:00
John Krauss
1f6347aa23 adjusting expectations to reflect reality of the situation 2016-04-20 16:18:20 -04:00
John Krauss
d016c4b4bd remove typo in sql def 2016-04-20 16:15:39 -04:00
John Krauss
83119d0720 fix expectation typo 2016-04-20 16:12:23 -04:00
andrewxhill
1cff19127f stub in placeholders 2016-04-20 16:10:45 -04:00
John Krauss
e90a0c1900 tautolotest 2016-04-20 16:03:14 -04:00
andrewxhill
05e8b0ecfd added doc for getboundary 2016-04-20 16:03:08 -04:00
John Krauss
5e69297836 first pass obs_getmeasure 2016-04-20 15:51:19 -04:00
andrewxhill
b34b628c90 remove double and single quotes from table 2016-04-20 15:45:54 -04:00
andrewxhill
0374a64a8b remove quotes 2016-04-20 15:43:25 -04:00
andrewxhill
7f88e8c53a better table... 2016-04-20 15:42:44 -04:00
andrewxhill
7e4243192e better table... 2016-04-20 15:41:48 -04:00
andrewxhill
1968b6486b not sure where to put this table... 2016-04-20 15:31:05 -04:00
Stuart Lynn
b8d42a41dd adding OBS_GetAvailableBoundaries 2016-04-20 15:28:45 -04:00
andrewxhill
cf93a0193b docs stub 2016-04-20 15:20:27 -04:00
Andy Eschbacher
8f161c1e68 debugged getgeometry and getgeometryid 2016-04-20 15:13:22 -04:00
Stuart Lynn
a29876f47f making obs_search a bit more secure 2016-04-20 13:42:13 -04:00
Stuart Lynn
6e9f4a03d1 Adding OBS_search function and tests 2016-04-20 13:28:27 -04:00
68 changed files with 56570 additions and 4500 deletions

17
.github/PULL_REQUEST_TEMPLATE.md vendored Normal file
View File

@@ -0,0 +1,17 @@
## Request for a new Data observatory extension deploy
I'd like to request a new data observatory extension deploy: dump + extension
## Dump database id to be deployed
Please put here the dump id to be deployed: <dump_id>
## Data Observatory extension PRs included.
*Please update the NEWS.md*
Add down here the PR links to be added and deployed:
-
// @CartoDB/dataservices

2
.gitignore vendored
View File

@@ -2,3 +2,5 @@
src/pg/observatory--current--dev.sql
src/pg/observatory--dev--current.sql
src/pg/observatory--dev.sql
venv
*.pyc

View File

@@ -18,7 +18,7 @@ test: ## Run the tests for the development version of the extension
$(MAKE) -C $(EXT_DIR) test
# Generate a new release into release
release: ## Generate a new release of the extension. Only for telease manager
release: ## Generate a new release of the extension. Only for release manager
$(MAKE) -C $(EXT_DIR) release
# Install the current release.

194
NEWS.md
View File

@@ -1,3 +1,193 @@
0.0.1 (open date)
1.1.3 (2016-11-15)
* Temporarily ignore EU data for the sake of testing
1.1.2 (2016-11-09)
__Improvements__
* Update public `OBS_GetMeasure` to use highest ranked boundary, aiming for 500
geoms. ([#190](https://github.com/CartoDB/observatory-extension/issues/190))
* Update test generation to capture our raster tiles
* Standardize the way we generate our test points for `autotest.py`
* Add points for epa and eurostat
* Should support database dump generated 20161109
__API Changes (Internal)__
* Add internal `_OBS_GetGeometryScores`
1.1.1 (2016-10-14)
__Improvements__
* Test points for Canada and France ([#204](https://github.com/CartoDB/observatory-extension/issues/120))
1.1.0 (2016-10-04)
__Bugfixes__
* Fixed some minor errors in test suite
__Improvements__
* We now generate test fixtures from local data instead of remote server
([#120](https://github.com/CartoDB/observatory-extension/issues/120))
__API Changes__
* New function, `OBS_LegacyBuilderMetadata`, which resolves
([#133]( https://github.com/CartoDB/observatory-extension/issues/133))
* Creates "dimensional" metadata grabbing functions
(`OBS_GetAvailableNumerators`, `OBS_GetAvailableDenominators`,
`OBS_GetAvailableGeometries`, `OBS_GetAvailableTimespans`) which will be
used for obtaining metadata in the replacement for the Data Library
([CartoDB/design#104](https://github.com/CartoDB/design/issues/104)). This
is also referred to here ([CartoDB/design#68](https://github.com/CartoDB/design/issues/68)).
1.0.7 (2016-09-20)
__Bugfixes__
* `NULL` geometries or geometry IDs no longer result in an exception from any
augmentation functions ([#178](https://github.com/CartoDB/observatory-extension/issues/178))
__Improvements__
* Automatic tests work for Canada and Thailand
1.0.6 (2016-09-08)
__Improvements__
* New function structure for Table-level functions which allows to separate the
framework logic from the observatory measure functions.
1.0.5 (2016-08-12)
__Improvements__
* Integration tests moved to `src/python/test/`, and can be run without hitting
any HTTP SQL API.
1.0.4 (2016-07-26)
__Bugfixes__
* Always default arguments to `NULL`, which prevents duplication & overwrite by
dataservices-api
([#173](https://github.com/CartoDB/observatory-extension/issues/173))
1.0.3 (2016-07-25)
__Bugfixes__
* Raise exception instead of crashing when `OBS_GetMeasure` is passed a polygon
in combination with a non-summable measure ([cartodb/issues
#9063](https://github.com/CartoDB/cartodb/issues/9063))
* Unnecessary dependencies on cartodb and plpythonu removed
([#161](https://github.com/CartoDB/observatory-extension/issues/161))
* Tests forced to run in-order on all systems
([#162](https://github.com/CartoDB/observatory-extension/issues/162))
* Area normalization done by square kilometer instead of square meter for
polygons ([#158](https://github.com/CartoDB/observatory-extension/issues/158))
* `postgres-fdw` installed as required in unit test environment
([#166](https://github.com/CartoDB/observatory-extension/issues/166))
__Improvements__
* Added tests to make sure all functions can handle explicit NULL as default
([#159](https://github.com/CartoDB/observatory-extension/issues/159))
* Buffer and snaptogrid used to be far more liberal accepting problem geoms
([#170](https://github.com/CartoDB/observatory-extension/issues/160))
1.0.2 (2016-07-12)
---
__Bugfixes__
* Fix for `OBS_GetCategory` outside the US ([#135](https://github.com/CartoDB/observatory-extension/pull/137))
* `OBS_GetMeasure` now respects the `normalize` parameter even when passed
a multi/polygon. Previously, no normalization was erroneously assumed.
__Improvements__
* Automated tests cover Mexico data
* `obs_meta` is now provisioned during unit tests
* `obs_meta` is now used during end-to-end tests
* `OBS_GetMeasureByID` uses `obs_meta` internally, which should help
performance
* `OBS_GetCategory` uses `obs_meta` internally, which should help perfromance
* `OBS_GetCategory` will pick the correct category for an arbitrary polygon
(the category covering the highest % of that polygon)
* `OBS_GetMeasure` has been updated to use `obs_meta` internally, which should
help performance
* `OBS_GetMeasure` now can be passed "none" and skip normalization by area or
denominator for points
* Fixtures are only loaded at the start of the unit test suite, and dropped at the end,
instead of at the start/end of each individual test file
* Comment noisy NOTICEs ([#73](https://github.com/CartoDB/observatory-extension/issues/73))
1.0.1 (2016-07-01)
---
__Bugfixes__
* Fix for ERROR: Operation on mixed SRID geometries #130
1.0.0 (6/27/2016)
-----
* Incremented to 1.0.0 to be in compliance with [SemVer](http://semver.org/),
which disallows use of 0.x.x versions. This also reflects that we are
already in production.
__API Changes__
* Added `OBS_DumpVersion` to look up version data ([#118](https://github.com/CartoDB/observatory-extension/pull/118))
__Improvements__
* Whether data exists for a geom now determined by polygon intersection instead of
BBOX overlap ([#119](https://github.com/CartoDB/observatory-extension/pull/119))
* Automated tests cover Spanish and UK data
([#115](https://github.com/CartoDB/observatory-extension/pull/115))
* Automated tests cover `OBS_GetUSCensusMeasure`
([#105](https://github.com/CartoDB/observatory-extension/pull/105))
__Bugfixes__
* Geom table can have different `geomref_colname` than the data table
([#123](https://github.com/CartoDB/observatory-extension/pull/123))
0.0.5 (5/27/2016)
-----
* Adds new function `OBS_GetMeasureById` ([#96](https://github.com/CartoDB/observatory-extension/pull/96))
0.0.4 (5/25/2016)
-----
* Updates queries involving US Census measure tags to be more generic ([#95](https://github.com/CartoDB/observatory-extension/pull/95))
* Fixes tests which relied on an erroneous subset of block groups ([#95](https://github.com/CartoDB/observatory-extension/pull/95))
0.0.3 (5/24/2016)
-----
* Generalizes internal queries to properly pull from multiple named geometry references
* Adds tests for Who's on First boundaries
* Improves automatic fixtures testing script
0.0.2 (5/19/2016)
-----
* Adds Data Observatory exploration functions
* Adds Data Observatory boundary functions
* Adds Data Observatory measure functions
* Adds script to generate fixtures for tests
* Adds script for the automatic testing of metadata
* Adds full documentation for all included functions
* removes `cartodb` extension dependency
0.0.1 (5/19/2016)
------------------
* First iteration of `OBS_GetDemographicSnapshot(location Geometry(Point,4326))`;
* First iteration of `OBS_GetDemographicSnapshot(location Geometry(Point,4326))`

View File

@@ -20,12 +20,6 @@ script for the new release, `release/observatory--X.Y.Z.sql`:
make release
```
Then, the release manager shall produce upgrade and downgrade scripts
to migrate to/from the previous release. In the case of minor/patch
releases this simply consist in extracting the functions that have changed
and placing them in the proper `release/observatory--X.Y.Z--A.B.C.sql`
file.
The new release can be deployed for staging/smoke tests with this command:
```

View File

@@ -1,110 +1,13 @@
# Data Observatory Access
# Data Observatory Documentation
This file is for reference purposes only. It is intended for tracking the Data Observatory API functions that should be displayed from the Docs site. Like all API doc, the golden source of the code will live in this repo. I will pull the list of files below into the docs for the output.
This file is for reference purposes only. It is intended for tracking the Data Observatory functions that should be pulled into the live Docs site. Like all API doc, the golden source of this code will live in this observatory-extension repo, and will be edited in this repo. Other non-code related content will live as a local file in the Docs repo.
## Documentation
## OBS_GetDemographicSnapshot
The Demographic Snapshot API call enables you to collect demographic details around a point location. For example, you can take the coordinates of a bus stop and find the average population characteristics in that location. If you need help creating coordinates from addresses, [see our geocoding documentation].
Fields returned include information about income, education, transportation, race, and more. Not all fields will have information for every coordinate queried.
### API Syntax
```html
https://{{account name}}.cartodb.com/api/v2/sql?q=SELECT * FROM
OBS_GetDemographicSnapshot({{point geometry}})
```
#### Parameters
| Parameter | Description | Example |
|---|:-:|:-:|
| account name | The name of your CartoDB account where the Data Observatory has been enabled | example_account |
| point geometry | A WKB point geometry. You can use the helper function, CDB_LatLng to quickly generate one from latitude and longitude | CDB_LatLng(40.760410,-73.964242) |
#### Geographic Scope
The Demographic Snapshot API is available for the following countries:
* United States
### API Examples
__Get the Demographic Snapshot at Camp David__
```text
https://example_account.cartodb.com/api/v2/sql?q=SELECT * FROM
OBS_GetDemographicSnapshot(CDB_LatLng(39.648333, -77.465))
```
__Get the Demographic Snapshot in the Upper West Side__
```text
https://example_account.cartodb.com/api/v2/sql?q=SELECT * FROM
OBS_GetDemographicSnapshot(CDB_LatLng(40.80, -73.960))
```
### API Response
[Click to expand](https://gist.github.com/ohasselblad/c9e59a6e8da35728d0d81dfed131ed17)
### Available fields
The Demographic Snapshot contains a broad subset of demographic measures in the Data Observatory. Over 80 measurements are returned by a single API request.
__todo: turn this spreadsheet into a markdown table__
https://docs.google.com/spreadsheets/d/1U3Uajw_PsIy3_YgeujnJ7AiL2VREdT-ozdaulx07q2g/edit#gid=430723120
## OBS_GetSegmentationSnapshot
The Segmentation Snapshot API call enables you to determine the pre-calculated population segment for a location. For example, you can take the location of a store location and determine what classification of population exists around that location. If you need help creating coordinates from addresses, [see our geocoding documentation].
### API Syntax
```html
https://{{account name}}.cartodb.com/api/v2/sql?q=SELECT * FROM
OBS_GetSegmentationSnapshot({{point geometry}})
```
#### Parameters
| Parameter | Description | Example |
|---|:-:|:-:|
| account name | The name of your CartoDB account where the Data Observatory has been enabled | example_account |
| point geometry | A WKB point geometry. You can use the helper function, CDB_LatLng to quickly generate one from latitude and longitude | CDB_LatLng(40.760410,-73.964242) |
#### Geographic Scope
The Segmentation Snapshot API is available for the following countries:
* United States
### API Examples
__Get the Segmentation Snapshot around the MGM Grand__
```text
https://example_account.cartodb.com/api/v2/sql?q=SELECT * FROM
OBS_GetSegmentationSnapshot(CDB_LatLng(36.10222, -115.169516))
```
__Get the Segmentation Snapshot at CartoDB's NYC HQ__
```text
https://example_account.cartodb.com/api/v2/sql?q=SELECT * FROM
OBS_GetSegmentationSnapshot(CDB_LatLng(40.704512, -73.936669))
```
### API Response
__todo__
### Available segments
__todo__
### Methodology
Segmentation is a method that divides a target market into subgroups based on shared common traits. While we plan to make many different segmentation methods available, our first release includes a segmentation profile first defined in a paper, _Understanding America's Neighborhoods Using Uncertain Data from the American Community Survey: Output Data: US_tract_clusters_new_. [See here](http://www.tandfonline.com/doi/pdf/10.1080/00045608.2015.1052335) for further information on the work in that paper.
* Overview (local file in the Docs repo)
* Accessing the Data Observatory (local file in the Docs repo)
* [Measures Functions](measures_functions.md)
* [Boundary Functions](boundary_functions.md)
* [Discovery Functions](discovery_functions.md)
* [Glossary](local file in the Docs repo)
* [License](local file in the Docs repo)

274
doc/boundary_functions.md Normal file
View File

@@ -0,0 +1,274 @@
# Boundary Functions
Use the following functions to retrieve [Boundary](https://carto.com/docs/carto-engine/data/overview/#boundary-data) data. Data ranges from small areas (e.g. US Census Block Groups) to large areas (e.g. Countries). You can access boundaries by point location lookup, bounding box lookup, direct ID access and several other methods described below.
You can [access](https://carto.com/docs/carto-engine/data/accessing) boundaries through the CARTO Editor. The same methods will work if you are using the CARTO Engine to develop your application. We [encourage you](http://docs/carto-engine/data/accessing/#best-practices) to use table modifying methods (UPDATE and INSERT) over dynamic methods (SELECT).
## OBS_GetBoundariesByGeometry(polygon geometry, geometry_id text)
The ```OBS_GetBoundariesByGeometry(geometry, geometry_id)``` method returns a set of boundary geometries that intersect a supplied geometry. This can be used to find all boundaries that are within or overlap a bounding box. You have the ability to choose whether to retrieve all boundaries that intersect your supplied bounding box or only those that fall entirely inside of your bounding box.
#### Arguments
Name |Description
--- | ---
polygon | a bounding box or other WGS84 geometry
geometry_id | a string identifier for a boundary geometry
timespan (optional) | year(s) to request from ('NULL' (default) gives most recent)
overlap_type (optional) | one of '[intersects](http://postgis.net/docs/manual-2.2/ST_Intersects.html)' (default), '[contains](http://postgis.net/docs/manual-2.2/ST_Contains.html)', or '[within](http://postgis.net/docs/manual-2.2/ST_Within.html)'.
#### Returns
A table with the following columns:
Column Name | Description
--- | ---
the_geom | a boundary geometry (e.g., US Census tract boundaries)
geom_refs | a string identifier for the geometry (e.g., geoids of US Census tracts)
If geometries are not found for the requested `polygon`, `geometry_id`, `timespan`, or `overlap_type`, then null values are returned.
#### Example
Insert all Census Tracts from Lower Manhattan and nearby areas within the supplied bounding box to a table named `manhattan_census_tracts` which has columns `the_geom` (geometry) and `geom_refs` (text).
```sql
INSERT INTO manhattan_census_tracts(the_geom, geom_refs)
SELECT *
FROM OBS_GetBoundariesByGeometry(
ST_MakeEnvelope(-74.0251922607,40.6945658517,
-73.9651107788,40.7377626342,
4326),
'us.census.tiger.census_tract')
```
#### Errors
* If a geometry other than a point is passed as the first argument, an error is thrown: `Invalid geometry type (ST_Polygon), expecting 'ST_Point'`
* If an `overlap_type` other than the valid ones listed above is entered, then an error is thrown
## OBS_GetPointsByGeometry(polygon geometry, geometry_id text)
The ```OBS_GetPointsByGeometry(polygon, geometry_id)``` method returns point geometries and their geographical identifiers that intersect (or are contained by) a bounding box polygon and lie on the surface of a boundary corresponding to the boundary with same geographical identifiers (e.g., a point that is on a census tract with the same geoid). This is a useful alternative to ```OBS_GetBoundariesByGeometry``` listed above because it returns much less data for each location.
#### Arguments
Name |Description
--- | ---
polygon | a bounding box or other geometry
geometry_id | a string identifier for a boundary geometry
timespan (optional) | year(s) to request from (`NULL` (default) gives most recent)
overlap_type (optional) | one of '[intersects](http://postgis.net/docs/manual-2.2/ST_Intersects.html)' (default), '[contains](http://postgis.net/docs/manual-2.2/ST_Contains.html)', or '[within](http://postgis.net/docs/manual-2.2/ST_Within.html)'.
#### Returns
A table with the following columns:
Column Name | Description
--- | ---
the_geom | a point geometry on a boundary (e.g., a point that lies on a US Census tract)
geom_refs| a string identifier for the geometry (e.g., the geoid of a US Census tract)
If geometries are not found for the requested geometry, `geometry_id`, `timespan`, or `overlap_type`, then NULL values are returned.
#### Example
Insert points that lie on Census Tracts from Lower Manhattan and nearby areas within the supplied bounding box to a table named `manhattan_tract_points` which has columns `the_geom` (geometry) and `geom_refs` (text).
```sql
INSERT INTO manhattan_tract_points (the_geom, geom_refs)
SELECT *
FROM OBS_GetPointsByGeometry(
ST_MakeEnvelope(-74.0251922607,40.6945658517,
-73.9651107788,40.7377626342,
4326),
'us.census.tiger.census_tract')
```
#### Errors
* If a geometry other than a point is passed as the first argument, an error is thrown: `Invalid geometry type (ST_Point), expecting 'ST_MultiPolygon' or 'ST_Polygon'`
## OBS_GetBoundary(point_geometry, boundary_id)
The ```OBS_GetBoundary(point_geometry, boundary_id)``` method returns a boundary geometry defined as overlapping the point geometry and from the desired boundary set (e.g. Census Tracts). See the [Boundary ID Glossary](https://carto.com/docs/carto-engine/data/glossary/#boundary-ids). This is a useful method for performing aggregations of points.
#### Arguments
Name | Description
--- | ---
point_geometry | a WGS84 polygon geometry (the_geom)
boundary_id | a boundary identifier from the [Boundary ID Glossary](https://carto.com/docs/carto-engine/data/glossary/#boundary-ids)
timespan (optional) | year(s) to request from (`NULL` (default) gives most recent)
#### Returns
A boundary geometry. If no value is found at the requested `boundary_id` or `timespan`, a null value is returned.
Value | Description
--- | ---
geom | WKB geometry
#### Example
Overwrite a point geometry with a boundary geometry that contains it in your table
```SQL
UPDATE tablename
SET the_geom = OBS_GetBoundary(the_geom, 'us.census.tiger.block_group')
```
#### Errors
* If a geometry other than a point is passed, an error is thrown: `Invalid geometry type (ST_Line), expecting 'ST_Point'`
## OBS_GetBoundaryId(point_geometry, boundary_id)
The ```OBS_GetBoundaryId(point_geometry, boundary_id)``` returns a unique geometry_id for the boundary geometry that contains a given point geometry. See the [Boundary ID Glossary](http://docs/carto-engine/data/glossary/#boundary-ids). The method can be combined with ```OBS_GetBoundaryById(geometry_id)``` to create a point aggregation workflow.
#### Arguments
Name |Description
--- | ---
point_geometry | a WGS84 point geometry (the_geom)
boundary_id | a boundary identifier from the [Boundary ID Glossary](https://carto.com/docs/carto-engine/data/glossary/#boundary-ids)
timespan (optional) | year(s) to request from (`NULL` (default) gives most recent)
#### Returns
A TEXT boundary geometry id. If no value is found at the requested `boundary_id` or `timespan`, a null value is returned.
Value | Description
--- | ---
geometry_id | a string identifier of a geometry in the Boundaries
#### Example
Write the US Census block group geoid that contains the point geometry for every row as a new column in your table.
```SQL
UPDATE tablename
SET geometry_id = OBS_GetBoundaryId(the_geom, 'us.census.tiger.block_group')
```
#### Errors
* If a geometry other than a point is passed, an error is thrown: `Invalid geometry type (ST_Line), expecting 'ST_Point'`
## OBS_GetBoundaryById(geometry_id, boundary_id)
The ```OBS_GetBoundaryById(geometry_id, boundary_id)``` returns the boundary geometry for a unique geometry_id. A geometry_id can be found using the ```OBS_GetBoundaryId(point_geometry, boundary_id)``` method described above.
#### Arguments
Name | Description
--- | ---
geometry_id | a string identifier for a Boundary geometry
boundary_id | a boundary identifier from the [Boundary ID Glossary](https://carto.com/docs/carto-engine/data/glossary/#boundary-ids)
timespan (optional) | year(s) to request from (`NULL` (default) gives most recent)
#### Returns
A boundary geometry. If a geometry is not found for the requested `geometry_id`, `boundary_id`, or `timespan`, then a null value is returned.
Key | Description
--- | ---
geom | a WGS84 polygon geometry
#### Example
Use a table of `geometry_id`s (e.g., geoid from the U.S. Census) to select the unique boundaries that they correspond to and insert into a table called, `overlapping_polygons`. This is a useful method for creating new choropleths of aggregate data.
```SQL
INSERT INTO overlapping_polygons (the_geom, geometry_id, point_count)
SELECT
OBS_GetBoundaryById(geometry_id, 'us.census.tiger.county') As the_geom,
geometry_id,
count(*)
FROM tablename
GROUP BY geometry_id
```
## OBS_GetBoundariesByPointAndRadius(point geometry, radius numeric, boundary_id text)
The ```OBS_GetBoundariesByPointAndRadius(point, radius, boundary_id)``` method returns boundary geometries and their geographical identifiers that intersect (or are contained by) a circle centered on a point with a radius.
#### Arguments
Name |Description
--- | ---
point | a WGS84 point geometry
radius | a radius (in meters) from the center point
geometry_id | a string identifier for a boundary geometry
timespan (optional) | year(s) to request from (`NULL` (default) gives most recent)
overlap_type (optional) | one of '[intersects](http://postgis.net/docs/manual-2.2/ST_Intersects.html)' (default), '[contains](http://postgis.net/docs/manual-2.2/ST_Contains.html)', or '[within](http://postgis.net/docs/manual-2.2/ST_Within.html)'.
#### Returns
A table with the following columns:
Column Name | Description
--- | ---
the_geom | a boundary geometry (e.g., a US Census tract)
geom_refs| a string identifier for the geometry (e.g., the geoid of a US Census tract)
If geometries are not found for the requested point and radius, `geometry_id`, `timespan`, or `overlap_type`, then null values are returned.
#### Example
Insert into table `denver_census_tracts` the census tract boundaries and geom_refs of census tracts which intersect within 10 miles of downtown Denver, Colorado.
```sql
INSERT INTO denver_census_tracts(the_geom, geom_refs)
SELECT *
FROM OBS_GetBoundariesByPointAndRadius(
CDB_LatLng(39.7392, -104.9903), -- Denver, Colorado
10000 * 1.609, -- 10 miles (10km * conversion to miles)
'us.census.tiger.census_tract')
```
#### Errors
* If a geometry other than a point is passed, an error is thrown. E.g., `Invalid geometry type (ST_Line), expecting 'ST_Point'`
## OBS_GetPointsByPointAndRadius(point geometry, radius numeric, boundary_id text)
The ```OBS_GetPointsByPointAndRadius(point, radius, boundary_id)``` method returns point geometries on boundaries (e.g., a point that lies on a Census tract) and their geographical identifiers that intersect (or are contained by) a circle centered on a point with a radius.
#### Arguments
Name |Description
--- | ---
point | a WGS84 point geometry
radius | radius (in meters)
geometry_id | a string identifier for a boundary geometry
timespan (optional) | year(s) to request from (`NULL` (default) gives most recent)
overlap_type (optional) | one of '[intersects](http://postgis.net/docs/manual-2.2/ST_Intersects.html)' (default), '[contains](http://postgis.net/docs/manual-2.2/ST_Contains.html)', or '[within](http://postgis.net/docs/manual-2.2/ST_Within.html)'.
#### Returns
A table with the following columns:
Column Name | Description
--- | ---
the_geom | a point geometry (e.g., a point on a US Census tract)
geom_refs | a string identifier for the geometry (e.g., the geoid of a US Census tract)
If geometries are not found for the requested point and radius, `geometry_id`, `timespan`, or `overlap_type`, then null values are returned.
#### Example
Insert into table `denver_tract_points` points on US census tracts and their corresponding geoids for census tracts which intersect within 10 miles of downtown Denver, Colorado, USA.
```sql
INSERT INTO denver_tract_points(the_geom, geom_refs)
SELECT *
FROM OBS_GetPointsByPointAndRadius(
CDB_LatLng(39.7392, -104.9903), -- Denver, Colorado
10000 * 1.609, -- 10 miles (10km * conversion to miles)
'us.census.tiger.census_tract')
```
#### Errors
* If a geometry other than a point is passed, an error is thrown. E.g., `Invalid geometry type (ST_Line), expecting 'ST_Point'`

View File

@@ -0,0 +1,58 @@
# Discovery Functions
If you are using the [discovery methods](https://carto.com/docs/carto-engine/data/overview/#discovery-methods) from the Data Observatory, use the following functions to retrieve [boundary](https://carto.com/docs/carto-engine/data/overview/#boundary-data) and [measures](https://carto.com/docs/carto-engine/data/overview/#measures-data) data.
## OBS_Search(search_term)
Use arbitrary text to search all available measures
#### Arguments
Name | Description
--- | ---
search_term | a string to search for available measures
boundary_id | a string identifier for a boundary geometry (optional)
#### Returns
A TABLE containing the following properties
Key | Description
--- | ---
id | the unique id of the measure for use with the ```OBS_GetMeasure``` function
name | the human readable name of the measure
description | a brief description of the measure
aggregate | **sum** are raw count values, **median** are statistical medians, **average** are statistical averages, **undefined** other (e.g. an index value)
source | where the data came from (e.g. US Census Bureau)
#### Example
```SQL
SELECT * FROM OBS_Search('home value')
```
## OBS_GetAvailableBoundaries(point_geometry)
Returns available `boundary_id`s at a given point geometry.
#### Arguments
Name | Description
--- | ---
point_geometry | a WGS84 point geometry (e.g. the_geom)
#### Returns
A TABLE containing the following properties
Key | Description
--- | ---
boundary_id | a boundary identifier from the [Boundary ID Glossary](https://carto.com/docs/carto-engine/data/glossary/#boundary-ids)
description | a brief description of the boundary dataset
time_span | the timespan attached the boundary. this does not mean that the boundary is invalid outside of the timespan, but is the explicit timespan published with the geometry.
#### Example
```SQL
SELECT * FROM OBS_GetAvailableBoundaries(CDB_LatLng(40.7, -73.9))
```

197
doc/measures_functions.md Normal file
View File

@@ -0,0 +1,197 @@
# Measures Functions
[Data Observatory Measures](https://carto.com/docs/carto-engine/data/overview/#measures-methods) are the numerical location data you can access. The measure functions allow you to access individual measures to augment your own data or integrate in your analysis workflows. Measures are used by sending an identifier or a geometry (point or polygon) and receiving back a measure (an absolute value) for that location.
There are hundreds of measures and the list is growing with each release. You can currently discover and learn about measures contained in the Data Observatory by downloading our [Data Catalog](http://data-observatory.s3.amazonaws.com/observatory.pdf).
You can [access](https://carto.com/docs/carto-engine/data/accessing) measures through the CARTO Editor. The same methods will work if you are using the CARTO Engine to develop your application. We [encourage you](https://carto.com/docs/carto-engine/data/accessing/#best-practices) to use table modifying methods (UPDATE and INSERT) over dynamic methods (SELECT).
## OBS_GetUSCensusMeasure(point geometry, measure_name text)
The ```OBS_GetUSCensusMeasure(point, measure_name)``` function returns a measure based on a subset of the US Census variables at a point location. The ```OBS_GetUSCensusMeasure``` function is limited to only a subset of all measures that are available in the Data Observatory, to access the full list, use measure IDs with the ```OBS_GetMeasure``` function below.
#### Arguments
Name |Description
--- | ---
point | a WGS84 point geometry (the_geom)
measure_name | a human readable name of a US Census variable. The list of measure_names is [available in the Glossary](https://carto.com/docs/carto-engine/data/glossary/#obsgetuscensusmeasure-names-table).
normalize | for measures that are are **sums** (e.g. population) the default normalization is 'area' and response comes back as a rate per square kilometer. Other options are 'denominator', which will use the denominator specified in the [Data Catalog](http://data-observatory.s3.amazonaws.com/observatory.pdf) (optional)
boundary_id | source of geometries to pull measure from (e.g., 'us.census.tiger.census_tract')
time_span | time span of interest (e.g., 2010 - 2014)
#### Returns
A NUMERIC value
Key | Description
--- | ---
value | the raw or normalized measure
#### Example
Add a measure to an empty numeric column based on point locations in your table.
```SQL
UPDATE tablename
SET total_population = OBS_GetUSCensusMeasure(the_geom, 'Total Population')
```
## OBS_GetUSCensusMeasure(polygon geometry, measure_name text)
The ```OBS_GetUSCensusMeasure(point, measure_name)``` function returns a measure based on a subset of the US Census variables within a given polygon. The ```OBS_GetUSCensusMeasure``` function is limited to only a subset of all measures that are available in the Data Observatory, to access the full list, use the ```OBS_GetUSCensusMeasure``` function below.
#### Arguments
Name |Description
--- | ---
polygon | a WGS84 polygon geometry (the_geom)
measure_name | a human readable string name of a US Census variable. The list of measure_names is [available in the Glossary](https://carto.com/docs/carto-engine/data/glossary/#obsgetuscensusmeasure-names-table).
normalize | for measures that are **sums** (e.g. population) the default normalization is 'none' and response comes back as a raw value. Other options are 'denominator', which will use the denominator specified in the [Data Catalog](http://data-observatory.s3.amazonaws.com/observatory.pdf) (optional)
boundary_id | source of geometries to pull measure from (e.g., 'us.census.tiger.census_tract')
time_span | time span of interest (e.g., 2010 - 2014)
#### Returns
A NUMERIC value
Key | Description
--- | ---
value | the raw or normalized measure
#### Example
Add a measure to an empty numeric column based on polygons in your table
```SQL
UPDATE tablename
SET local_male_population = OBS_GetUSCensusMeasure(the_geom, 'Male Population')
```
## OBS_GetMeasure(point geometry, measure_id text)
The ```OBS_GetMeasure(point, measure_id)``` function returns any Data Observatory measure at a point location. You can browse all available Measures in the [Catalog](http://data-observatory.s3.amazonaws.com/observatory.pdf).
#### Arguments
Name |Description
--- | ---
point | a WGS84 point geometry (the_geom)
measure_id | a measure identifier from the Data Observatory ([see available measures](https://cartodb.github.io/bigmetadata/observatory.pdf)). It is important to note that these are different than 'measure_name' used in the Census based functions above.
normalize | for measures that are are **sums** (e.g. population) the default normalization is 'area' and response comes back as a rate per square kilometer. The other option is 'denominator', which will use the denominator specified in the [Data Catalog](http://data-observatory.s3.amazonaws.com/observatory.pdf). (optional)
boundary_id | source of geometries to pull measure from (e.g., 'us.census.tiger.census_tract')
time_span | time span of interest (e.g., 2010 - 2014)
#### Returns
A NUMERIC value
Key | Description
--- | ---
value | the raw or normalized measure
#### Example
Add a measure to an empty numeric column based on point locations in your table
```SQL
UPDATE tablename
SET median_home_value_sqft = OBS_GetMeasure(the_geom, 'us.zillow.AllHomes_MedianValuePerSqft')
```
## OBS_GetMeasure(polygon geometry, measure_id text)
The ```OBS_GetMeasure(polygon, measure_id)``` function returns any Data Observatory measure calculated within a polygon.
#### Arguments
Name |Description
--- | ---
polygon_geometry | a WGS84 polygon geometry (the_geom)
measure_id | a measure identifier from the Data Observatory ([see available measures](https://cartodb.github.io/bigmetadata/observatory.pdf))
normalize | for measures that are are **sums** (e.g. population) the default normalization is 'none' and response comes back as a raw value. Other options are 'denominator', which will use the denominator specified in the [Data Catalog](http://data-observatory.s3.amazonaws.com/observatory.pdf) (optional)
boundary_id | source of geometries to pull measure from (e.g., 'us.census.tiger.census_tract')
time_span | time span of interest (e.g., 2010 - 2014)
#### Returns
A NUMERIC value
Key | Description
--- | ---
value | the raw or normalized measure
#### Example
Add a measure to an empty column based on polygons in your table
```SQL
UPDATE tablename
SET household_count = OBS_GetMeasure(the_geom, 'us.census.acs.B11001001')
```
#### Errors
* If an unrecognized normalization type is input, raise an error: `'Only valid inputs for "normalize" are "area" (default) and "denominator".`
## OBS_GetMeasureById(geom_ref text, measure_id text, boundary_id text)
The ```OBS_GetMeasureById(geom_ref, measure_id, boundary_id)``` function returns any Data Observatory measure that corresponds to the boundary in ```boundary_id``` that has a geometry reference of ```geom_ref```.
#### Arguments
Name |Description
--- | ---
geom_ref | a geometry reference (e.g., a US Census geoid)
measure_id | a measure identifier from the Data Observatory ([see available measures](https://cartodb.github.io/bigmetadata/observatory.pdf))
boundary_id | source of geometries to pull measure from (e.g., 'us.census.tiger.census_tract')
time_span (optional) | time span of interest (e.g., 2010 - 2014). If `NULL` is passed, the measure from the most recent data will be used.
#### Returns
A NUMERIC value
Key | Description
--- | ---
value | the raw measure associated with `geom_ref`
#### Example
Add a measure to an empty column based on county geoids in your table
```SQL
UPDATE tablename
SET household_count = OBS_GetMeasureById(geoid_column, 'us.census.acs.B11001001', 'us.census.tiger.county')
```
#### Errors
* Returns `NULL` if there is a mismatch between the geometry reference and the boundary id such as using the geoid of a county with the boundary of block groups
## OBS_GetCategory(point geometry, category_id text)
The ```OBS_GetCategory(point, category_id)``` function returns any Data Observatory Category value at a point location. The Categories available are currently limited to Segmentation categories. See the Segmentation section of the [Catalog](http://data-observatory.s3.amazonaws.com/observatory.pdf) for more detail.
#### Arguments
Name |Description
--- | ---
point | a WGS84 point geometry (the_geom)
category_id | a category identifier from the Data Observatory ([see available measures](https://cartodb.github.io/bigmetadata/observatory.pdf)).
#### Returns
A TEXT value
Key | Description
--- | ---
value | a text based category found at the supplied point
#### Example
Add the Category to an empty column text column based on point locations in your table
```SQL
UPDATE tablename
SET segmentation = OBS_GetCategory(the_geom, 'us.census.spielman_singleton_segments.X55')
```

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -1,5 +1,5 @@
comment = 'CartoDB Observatory backend extension'
default_version = '0.0.1'
requires = 'postgis'
default_version = '1.1.3'
requires = 'postgis, postgres_fdw'
superuser = true
schema = cdb_observatory

19
scripts/README.md Normal file
View File

@@ -0,0 +1,19 @@
## Automatic tests and utilities
### Installation
Python 2.7 should cover you. Virtualenv recommended.
virtualenv venv
source venv/bin/activate
pip install -r requirements.txt
### Execution
Currently, we don't have direct access to the metadata end-to-end. This only
affects the generation of tests. As a stopgap, we have to define a connection
to the test Observatory account.
Run automated tests against a hostname:
(venv) OBS_HOSTNAME=<hostname.cartodb.com> OBS_API_KEY=<api_key> OBS_META_HOSTNAME=observatory.cartodb.com OBS_META_API_KEY= nosetests scripts/autotest.py

View File

@@ -0,0 +1,331 @@
import os
import psycopg2
import subprocess
DB_CONN = psycopg2.connect('postgres://{user}:{password}@{host}:{port}/{database}'.format(
user=os.environ.get('PGUSER', 'postgres'),
password=os.environ.get('PGPASSWORD', ''),
host=os.environ.get('PGHOST', 'localhost'),
port=os.environ.get('PGPORT', '5432'),
database=os.environ.get('PGDATABASE', 'postgres'),
))
CURSOR = DB_CONN.cursor()
def query(q):
'''
Query the database.
'''
try:
CURSOR.execute(q)
return CURSOR
except:
DB_CONN.rollback()
raise
def commit():
try:
DB_CONN.commit()
except:
DB_CONN.rollback()
raise
def get_tablename_query(column_id, boundary_id, timespan):
"""
given a column_id, boundary-id (us.census.tiger.block_group), and
timespan, give back the current table hash from the data observatory
"""
return """
SELECT t.tablename, geoid_ct.colname colname, t.id table_id
FROM observatory.obs_table t,
observatory.obs_column_table geoid_ct,
observatory.obs_column_table data_ct
WHERE
t.id = geoid_ct.table_id AND
t.id = data_ct.table_id AND
geoid_ct.column_id =
(SELECT source_id
FROM observatory.obs_column_to_column
WHERE target_id = '{boundary_id}'
AND reltype = 'geom_ref'
) AND
data_ct.column_id = '{column_id}' AND
timespan = '{timespan}'
""".format(column_id=column_id,
boundary_id=boundary_id,
timespan=timespan)
METADATA_TABLES = ['obs_table', 'obs_column_table', 'obs_column', 'obs_column_tag',
'obs_tag', 'obs_column_to_column', 'obs_dump_version', 'obs_meta',
'obs_meta_numer', 'obs_meta_denom', 'obs_meta_geom',
'obs_meta_timespan', 'obs_column_table_tile', ]
FIXTURES = [
('us.census.acs.B01003001_quantile', 'us.census.tiger.census_tract', '2010 - 2014'),
('us.census.acs.B01001002_quantile', 'us.census.tiger.census_tract', '2010 - 2014'),
('us.census.acs.B01001026_quantile', 'us.census.tiger.census_tract', '2010 - 2014'),
('us.census.acs.B01002001_quantile', 'us.census.tiger.census_tract', '2010 - 2014'),
('us.census.acs.B03002003_quantile', 'us.census.tiger.census_tract', '2010 - 2014'),
('us.census.acs.B03002004_quantile', 'us.census.tiger.census_tract', '2010 - 2014'),
('us.census.acs.B03002006_quantile', 'us.census.tiger.census_tract', '2010 - 2014'),
('us.census.acs.B03002012_quantile', 'us.census.tiger.census_tract', '2010 - 2014'),
('us.census.acs.B05001006_quantile', 'us.census.tiger.census_tract', '2010 - 2014'),
('us.census.acs.B08006001_quantile', 'us.census.tiger.census_tract', '2010 - 2014'),
('us.census.acs.B08006002_quantile', 'us.census.tiger.census_tract', '2010 - 2014'),
('us.census.acs.B08006008_quantile', 'us.census.tiger.census_tract', '2010 - 2014'),
('us.census.acs.B08006009_quantile', 'us.census.tiger.census_tract', '2010 - 2014'),
('us.census.acs.B08006011_quantile', 'us.census.tiger.census_tract', '2010 - 2014'),
('us.census.acs.B08006015_quantile', 'us.census.tiger.census_tract', '2010 - 2014'),
('us.census.acs.B08006017_quantile', 'us.census.tiger.census_tract', '2010 - 2014'),
('us.census.acs.B09001001_quantile', 'us.census.tiger.census_tract', '2010 - 2014'),
('us.census.acs.B11001001_quantile', 'us.census.tiger.census_tract', '2010 - 2014'),
('us.census.acs.B14001001_quantile', 'us.census.tiger.census_tract', '2010 - 2014'),
('us.census.acs.B14001002_quantile', 'us.census.tiger.census_tract', '2010 - 2014'),
('us.census.acs.B14001005_quantile', 'us.census.tiger.census_tract', '2010 - 2014'),
('us.census.acs.B14001006_quantile', 'us.census.tiger.census_tract', '2010 - 2014'),
('us.census.acs.B14001007_quantile', 'us.census.tiger.census_tract', '2010 - 2014'),
('us.census.acs.B14001008_quantile', 'us.census.tiger.census_tract', '2010 - 2014'),
('us.census.acs.B15003001_quantile', 'us.census.tiger.census_tract', '2010 - 2014'),
('us.census.acs.B15003017_quantile', 'us.census.tiger.census_tract', '2010 - 2014'),
('us.census.acs.B15003022_quantile', 'us.census.tiger.census_tract', '2010 - 2014'),
('us.census.acs.B15003023_quantile', 'us.census.tiger.census_tract', '2010 - 2014'),
('us.census.acs.B16001001_quantile', 'us.census.tiger.census_tract', '2010 - 2014'),
('us.census.acs.B16001002_quantile', 'us.census.tiger.census_tract', '2010 - 2014'),
('us.census.acs.B16001003_quantile', 'us.census.tiger.census_tract', '2010 - 2014'),
('us.census.acs.B17001001_quantile', 'us.census.tiger.census_tract', '2010 - 2014'),
('us.census.acs.B17001002_quantile', 'us.census.tiger.census_tract', '2010 - 2014'),
('us.census.acs.B19013001_quantile', 'us.census.tiger.census_tract', '2010 - 2014'),
('us.census.acs.B19083001_quantile', 'us.census.tiger.census_tract', '2010 - 2014'),
('us.census.acs.B19301001_quantile', 'us.census.tiger.census_tract', '2010 - 2014'),
('us.census.acs.B25001001_quantile', 'us.census.tiger.census_tract', '2010 - 2014'),
('us.census.acs.B25002003_quantile', 'us.census.tiger.census_tract', '2010 - 2014'),
('us.census.acs.B25004002_quantile', 'us.census.tiger.census_tract', '2010 - 2014'),
('us.census.acs.B25004004_quantile', 'us.census.tiger.census_tract', '2010 - 2014'),
('us.census.acs.B25058001_quantile', 'us.census.tiger.census_tract', '2010 - 2014'),
('us.census.acs.B25071001_quantile', 'us.census.tiger.census_tract', '2010 - 2014'),
('us.census.acs.B25075001_quantile', 'us.census.tiger.census_tract', '2010 - 2014'),
('us.census.acs.B25075025_quantile', 'us.census.tiger.census_tract', '2010 - 2014'),
('us.census.acs.B01003001', 'us.census.tiger.block_group', '2010 - 2014'),
('us.census.acs.B01001002', 'us.census.tiger.block_group', '2010 - 2014'),
('us.census.acs.B01001026', 'us.census.tiger.block_group', '2010 - 2014'),
('us.census.acs.B01002001', 'us.census.tiger.block_group', '2010 - 2014'),
('us.census.acs.B03002003', 'us.census.tiger.block_group', '2010 - 2014'),
('us.census.acs.B03002004', 'us.census.tiger.block_group', '2010 - 2014'),
('us.census.acs.B03002006', 'us.census.tiger.block_group', '2010 - 2014'),
('us.census.acs.B03002012', 'us.census.tiger.block_group', '2010 - 2014'),
('us.census.acs.B03002005', 'us.census.tiger.block_group', '2010 - 2014'),
('us.census.acs.B03002008', 'us.census.tiger.block_group', '2010 - 2014'),
('us.census.acs.B03002009', 'us.census.tiger.block_group', '2010 - 2014'),
('us.census.acs.B03002002', 'us.census.tiger.block_group', '2010 - 2014'),
('us.census.acs.B11001001', 'us.census.tiger.block_group', '2010 - 2014'),
('us.census.acs.B15003001', 'us.census.tiger.block_group', '2010 - 2014'),
('us.census.acs.B15003017', 'us.census.tiger.block_group', '2010 - 2014'),
('us.census.acs.B15003019', 'us.census.tiger.block_group', '2010 - 2014'),
('us.census.acs.B15003020', 'us.census.tiger.block_group', '2010 - 2014'),
('us.census.acs.B15003021', 'us.census.tiger.block_group', '2010 - 2014'),
('us.census.acs.B15003022', 'us.census.tiger.block_group', '2010 - 2014'),
('us.census.acs.B15003023', 'us.census.tiger.block_group', '2010 - 2014'),
('us.census.acs.B19013001', 'us.census.tiger.block_group', '2010 - 2014'),
('us.census.acs.B19083001', 'us.census.tiger.block_group', '2010 - 2014'),
('us.census.acs.B19301001', 'us.census.tiger.block_group', '2010 - 2014'),
('us.census.acs.B25001001', 'us.census.tiger.block_group', '2010 - 2014'),
('us.census.acs.B25002003', 'us.census.tiger.block_group', '2010 - 2014'),
('us.census.acs.B25004002', 'us.census.tiger.block_group', '2010 - 2014'),
('us.census.acs.B25004004', 'us.census.tiger.block_group', '2010 - 2014'),
('us.census.acs.B25058001', 'us.census.tiger.block_group', '2010 - 2014'),
('us.census.acs.B25071001', 'us.census.tiger.block_group', '2010 - 2014'),
('us.census.acs.B25075001', 'us.census.tiger.block_group', '2010 - 2014'),
('us.census.acs.B25075025', 'us.census.tiger.block_group', '2010 - 2014'),
('us.census.acs.B25081002', 'us.census.tiger.block_group', '2010 - 2014'),
('us.census.acs.B08134001', 'us.census.tiger.block_group', '2010 - 2014'),
('us.census.acs.B08134002', 'us.census.tiger.block_group', '2010 - 2014'),
('us.census.acs.B08134003', 'us.census.tiger.block_group', '2010 - 2014'),
('us.census.acs.B08134004', 'us.census.tiger.block_group', '2010 - 2014'),
('us.census.acs.B08134005', 'us.census.tiger.block_group', '2010 - 2014'),
('us.census.acs.B08134006', 'us.census.tiger.block_group', '2010 - 2014'),
('us.census.acs.B08134007', 'us.census.tiger.block_group', '2010 - 2014'),
('us.census.acs.B08134008', 'us.census.tiger.block_group', '2010 - 2014'),
('us.census.acs.B08134009', 'us.census.tiger.block_group', '2010 - 2014'),
('us.census.acs.B08134010', 'us.census.tiger.block_group', '2010 - 2014'),
('us.census.acs.B08135001', 'us.census.tiger.block_group', '2010 - 2014'),
('us.census.acs.B19001002', 'us.census.tiger.block_group', '2010 - 2014'),
('us.census.acs.B19001003', 'us.census.tiger.block_group', '2010 - 2014'),
('us.census.acs.B19001004', 'us.census.tiger.block_group', '2010 - 2014'),
('us.census.acs.B19001005', 'us.census.tiger.block_group', '2010 - 2014'),
('us.census.acs.B19001006', 'us.census.tiger.block_group', '2010 - 2014'),
('us.census.acs.B19001007', 'us.census.tiger.block_group', '2010 - 2014'),
('us.census.acs.B19001008', 'us.census.tiger.block_group', '2010 - 2014'),
('us.census.acs.B19001009', 'us.census.tiger.block_group', '2010 - 2014'),
('us.census.acs.B19001010', 'us.census.tiger.block_group', '2010 - 2014'),
('us.census.acs.B19001011', 'us.census.tiger.block_group', '2010 - 2014'),
('us.census.acs.B19001012', 'us.census.tiger.block_group', '2010 - 2014'),
('us.census.acs.B19001013', 'us.census.tiger.block_group', '2010 - 2014'),
('us.census.acs.B19001014', 'us.census.tiger.block_group', '2010 - 2014'),
('us.census.acs.B19001015', 'us.census.tiger.block_group', '2010 - 2014'),
('us.census.acs.B19001016', 'us.census.tiger.block_group', '2010 - 2014'),
('us.census.acs.B19001017', 'us.census.tiger.block_group', '2010 - 2014'),
('us.census.tiger.census_tract', 'us.census.tiger.census_tract', '2014'),
('us.census.tiger.block_group', 'us.census.tiger.block_group', '2014'),
('us.census.tiger.zcta5', 'us.census.tiger.zcta5', '2014'),
('us.census.tiger.county', 'us.census.tiger.county', '2014'),
('us.census.acs.B01001002', 'us.census.tiger.block_group', '2010 - 2014'),
('us.census.acs.B01003001', 'us.census.tiger.census_tract', '2010 - 2014'),
('us.census.acs.B01003001_quantile', 'us.census.tiger.census_tract', '2010 - 2014'),
('us.census.acs.B01003001', 'us.census.tiger.block_group', '2010 - 2014'),
('us.census.spielman_singleton_segments.X2', 'us.census.tiger.census_tract', '2010 - 2014'),
('us.census.spielman_singleton_segments.X10', 'us.census.tiger.census_tract', '2010 - 2014'),
('us.census.spielman_singleton_segments.X31', 'us.census.tiger.census_tract', '2010 - 2014'),
('us.census.spielman_singleton_segments.X55', 'us.census.tiger.census_tract', '2010 - 2014'),
('us.zillow.AllHomes_Zhvi', 'us.census.tiger.zcta5', '2014-01'),
('us.zillow.AllHomes_Zhvi', 'us.census.tiger.zcta5', '2016-06'),
('whosonfirst.wof_country_geom', 'whosonfirst.wof_country_geom', '2016'),
('us.census.tiger.zcta5_clipped', 'us.census.tiger.zcta5_clipped', '2014'),
('us.census.tiger.block_group_clipped', 'us.census.tiger.block_group_clipped', '2014'),
('us.census.tiger.census_tract_clipped', 'us.census.tiger.census_tract_clipped', '2014'),
]
OUTFILE_PATH = os.path.join(os.path.dirname(__file__), '..',
'src/pg/test/fixtures/load_fixtures.sql')
DROPFILE_PATH = os.path.join(os.path.dirname(__file__), '..',
'src/pg/test/fixtures/drop_fixtures.sql')
def dump(cols, tablename, where=''):
with open(DROPFILE_PATH, 'a') as dropfile:
dropfile.write('DROP TABLE IF EXISTS observatory.{tablename};\n'.format(
tablename=tablename,
))
subprocess.check_call('pg_dump -x --section=pre-data -t observatory.{tablename} '
' | sed "s:SET search_path.*::" '
' | sed "s:CREATE TABLE :CREATE TABLE observatory.:" '
' | sed "s:ALTER TABLE.*OWNER.*::" '
' >> {outfile}'.format(
tablename=tablename,
outfile=OUTFILE_PATH,
), shell=True)
with open(OUTFILE_PATH, 'a') as outfile:
outfile.write('COPY observatory."{}" FROM stdin WITH CSV HEADER;\n'.format(tablename))
subprocess.check_call('''
psql -c "COPY (SELECT {cols} \
FROM observatory.{tablename} {where}) \
TO STDOUT WITH CSV HEADER" >> {outfile}'''.format(
cols=cols,
tablename=tablename,
where=where,
outfile=OUTFILE_PATH,
), shell=True)
with open(OUTFILE_PATH, 'a') as outfile:
outfile.write('\\.\n\n')
def main():
unique_tables = set()
for f in FIXTURES:
column_id, boundary_id, timespan = f
tablename_query = get_tablename_query(column_id, boundary_id, timespan)
resp = query(tablename_query).fetchone()
if resp:
tablename, colname, table_id = resp
else:
print("Could not find table for {}, {}, {}".format(
column_id, boundary_id, timespan))
continue
table_colname = (tablename, colname, boundary_id, table_id, )
if table_colname not in unique_tables:
print(table_colname)
unique_tables.add(table_colname)
print unique_tables
with open(OUTFILE_PATH, 'w') as outfile:
outfile.write('SET client_min_messages TO WARNING;\n\\set ECHO none\n')
outfile.write('CREATE SCHEMA IF NOT EXISTS observatory;\n\n')
with open(DROPFILE_PATH, 'w') as dropfile:
dropfile.write('SET client_min_messages TO WARNING;\n\\set ECHO none\n')
for tablename in METADATA_TABLES:
print(tablename)
if tablename == 'obs_meta':
where = "WHERE " + " OR ".join([
"(numer_id, geom_id, numer_timespan) = ('{}', '{}', '{}')".format(
numer_id, geom_id, timespan)
for numer_id, geom_id, timespan in FIXTURES
])
elif tablename == 'obs_meta_numer':
where = "WHERE " + " OR ".join([
"numer_id IN ('{}', '{}')".format(numer_id, geom_id)
for numer_id, geom_id, timespan in FIXTURES
])
elif tablename == 'obs_meta_denom':
where = "WHERE " + " OR ".join([
"denom_id IN ('{}', '{}')".format(numer_id, geom_id)
for numer_id, geom_id, timespan in FIXTURES
])
elif tablename == 'obs_meta_geom':
where = "WHERE " + " OR ".join([
"geom_id IN ('{}', '{}')".format(numer_id, geom_id)
for numer_id, geom_id, timespan in FIXTURES
])
elif tablename == 'obs_meta_timespan':
where = "WHERE " + " OR ".join([
"timespan_id = ('{}')".format(timespan)
for numer_id, geom_id, timespan in FIXTURES
])
elif tablename == 'obs_column':
where = "WHERE " + " OR ".join([
"id IN ('{}', '{}')".format(numer_id, geom_id)
for numer_id, geom_id, timespan in FIXTURES
])
elif tablename == 'obs_column_tag':
where = "WHERE " + " OR ".join([
"column_id IN ('{}', '{}')".format(numer_id, geom_id)
for numer_id, geom_id, timespan in FIXTURES
])
elif tablename in ('obs_column_table', 'obs_column_table_tile', ):
where = 'WHERE column_id IN ({numer_ids}) ' \
'OR column_id IN ({geom_ids}) ' \
'OR table_id IN ({table_ids}) '.format(
numer_ids=','.join(["'{}'".format(x) for x, _, _ in FIXTURES]),
geom_ids=','.join(["'{}'".format(x) for _, x, _ in FIXTURES]),
table_ids=','.join(["'{}'".format(x) for _, _, _, x in unique_tables])
)
elif tablename == 'obs_column_to_column':
where = "WHERE " + " OR ".join([
"source_id IN ('{}', '{}') OR target_id IN ('{}', '{}')".format(
numer_id, geom_id, numer_id, geom_id)
for numer_id, geom_id, timespan in FIXTURES
])
elif tablename == 'obs_table':
where = 'WHERE timespan IN ({timespans}) ' \
'OR id IN ({table_ids}) '.format(
timespans=','.join(["'{}'".format(x) for _, _, x in FIXTURES]),
table_ids=','.join(["'{}'".format(x) for _, _, _, x in unique_tables])
)
else:
where = ''
dump('*', tablename, where)
for tablename, colname, boundary_id, table_id in unique_tables:
if 'zcta5' in boundary_id:
where = '\'11%\''
compare = 'LIKE'
elif 'whosonfirst' in boundary_id:
where = '(\'85632785\',\'85633051\',\'85633111\',\'85633147\',\'85633253\',\'85633267\')'
compare = 'IN'
else:
where = '\'36047%\''
compare = 'LIKE'
print ' '.join(['*', tablename, "WHERE {}::text {} {}".format(colname, compare, where)])
dump('*', tablename, "WHERE {}::text {} {}".format(colname, compare, where))
if __name__ == '__main__':
main()

3
scripts/requirements.txt Normal file
View File

@@ -0,0 +1,3 @@
requests
nose
nose_parameterized

View File

@@ -24,7 +24,7 @@ $(DATA): $(SOURCES_DATA)
$(SED) $(REPLACEMENTS) $(SOURCES_DATA_DIR)/*.sql > $@
TEST_DIR = test
REGRESS = $(notdir $(basename $(wildcard $(TEST_DIR)/sql/*test.sql)))
REGRESS = $(sort $(notdir $(basename $(wildcard $(TEST_DIR)/sql/*test.sql))))
REGRESS_OPTS = --inputdir='$(TEST_DIR)' --outputdir='$(TEST_DIR)'
PG_CONFIG = pg_config

View File

@@ -1,5 +1,5 @@
comment = 'CartoDB Observatory backend extension'
default_version = '0.0.1'
requires = 'postgis'
default_version = '1.1.3'
requires = 'postgis, postgres_fdw'
superuser = true
schema = cdb_observatory

View File

@@ -0,0 +1,67 @@
CREATE OR REPLACE FUNCTION cdb_observatory._OBS_ConnectRemoteTable(fdw_name text, schema_name text, user_dbname text, user_hostname text, username text, user_tablename text, user_schema text)
RETURNS void
AS $$
DECLARE
row record;
option record;
connection_str json;
BEGIN
-- Build connection string
connection_str := '{"server":{"extensions":"postgis", "dbname":"'
|| user_dbname ||'", "host":"' || user_hostname ||'", "port":"6432"}, "users":{"public"'
|| ':{"user":"' || username ||'", "password":""} } }';
-- This function tries to be as idempotent as possible, by not creating anything more than once
-- (not even using IF NOT EXIST to avoid throwing warnings)
IF NOT EXISTS ( SELECT * FROM pg_extension WHERE extname = 'postgres_fdw') THEN
CREATE EXTENSION postgres_fdw;
END IF;
-- Create FDW first if it does not exist
IF NOT EXISTS ( SELECT * FROM pg_foreign_server WHERE srvname = fdw_name)
THEN
EXECUTE FORMAT('CREATE SERVER %I FOREIGN DATA WRAPPER postgres_fdw', fdw_name);
END IF;
-- Set FDW settings
FOR row IN SELECT p.key, p.value from lateral json_each_text(connection_str->'server') p
LOOP
IF NOT EXISTS (WITH a AS (select split_part(unnest(srvoptions), '=', 1) as options from pg_foreign_server where srvname=fdw_name) SELECT * from a where options = row.key)
THEN
EXECUTE FORMAT('ALTER SERVER %I OPTIONS (ADD %I %L)', fdw_name, row.key, row.value);
ELSE
EXECUTE FORMAT('ALTER SERVER %I OPTIONS (SET %I %L)', fdw_name, row.key, row.value);
END IF;
END LOOP;
-- Create user mappings
FOR row IN SELECT p.key, p.value from lateral json_each(connection_str->'users') p LOOP
-- Check if entry on pg_user_mappings exists
IF NOT EXISTS ( SELECT * FROM pg_user_mappings WHERE srvname = fdw_name AND usename = row.key ) THEN
EXECUTE FORMAT ('CREATE USER MAPPING FOR %I SERVER %I', row.key, fdw_name);
END IF;
-- Update user mapping settings
FOR option IN SELECT o.key, o.value from lateral json_each_text(row.value) o LOOP
IF NOT EXISTS (WITH a AS (select split_part(unnest(umoptions), '=', 1) as options from pg_user_mappings WHERE srvname = fdw_name AND usename = row.key) SELECT * from a where options = option.key) THEN
EXECUTE FORMAT('ALTER USER MAPPING FOR %I SERVER %I OPTIONS (ADD %I %L)', row.key, fdw_name, option.key, option.value);
ELSE
EXECUTE FORMAT('ALTER USER MAPPING FOR %I SERVER %I OPTIONS (SET %I %L)', row.key, fdw_name, option.key, option.value);
END IF;
END LOOP;
END LOOP;
-- Create schema if it does not exist.
IF NOT EXISTS ( SELECT * from pg_namespace WHERE nspname=fdw_name) THEN
EXECUTE FORMAT ('CREATE SCHEMA %I', fdw_name);
END IF;
-- Bring the remote cdb_tablemetadata
IF NOT EXISTS ( SELECT * FROM PG_CLASS WHERE relnamespace = (SELECT oid FROM pg_namespace WHERE nspname=fdw_name) and relname='cdb_tablemetadata') THEN
EXECUTE FORMAT ('CREATE FOREIGN TABLE %I.cdb_tablemetadata (tabname text, updated_at timestamp with time zone) SERVER %I OPTIONS (table_name ''cdb_tablemetadata_text'', schema_name ''public'', updatable ''false'')', fdw_name, fdw_name);
END IF;
-- Import target table
EXECUTE FORMAT ('IMPORT FOREIGN SCHEMA %I LIMIT TO (%I) from SERVER %I INTO %I', user_schema, user_tablename, fdw_name, schema_name);
END;
$$ LANGUAGE PLPGSQL;

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,488 @@
-- TODO: implement search for timespan
CREATE OR REPLACE FUNCTION cdb_observatory._OBS_SearchTables(
search_term text,
time_span text DEFAULT NULL
)
RETURNS table(tablename text, timespan text)
As $$
DECLARE
out_var text[];
BEGIN
IF time_span IS NULL
THEN
RETURN QUERY
EXECUTE
'SELECT tablename::text, timespan::text
FROM observatory.obs_table t
JOIN observatory.obs_column_table ct
ON ct.table_id = t.id
JOIN observatory.obs_column c
ON ct.column_id = c.id
WHERE c.type ILIKE ''geometry''
AND c.id = $1'
USING search_term;
RETURN;
ELSE
RETURN QUERY
EXECUTE
'SELECT tablename::text, timespan::text
FROM observatory.obs_table t
JOIN observatory.obs_column_table ct
ON ct.table_id = t.id
JOIN observatory.obs_column c
ON ct.column_id = c.id
WHERE c.type ILIKE ''geometry''
AND c.id = $1
AND t.timespan = $2'
USING search_term, time_span;
RETURN;
END IF;
END;
$$ LANGUAGE plpgsql IMMUTABLE;
-- Functions used to search the observatory for measures
--------------------------------------------------------------------------------
-- TODO allow the user to specify the boundary to search for measures
--
CREATE OR REPLACE FUNCTION cdb_observatory.OBS_Search(
search_term text,
relevant_boundary text DEFAULT null
)
RETURNS TABLE(id text, description text, name text, aggregate text, source text) as $$
DECLARE
boundary_term text;
BEGIN
IF relevant_boundary then
boundary_term = '';
else
boundary_term = '';
END IF;
RETURN QUERY
EXECUTE format($string$
SELECT id::text, description::text,
name::text,
aggregate::text,
NULL::TEXT source -- TODO use tags
FROM observatory.OBS_column
where name ilike '%%' || %L || '%%'
or description ilike '%%' || %L || '%%'
%s
$string$, search_term, search_term,boundary_term);
RETURN;
END
$$ LANGUAGE plpgsql;
-- Functions to return the geometry levels that a point is part of
--------------------------------------------------------------------------------
-- TODO add test response
CREATE OR REPLACE FUNCTION cdb_observatory.OBS_GetAvailableBoundaries(
geom geometry(Geometry, 4326),
timespan text DEFAULT null)
RETURNS TABLE(boundary_id text, description text, time_span text, tablename text) as $$
DECLARE
timespan_query TEXT DEFAULT '';
BEGIN
IF timespan != NULL
THEN
timespan_query = format('AND timespan = %L', timespan);
END IF;
RETURN QUERY
EXECUTE
$string$
SELECT
column_id::text As column_id,
obs_column.description::text As description,
timespan::text As timespan,
tablename::text As tablename
FROM
observatory.OBS_table,
observatory.OBS_column_table,
observatory.OBS_column
WHERE
observatory.OBS_column_table.column_id = observatory.obs_column.id AND
observatory.OBS_column_table.table_id = observatory.obs_table.id
AND
observatory.OBS_column.type = 'Geometry'
AND
ST_Intersects($1, st_setsrid(observatory.obs_table.the_geom, 4326))
$string$ || timespan_query
USING geom;
RETURN;
END
$$ LANGUAGE plpgsql;
-- Functions the interface works from to identify available numerators,
-- denominators, geometries, and timespans
CREATE OR REPLACE FUNCTION cdb_observatory.OBS_GetAvailableNumerators(
bounds GEOMETRY DEFAULT NULL,
filter_tags TEXT[] DEFAULT NULL,
denom_id TEXT DEFAULT NULL,
geom_id TEXT DEFAULT NULL,
timespan TEXT DEFAULT NULL
) RETURNS TABLE (
numer_id TEXT,
numer_name TEXT,
numer_description TEXT,
numer_weight NUMERIC,
numer_license TEXT,
numer_source TEXT,
numer_type TEXT,
numer_aggregate TEXT,
numer_extra JSONB,
numer_tags JSONB,
valid_denom BOOLEAN,
valid_geom BOOLEAN,
valid_timespan BOOLEAN
) AS $$
DECLARE
geom_clause TEXT;
BEGIN
filter_tags := COALESCE(filter_tags, (ARRAY[])::TEXT[]);
denom_id := COALESCE(denom_id, '');
geom_id := COALESCE(geom_id, '');
timespan := COALESCE(timespan, '');
IF bounds IS NULL THEN
geom_clause := '';
ELSE
geom_clause := 'ST_Intersects(the_geom, $5) AND';
END IF;
RETURN QUERY
EXECUTE
format($string$
SELECT numer_id::TEXT,
numer_name::TEXT,
numer_description::TEXT,
numer_weight::NUMERIC,
NULL::TEXT license,
NULL::TEXT source,
numer_type numer_type,
numer_aggregate numer_aggregate,
numer_extra::JSONB numer_extra,
numer_tags numer_tags,
$1 = ANY(denoms) valid_denom,
$2 = ANY(geoms) valid_geom,
$3 = ANY(timespans) valid_timespan
FROM observatory.obs_meta_numer
WHERE %s (numer_tags ?& $4 OR CARDINALITY($4) = 0)
$string$, geom_clause)
USING denom_id, geom_id, timespan, filter_tags, bounds;
RETURN;
END
$$ LANGUAGE plpgsql;
CREATE OR REPLACE FUNCTION cdb_observatory.OBS_GetAvailableDenominators(
bounds GEOMETRY DEFAULT NULL,
filter_tags TEXT[] DEFAULT NULL,
numer_id TEXT DEFAULT NULL,
geom_id TEXT DEFAULT NULL,
timespan TEXT DEFAULT NULL
) RETURNS TABLE (
denom_id TEXT,
denom_name TEXT,
denom_description TEXT,
denom_weight NUMERIC,
denom_license TEXT,
denom_source TEXT,
denom_type TEXT,
denom_aggregate TEXT,
denom_extra JSONB,
denom_tags JSONB,
valid_numer BOOLEAN,
valid_geom BOOLEAN,
valid_timespan BOOLEAN
) AS $$
DECLARE
geom_clause TEXT;
BEGIN
filter_tags := COALESCE(filter_tags, (ARRAY[])::TEXT[]);
numer_id := COALESCE(numer_id, '');
geom_id := COALESCE(geom_id, '');
timespan := COALESCE(timespan, '');
IF bounds IS NULL THEN
geom_clause := '';
ELSE
geom_clause := 'ST_Intersects(the_geom, $5) AND';
END IF;
RETURN QUERY
EXECUTE
format($string$
SELECT denom_id::TEXT,
denom_name::TEXT,
denom_description::TEXT,
denom_weight::NUMERIC,
NULL::TEXT license,
NULL::TEXT source,
denom_type::TEXT,
denom_aggregate::TEXT,
denom_extra::JSONB,
denom_tags::JSONB,
$1 = ANY(numers) valid_numer,
$2 = ANY(geoms) valid_geom,
$3 = ANY(timespans) valid_timespan
FROM observatory.obs_meta_denom
WHERE %s (denom_tags ?& $4 OR CARDINALITY($4) = 0)
$string$, geom_clause)
USING numer_id, geom_id, timespan, filter_tags, bounds;
RETURN;
END
$$ LANGUAGE plpgsql;
CREATE OR REPLACE FUNCTION cdb_observatory.OBS_GetAvailableGeometries(
bounds GEOMETRY DEFAULT NULL,
filter_tags TEXT[] DEFAULT NULL,
numer_id TEXT DEFAULT NULL,
denom_id TEXT DEFAULT NULL,
timespan TEXT DEFAULT NULL
) RETURNS TABLE (
geom_id TEXT,
geom_name TEXT,
geom_description TEXT,
geom_weight NUMERIC,
geom_aggregate TEXT,
geom_license TEXT,
geom_source TEXT,
valid_numer BOOLEAN,
valid_denom BOOLEAN,
valid_timespan BOOLEAN,
score NUMERIC,
numtiles BIGINT,
notnull_percent NUMERIC,
numgeoms NUMERIC,
percentfill NUMERIC,
estnumgeoms NUMERIC,
meanmediansize NUMERIC
) AS $$
DECLARE
geom_clause TEXT;
BEGIN
filter_tags := COALESCE(filter_tags, (ARRAY[])::TEXT[]);
numer_id := COALESCE(numer_id, '');
denom_id := COALESCE(denom_id, '');
timespan := COALESCE(timespan, '');
IF bounds IS NULL THEN
geom_clause := '';
ELSE
geom_clause := 'ST_Intersects(the_geom, $5) AND';
END IF;
RETURN QUERY
EXECUTE
format($string$
WITH available_geoms AS (
SELECT geom_id::TEXT,
geom_name::TEXT,
geom_description::TEXT,
geom_weight::NUMERIC,
NULL::TEXT geom_aggregate,
NULL::TEXT license,
NULL::TEXT source,
$1 = ANY(numers) valid_numer,
$2 = ANY(denoms) valid_denom,
$3 = ANY(timespans) valid_timespan
FROM observatory.obs_meta_geom
WHERE %s (geom_tags ?& $4 OR CARDINALITY($4) = 0)
), scores AS (
SELECT * FROM cdb_observatory._OBS_GetGeometryScores($5,
(SELECT ARRAY_AGG(geom_id) FROM available_geoms)
)
) SELECT available_geoms.*, score, numtiles, notnull_percent, numgeoms,
percentfill, estnumgeoms, meanmediansize
FROM available_geoms, scores
WHERE available_geoms.geom_id = scores.geom_id
$string$, geom_clause)
USING numer_id, denom_id, timespan, filter_tags, bounds;
RETURN;
END
$$ LANGUAGE plpgsql;
CREATE OR REPLACE FUNCTION cdb_observatory.OBS_GetAvailableTimespans(
bounds GEOMETRY DEFAULT NULL,
filter_tags TEXT[] DEFAULT NULL,
numer_id TEXT DEFAULT NULL,
denom_id TEXT DEFAULT NULL,
geom_id TEXT DEFAULT NULL
) RETURNS TABLE (
timespan_id TEXT,
timespan_name TEXT,
timespan_description TEXT,
timespan_weight NUMERIC,
timespan_aggregate TEXT,
timespan_license TEXT,
timespan_source TEXT,
valid_numer BOOLEAN,
valid_denom BOOLEAN,
valid_geom BOOLEAN
) AS $$
DECLARE
geom_clause TEXT;
BEGIN
filter_tags := COALESCE(filter_tags, (ARRAY[])::TEXT[]);
numer_id := COALESCE(numer_id, '');
denom_id := COALESCE(denom_id, '');
geom_id := COALESCE(geom_id, '');
IF bounds IS NULL THEN
geom_clause := '';
ELSE
geom_clause := 'ST_Intersects(the_geom, $5) AND';
END IF;
RETURN QUERY
EXECUTE
format($string$
SELECT timespan_id::TEXT,
timespan_name::TEXT,
timespan_description::TEXT,
timespan_weight::NUMERIC,
NULL::TEXT timespan_aggregate,
NULL::TEXT license,
NULL::TEXT source,
$1 = ANY(numers) valid_numer,
$2 = ANY(denoms) valid_denom,
$3 = ANY(geoms) valid_geom_id
FROM observatory.obs_meta_timespan
WHERE %s (timespan_tags ?& $4 OR CARDINALITY($4) = 0)
$string$, geom_clause)
USING numer_id, denom_id, geom_id, filter_tags, bounds;
RETURN;
END
$$ LANGUAGE plpgsql;
-- Function below should replace SQL in
-- https://github.com/CartoDB/cartodb/blob/ab465cb2918c917940e955963b0cd8a050c06600/lib/assets/javascripts/cartodb3/editor/layers/layer-content-views/analyses/data-observatory-metadata.js
CREATE OR REPLACE FUNCTION cdb_observatory.OBS_LegacyBuilderMetadata(
aggregate_type TEXT DEFAULT NULL
)
RETURNS TABLE (
name TEXT,
subsection JSONB
) AS $$
DECLARE
aggregate_condition TEXT DEFAULT '';
BEGIN
IF aggregate_type IS NOT NULL THEN
aggregate_condition := format(' AND numer_aggregate = %L ', aggregate_type);
END IF;
RETURN QUERY
EXECUTE format($string$
WITH expanded_subsections AS (
SELECT numer_id,
numer_name,
numer_tags,
jsonb_each_text(numer_tags) as subsection_tag_id_name
FROM cdb_observatory.OBS_GetAvailableNumerators()
WHERE numer_weight > 0 %s
), expanded_sections AS (
SELECT JSONB_Agg(JSONB_Build_Object(
'f1', JSONB_Build_Object('id', numer_id, 'name', numer_name))) columns,
SUBSTR((subsection_tag_id_name).key, 12) subsection_id,
(subsection_tag_id_name).value subsection_name,
jsonb_each_text(numer_tags) as section_tag_id_name
FROM expanded_subsections
WHERE (subsection_tag_id_name).key LIKE 'subsection/%%'
GROUP BY (subsection_tag_id_name).key, (subsection_tag_id_name).value,
numer_tags
), full_expansion AS (
SELECT columns, subsection_id, subsection_name,
SUBSTR((section_tag_id_name).key, 9) section_id,
(section_tag_id_name).value section_name
FROM expanded_sections
WHERE (section_tag_id_name).key LIKE 'section/%%'
)
SELECT section_name AS name, JSONB_Agg(
JSONB_Build_Object(
'f1', JSONB_Build_Object(
'name', subsection_name,
'id', subsection_id,
'columns', columns
)
)
) as subsection
FROM full_expansion
GROUP BY section_name
$string$, aggregate_condition);
RETURN;
END
$$ LANGUAGE plpgsql;
CREATE OR REPLACE FUNCTION cdb_observatory._OBS_GetGeometryScores(
bounds Geometry(Geometry, 4326) DEFAULT NULL,
filter_geom_ids TEXT[] DEFAULT NULL,
desired_num_geoms INTEGER DEFAULT 3000
) RETURNS TABLE (
score NUMERIC,
numtiles BIGINT,
geom_id TEXT,
notnull_percent NUMERIC,
numgeoms NUMERIC,
percentfill NUMERIC,
estnumgeoms NUMERIC,
meanmediansize NUMERIC
) AS $$
BEGIN
filter_geom_ids := COALESCE(filter_geom_ids, (ARRAY[])::TEXT[]);
RETURN QUERY
EXECUTE format($string$
SELECT
(1 / (abs(numgeoms - $3)
--* (1 / Coalesce(NullIf(notnull_percent, 0), 1))
--* (1 / Coalesce(NullIf(percentfill, 0), 0.0001))
))::Numeric
AS score, *
FROM (
WITH clipped_geom AS (
SELECT column_id, table_id
, CASE WHEN $1 IS NOT NULL THEN ST_Clip(tile, $1, True)
ELSE tile END clipped_tile
, tile
FROM observatory.obs_column_table_tile
WHERE ($1 IS NULL OR ST_Intersects($1, tile))
AND (column_id = ANY($2) OR cardinality($2) = 0)
), clipped_geom_countagg AS (
SELECT column_id, table_id
, ST_CountAgg(clipped_tile, 2, True)::Numeric notnull_pixels
, ST_CountAgg(clipped_tile, 2, False)::Numeric pixels
FROM clipped_geom
GROUP BY column_id, table_id
) SELECT
count(*)::BIGINT, a.column_id
, (CASE WHEN cdb_observatory.FIRST(notnull_pixels) > 0
THEN cdb_observatory.FIRST(notnull_pixels) / cdb_observatory.FIRST(pixels)
ELSE 1
END)::Numeric AS notnull_percent
, (CASE WHEN cdb_observatory.FIRST(notnull_pixels) > 0
THEN (ST_SummaryStatsAgg(clipped_tile, 2, True)).sum
ELSE COALESCE(ST_Value(cdb_observatory.FIRST(tile), 2, ST_PointOnSurface($1)), 0) * (ST_Area($1) / ST_Area(ST_PixelAsPolygon(cdb_observatory.FIRST(tile), 0, 0)) * cdb_observatory.FIRST(pixels))
END)::Numeric AS numgeoms
, (CASE WHEN cdb_observatory.FIRST(notnull_pixels) > 0
THEN (ST_SummaryStatsAgg(clipped_tile, 3, True)).mean
ELSE COALESCE(ST_Value(cdb_observatory.FIRST(tile), 3, ST_PointOnSurface($1)), 0)
END)::Numeric AS percentfill
, ((ST_Area(ST_Transform($1, 3857)) / 1000000) / NullIf(
CASE WHEN cdb_observatory.FIRST(notnull_pixels) > 0
THEN (ST_SummaryStatsAgg(clipped_tile, 1, True)).mean
ELSE Coalesce(ST_Value(cdb_observatory.FIRST(tile), 1, ST_PointOnSurface($1)), 0)
END, 0))::Numeric AS estnumgeoms
, (CASE WHEN cdb_observatory.FIRST(notnull_pixels) > 0
THEN (ST_SummaryStatsAgg(clipped_tile, 1, True)).mean
ELSE COALESCE(ST_Value(cdb_observatory.FIRST(tile), 1, ST_PointOnSurface($1)), 0)
END)::Numeric AS meanmediansize
FROM clipped_geom_countagg a, clipped_geom b
WHERE a.table_id = b.table_id
AND a.column_id = b.column_id
GROUP BY a.column_id, a.table_id
ORDER BY a.column_id, a.table_id
) foo
$string$) USING bounds, filter_geom_ids, desired_num_geoms;
RETURN;
END
$$ LANGUAGE plpgsql;

View File

@@ -0,0 +1,577 @@
-- Data Observatory -- Welcome to the Future
-- These Data Observatory functions provide access to boundary polyons (and
-- their ids) such as those available through the US Census Tiger, Who's on
-- First, the Spanish Census, and so on
-- OBS_GetBoundary
--
-- Returns the boundary polygon(s) that overlap with the input point geometry.
-- From an input point geometry, find the boundary which intersects with the
-- centroid of the input geometry
-- Inputs:
-- geom geometry: input point geometry
-- boundary_id text: source id of boundaries
-- see function OBS_ListGeomColumns for all avaiable
-- boundary ids
-- time_span text: time span that the geometries were collected (optional)
--
-- Output:
-- boundary geometry: geometry boundary that intersects with geom, is at the
-- resolution requested with boundary_id, and time_span
--
CREATE OR REPLACE FUNCTION cdb_observatory.OBS_GetBoundary(
geom geometry(Point, 4326),
boundary_id text,
time_span text DEFAULT NULL)
RETURNS geometry(Geometry, 4326)
AS $$
DECLARE
boundary geometry(Geometry, 4326);
target_table text;
BEGIN
-- TODO: Check if SRID = 4326, if not transform?
-- if not a point, raise error
IF ST_GeometryType(geom) != 'ST_Point'
THEN
RAISE EXCEPTION 'Invalid geometry type (%), expecting ''ST_Point''', ST_GeometryType(geom);
END IF;
-- choose appropriate table based on time_span
IF time_span IS NULL
THEN
SELECT x.target_tables INTO target_table
FROM cdb_observatory._OBS_SearchTables(boundary_id,
time_span) As x(target_tables,
timespans)
ORDER BY x.timespans DESC
LIMIT 1;
ELSE
-- TODO: modify for only one table returned instead of arbitrarily choosing
-- one with LIMIT 1 (could be conflict between clipped vs non-clipped
-- boundaries in the metadata tables)
SELECT x.target_tables INTO target_table
FROM cdb_observatory._OBS_SearchTables(boundary_id,
time_span) As x(target_tables,
timespans)
WHERE x.timespans = time_span
LIMIT 1;
END IF;
-- if no tables are found, raise notice and return null
IF target_table IS NULL
THEN
--RAISE NOTICE 'No boundaries found for ''%'' in ''%''', ST_AsText(geom), boundary_id;
RETURN NULL::geometry;
END IF;
--RAISE NOTICE 'target_table: %', target_table;
-- return the first boundary in intersections
EXECUTE format(
'SELECT the_geom
FROM observatory.%I
WHERE ST_Intersects($1, the_geom)
LIMIT 1', target_table)
INTO boundary
USING geom;
RETURN boundary;
END;
$$ LANGUAGE plpgsql;
-- OBS_GetBoundaryId
--
-- retrieves the boundary identifier (e.g., '36047' = Kings County/Brooklyn, NY)
-- corresponding to the location geom and boundary types (e.g.,
-- us.census.tiger.county)
-- Inputs:
-- geom geometry: location where the boundary is requested to overlap with
-- boundary_id text: source id of boundaries (e.g., us.census.tiger.county)
-- see function OBS_ListGeomColumns for all avaiable
-- boundary ids
-- time_span text: time span that the geometries were collected (optional)
--
-- Output:
-- geometry_id text: identifier of the geometry which overlaps with the input
-- point geom in the table corresponding to boundary_id and
-- time_span
--
CREATE OR REPLACE FUNCTION cdb_observatory.OBS_GetBoundaryId(
geom geometry(Point, 4326),
boundary_id text,
time_span text DEFAULT NULL
)
RETURNS text
AS $$
DECLARE
output_id text;
target_table text;
geoid_colname text;
BEGIN
-- If not point, raise error
IF ST_GeometryType(geom) != 'ST_Point'
THEN
RAISE EXCEPTION 'Invalid geometry type (%), expecting ''ST_Point''', ST_GeometryType(geom);
END IF;
-- choose appropriate table based on time_span
IF time_span IS NULL
THEN
SELECT x.target_tables INTO target_table
FROM cdb_observatory._OBS_SearchTables(boundary_id,
time_span) As x(target_tables,
timespans)
ORDER BY x.timespans DESC
LIMIT 1;
ELSE
SELECT x.target_tables INTO target_table
FROM cdb_observatory._OBS_SearchTables(boundary_id,
time_span) As x(target_tables,
timespans)
WHERE x.timespans = time_span
LIMIT 1;
END IF;
-- if no tables are found, raise notice and return null
IF target_table IS NULL
THEN
--RAISE NOTICE 'Warning: No boundaries found for ''%''', boundary_id;
RETURN NULL::text;
END IF;
EXECUTE
format('SELECT ct.colname
FROM observatory.obs_column_to_column c2c,
observatory.obs_column_table ct,
observatory.obs_table t
WHERE c2c.reltype = ''geom_ref''
AND ct.column_id = c2c.source_id
AND ct.table_id = t.id
AND t.tablename = %L'
, target_table)
INTO geoid_colname;
--RAISE NOTICE 'target_table: %, geoid_colname: %', target_table, geoid_colname;
-- return geometry id column value
EXECUTE format(
'SELECT %I::text
FROM observatory.%I
WHERE ST_Intersects($1, the_geom)
LIMIT 1', geoid_colname, target_table)
INTO output_id
USING geom;
RETURN output_id;
END;
$$ LANGUAGE plpgsql;
-- OBS_GetBoundaryById
--
-- Given a geometry reference (e.g., geoid for US Census), and it's geometry
-- level (see OBS_ListGeomColumns() for all available boundary ids), give back
-- the boundary that corresponds to that geometry_id, boundary_id, and
-- time_span
-- Inputs:
-- geometry_id text: geometry id of the requested boundary
-- boundary_id text: source id of boundaries (e.g., us.census.tiger.county)
-- see function OBS_ListGeomColumns for all avaiable
-- boundary ids
-- time_span text: time span that the geometries were collected (optional)
--
-- Output:
-- boundary geometry: geometry boundary that matches geometry_id, is at the
-- resolution requested with boundary_id, and time_span
--
CREATE OR REPLACE FUNCTION cdb_observatory.OBS_GetBoundaryById(
geometry_id text, -- ex: '36047'
boundary_id text, -- ex: 'us.census.tiger.county'
time_span text DEFAULT NULL -- ex: '2009'
)
RETURNS geometry(geometry, 4326)
AS $$
DECLARE
boundary geometry(geometry, 4326);
target_table text;
geoid_colname text;
geom_colname text;
BEGIN
SELECT * INTO geoid_colname, target_table, geom_colname
FROM cdb_observatory._OBS_GetGeometryMetadata(boundary_id);
--RAISE NOTICE '%', target_table;
IF target_table IS NULL
THEN
--RAISE NOTICE 'No geometries found';
RETURN NULL::geometry;
END IF;
-- retrieve boundary
EXECUTE
format(
'SELECT %I
FROM observatory.%I
WHERE %I = $1
LIMIT 1', geom_colname, target_table, geoid_colname)
INTO boundary
USING geometry_id;
RETURN boundary;
END;
$$ LANGUAGE plpgsql;
-- _OBS_GetBoundariesByGeometry
-- internal function for retrieving geometries based on an input geometry
-- see OBS_GetBoundariesByGeometry or OBS_GetBoundariesByPointAndRadius for
-- more information
CREATE OR REPLACE FUNCTION cdb_observatory._OBS_GetBoundariesByGeometry(
geom geometry(Geometry, 4326),
boundary_id text,
time_span text DEFAULT NULL,
overlap_type text DEFAULT NULL)
RETURNS TABLE(the_geom geometry, geom_refs text)
AS $$
DECLARE
boundary geometry(Geometry, 4326);
geom_colname text;
geoid_colname text;
target_table text;
BEGIN
overlap_type := COALESCE(overlap_type, 'intersects');
-- check inputs
IF lower(overlap_type) NOT IN ('contains', 'intersects', 'within')
THEN
-- recognized overlap type (map to ST_Contains, ST_Intersects, and ST_Within)
RAISE EXCEPTION 'Overlap type ''%'' is not an accepted type (choose intersects, within, or contains)', overlap_type;
ELSIF ST_GeometryType(geom) NOT IN ('ST_Polygon', 'ST_MultiPolygon')
THEN
RAISE EXCEPTION 'Invalid geometry type (%), expecting ''ST_MultiPolygon'' or ''ST_Polygon''', ST_GeometryType(geom);
END IF;
-- TODO: add timespan in search
-- TODO: add overlap info in search
SELECT * INTO geoid_colname, target_table, geom_colname
FROM cdb_observatory._OBS_GetGeometryMetadata(boundary_id);
-- if no tables are found, raise notice and return null
IF target_table IS NULL
THEN
--RAISE NOTICE 'No boundaries found for bounding box ''%'' in ''%''', ST_AsText(geom), boundary_id;
RETURN QUERY SELECT NULL::geometry, NULL::text;
RETURN;
END IF;
--RAISE NOTICE 'target_table: %', target_table;
-- return first boundary in intersections
RETURN QUERY
EXECUTE format(
'SELECT %I, %I::text
FROM observatory.%I
WHERE ST_%s($1, the_geom)
', geom_colname, geoid_colname, target_table, overlap_type)
USING geom;
RETURN;
END;
$$ LANGUAGE plpgsql;
-- OBS_GetBoundariesByGeometry
--
-- Given a bounding box (or a polygon), and it's geometry level (see
-- OBS_ListGeomColumns() for all available boundary ids), give back the
-- boundaries that are contained within the bounding box polygon and the
-- associated geometry ids
-- Inputs:
-- geom geometry: bounding box (or polygon) of the region of interest
-- boundary_id text: source id of boundaries (e.g., us.census.tiger.county)
-- see function OBS_ListGeomColumns for all avaiable
-- boundary ids
-- time_span text: time span that the geometries were collected (optional)
--
-- Output:
-- table with the following columns
-- boundary geometry: geometry boundary that is contained within the input
-- bounding box at the requested geometry level
-- with boundary_id, and time_span
-- geom_refs text: geometry identifiers (e.g., geoid for the US Census)
--
CREATE OR REPLACE FUNCTION cdb_observatory.OBS_GetBoundariesByGeometry(
geom geometry(Geometry, 4326),
boundary_id text,
time_span text DEFAULT NULL,
overlap_type text DEFAULT NULL)
RETURNS TABLE(the_geom geometry, geom_refs text)
AS $$
BEGIN
RETURN QUERY SELECT *
FROM cdb_observatory._OBS_GetBoundariesByGeometry(
geom,
boundary_id,
time_span,
overlap_type
);
RETURN;
END;
$$ LANGUAGE plpgsql;
-- OBS_GetBoundariesByPointAndRadius
--
-- Given a point and radius, and it's geometry level (see
-- OBS_ListGeomColumns() for all available boundary ids), give back the
-- boundaries that are contained within the point buffered by radius meters and
-- the associated geometry ids
-- Inputs:
-- geom geometry: point geometry centered on area of interest
-- radius numeric: radius (in meters) of a circle centered on geom for
-- selecting polygons
-- boundary_id text: source id of boundaries (e.g., us.census.tiger.county)
-- see function OBS_ListGeomColumns for all avaiable
-- boundary ids
-- time_span text: time span that the geometries were collected (optional)
--
-- Output:
-- table with the following columns
-- boundary geometry: geometry boundary that is contained within the input
-- bounding box at the requested geometry level
-- with boundary_id, and time_span
-- geom_refs text: geometry identifiers (e.g., geoid for the US Census)
--
-- TODO: move to ST_DWithin instead of buffer + intersects?
CREATE OR REPLACE FUNCTION cdb_observatory.OBS_GetBoundariesByPointAndRadius(
geom geometry(Point, 4326), -- point
radius numeric, -- radius in meters
boundary_id text,
time_span text DEFAULT NULL,
overlap_type text DEFAULT NULL)
RETURNS TABLE(the_geom geometry, geom_refs text)
AS $$
DECLARE
circle_boundary geometry(Geometry, 4326);
BEGIN
IF ST_GeometryType(geom) != 'ST_Point'
THEN
RAISE EXCEPTION 'Input geometry ''%'' is not a point', ST_AsText(geom);
ELSE
circle_boundary := ST_Buffer(geom::geography, radius)::geometry;
END IF;
RETURN QUERY SELECT *
FROM cdb_observatory._OBS_GetBoundariesByGeometry(
circle_boundary,
boundary_id,
time_span,
overlap_type);
RETURN;
END;
$$ LANGUAGE plpgsql;
-- _OBS_GetPointsByGeometry
CREATE OR REPLACE FUNCTION cdb_observatory._OBS_GetPointsByGeometry(
geom geometry(Geometry, 4326),
boundary_id text,
time_span text DEFAULT NULL,
overlap_type text DEFAULT NULL)
RETURNS TABLE(the_geom geometry, geom_refs text)
AS $$
DECLARE
boundary geometry(Geometry, 4326);
geom_colname text;
geoid_colname text;
target_table text;
BEGIN
overlap_type := COALESCE(overlap_type, 'intersects');
IF lower(overlap_type) NOT IN ('contains', 'within', 'intersects')
THEN
RAISE EXCEPTION 'Overlap type ''%'' is not an accepted type (choose intersects, within, or contains)', overlap_type;
ELSIF ST_GeometryType(geom) NOT IN ('ST_Polygon', 'ST_MultiPolygon')
THEN
RAISE EXCEPTION 'Invalid geometry type (%), expecting ''ST_MultiPolygon'' or ''ST_Polygon''', ST_GeometryType(geom);
END IF;
SELECT * INTO geoid_colname, target_table, geom_colname
FROM cdb_observatory._OBS_GetGeometryMetadata(boundary_id);
-- if no tables are found, raise notice and return null
IF target_table IS NULL
THEN
--RAISE NOTICE 'No boundaries found for bounding box ''%'' in ''%''', ST_AsText(geom), boundary_id;
RETURN QUERY SELECT NULL::geometry, NULL::text;
RETURN;
END IF;
--RAISE NOTICE 'target_table: %', target_table;
-- return first boundary in intersections
RETURN QUERY
EXECUTE format(
'SELECT ST_PointOnSurface(%I) As %s, %I::text
FROM observatory.%I
WHERE ST_%s($1, the_geom)
', geom_colname, geom_colname, geoid_colname, target_table, overlap_type)
USING geom;
RETURN;
END;
$$ LANGUAGE plpgsql;
-- OBS_GetPointsByGeometry
--
-- Given a polygon, and it's geometry level (see
-- OBS_ListGeomColumns() for all available boundary ids), give back a point
-- which lies in a boundary from the requested geometry level that is contained
-- within the bounding box polygon and the associated geometry ids
--
-- Inputs:
-- geom geometry: bounding box (or polygon) of the region of interest
-- boundary_id text: source id of boundaries (e.g., us.census.tiger.county)
-- see function OBS_ListGeomColumns for all avaiable
-- boundary ids
-- time_span text: time span that the geometries were collected (optional)
--
-- Output:
-- table with the following columns
-- boundary geometry: point that lies on a boundary that is contained within
-- the input bounding box at the requested geometry
-- level with boundary_id, and time_span
-- geom_refs text: geometry identifiers (e.g., geoid for the US Census)
--
CREATE OR REPLACE FUNCTION cdb_observatory.OBS_GetPointsByGeometry(
geom geometry(Geometry, 4326),
boundary_id text,
time_span text DEFAULT NULL,
overlap_type text DEFAULT NULL)
RETURNS TABLE(the_geom geometry, geom_refs text)
AS $$
BEGIN
RETURN QUERY SELECT *
FROM cdb_observatory._OBS_GetPointsByGeometry(
geom,
boundary_id,
time_span,
overlap_type);
RETURN;
END;
$$ LANGUAGE plpgsql;
-- OBS_GetBoundariesByPointAndRadius
--
-- Given a point and radius, and it's geometry level (see
-- OBS_ListGeomColumns() for all available boundary ids), give back the
-- boundaries that are contained within the point buffered by radius meters and
-- the associated geometry ids
-- Inputs:
-- geom geometry: point geometry centered on area of interest
-- radius numeric: radius (in meters) of a circle centered on geom for
-- selecting polygons
-- boundary_id text: source id of boundaries (e.g., us.census.tiger.county)
-- see function OBS_ListGeomColumns for all avaiable
-- boundary ids
-- time_span text: time span that the geometries were collected (optional)
--
-- Output:
-- table with the following columns
-- boundary geometry: geometry boundary that is contained within the input
-- bounding box at the requested geometry level
-- with boundary_id, and time_span
-- geom_refs text: geometry identifiers (e.g., geoid for the US Census)
--
CREATE OR REPLACE FUNCTION cdb_observatory.OBS_GetPointsByPointAndRadius(
geom geometry(Point, 4326), -- point
radius numeric, -- radius in meters
boundary_id text,
time_span text DEFAULT NULL,
overlap_type text DEFAULT NULL)
RETURNS TABLE(the_geom geometry, geom_refs text)
AS $$
DECLARE
circle_boundary geometry(Geometry, 4326);
BEGIN
IF ST_GeometryType(geom) != 'ST_Point'
THEN
RAISE EXCEPTION 'Input geometry ''%'' is not a point', ST_AsText(geom);
ELSE
circle_boundary := ST_Buffer(geom::geography, radius)::geometry;
END IF;
RETURN QUERY SELECT *
FROM cdb_observatory._OBS_GetPointsByGeometry(
ST_Buffer(geom::geography, radius)::geometry,
boundary_id,
time_span,
overlap_type);
RETURN;
END;
$$ LANGUAGE plpgsql;
-- _OBS_GetGeometryMetadata()
-- TODO: add timespan in search
-- TODO: add choice of clipped versus not clipped
CREATE OR REPLACE FUNCTION cdb_observatory._OBS_GetGeometryMetadata(boundary_id text)
RETURNS table(geoid_colname text, target_table text, geom_colname text)
AS $$
BEGIN
RETURN QUERY
EXECUTE
format($string$
SELECT geoid_ct.colname::text As geoid_colname,
tablename::text,
geom_ct.colname::text As geom_colname
FROM observatory.obs_column_table As geoid_ct,
observatory.obs_table As geom_t,
observatory.obs_column_table As geom_ct,
observatory.obs_column As geom_c
WHERE geoid_ct.column_id
IN (
SELECT source_id
FROM observatory.obs_column_to_column
WHERE reltype = 'geom_ref'
AND target_id = '%s'
)
AND geoid_ct.table_id = geom_t.id AND
geom_t.id = geom_ct.table_id AND
geom_ct.column_id = geom_c.id AND
geom_c.type ILIKE 'geometry' AND
geom_c.id = '%s'
$string$, boundary_id, boundary_id);
RETURN;
-- AND geom_t.timespan = '%s' <-- put in requested year
-- TODO: filter by clipped vs. not so appropriate tablename are unique
-- so the limit 1 can be removed
RETURN;
END;
$$ LANGUAGE plpgsql;

View File

@@ -0,0 +1,82 @@
CREATE TYPE cdb_observatory.ds_fdw_metadata as (schemaname text, tabname text, servername text);
CREATE TYPE cdb_observatory.ds_return_metadata as (colnames text[], coltypes text[]);
CREATE OR REPLACE FUNCTION cdb_observatory._OBS_ConnectUserTable(username text, orgname text, user_db_role text, input_schema text, dbname text, host_addr text, table_name text)
RETURNS cdb_observatory.ds_fdw_metadata
AS $$
DECLARE
fdw_server text;
fdw_import_schema text;
connection_str json;
import_foreign_schema_q text;
epoch_timestamp text;
BEGIN
SELECT extract(epoch from now() at time zone 'utc')::int INTO epoch_timestamp;
fdw_server := 'fdw_server_' || username || '_' || epoch_timestamp;
fdw_import_schema:= fdw_server;
-- Import foreign table
EXECUTE FORMAT ('SELECT cdb_observatory._OBS_ConnectRemoteTable(%L, %L, %L, %L, %L, %L, %L)', fdw_server, fdw_import_schema, dbname, host_addr, user_db_role, table_name, input_schema);
RETURN (fdw_import_schema::text, table_name::text, fdw_server::text);
EXCEPTION
WHEN others THEN
-- Disconnect user imported table. Delete schema and FDW server.
EXECUTE 'DROP FOREIGN TABLE IF EXISTS "' || fdw_import_schema || '".' || table_name;
EXECUTE 'DROP FOREIGN TABLE IF EXISTS "' || fdw_import_schema || '".cdb_tablemetadata';
EXECUTE 'DROP SCHEMA IF EXISTS "' || fdw_import_schema || '"';
EXECUTE 'DROP USER MAPPING IF EXISTS FOR public SERVER "' || fdw_server || '"';
EXECUTE 'DROP SERVER IF EXISTS "' || fdw_server || '"';
RETURN (null, null, null);
END;
$$ LANGUAGE plpgsql SECURITY DEFINER;
CREATE OR REPLACE FUNCTION cdb_observatory._OBS_GetReturnMetadata(username text, orgname text, function_name text, params json)
RETURNS cdb_observatory.ds_return_metadata
AS $$
DECLARE
colnames text[];
coltypes text[];
BEGIN
EXECUTE FORMAT('SELECT r.colnames::text[], r.coltypes::text[] FROM cdb_observatory._%sResultMetadata(%L::json) r', function_name, params::text)
INTO colnames, coltypes;
RETURN (colnames::text[], coltypes::text[]);
END;
$$ LANGUAGE plpgsql;
CREATE OR REPLACE FUNCTION cdb_observatory._OBS_FetchJoinFdwTableData(username text, orgname text, table_schema text, table_name text, function_name text, params json)
RETURNS SETOF record
AS $$
DECLARE
data_query text;
rec RECORD;
BEGIN
EXECUTE FORMAT('SELECT cdb_observatory._%sQuery(%L, %L, %L::json)', function_name, table_schema, table_name, params::text)
INTO data_query;
FOR rec IN EXECUTE data_query
LOOP
RETURN NEXT rec;
END LOOP;
RETURN;
END;
$$ LANGUAGE plpgsql SECURITY DEFINER;
CREATE OR REPLACE FUNCTION cdb_observatory._OBS_DisconnectUserTable(username text, orgname text, table_schema text, table_name text, servername text)
RETURNS boolean
AS $$
BEGIN
EXECUTE 'DROP FOREIGN TABLE IF EXISTS "' || table_schema || '".' || table_name;
EXECUTE 'DROP FOREIGN TABLE IF EXISTS "' || table_schema || '".cdb_tablemetadata';
EXECUTE 'DROP SCHEMA IF EXISTS "' || table_schema || '"';
EXECUTE 'DROP USER MAPPING IF EXISTS FOR public SERVER "' || servername || '"';
EXECUTE 'DROP SERVER IF EXISTS "' || servername || '"';
RETURN true;
END;
$$ LANGUAGE plpgsql SECURITY DEFINER;

View File

@@ -0,0 +1,79 @@
--
--
-- OBS_GetMeasure
--
--
CREATE OR REPLACE FUNCTION cdb_observatory._OBS_GetMeasureResultMetadata(params json)
RETURNS cdb_observatory.ds_return_metadata
AS $$
DECLARE
colnames text[]; -- Array to store the name of the measures to be returned
coltypes text[]; -- Array to store the type of the measures to be returned
requested_measures text[];
measure_id text;
BEGIN
-- By definition, all the measure results for the OBS_GetMeasure API are numeric values
SELECT ARRAY(SELECT json_array_elements_text(params->'measure_id'))::text[] INTO requested_measures;
FOREACH measure_id IN ARRAY requested_measures
LOOP
SELECT array_append(colnames, measure_id) INTO colnames;
SELECT array_append(coltypes, 'numeric'::text) INTO coltypes;
END LOOP;
RETURN (colnames::text[], coltypes::text[]);
END;
$$ LANGUAGE plpgsql;
CREATE OR REPLACE FUNCTION cdb_observatory._OBS_GetMeasureQuery(table_schema text, table_name text, params json)
RETURNS text
AS $$
DECLARE
data_query text;
measure_ids_arr text[];
measure_id text;
measures_list text;
measures_query text;
normalize text;
boundary_id text;
time_span text;
geom_table_name text;
data_table_name text;
BEGIN
measures_query := '';
-- SELECT table_name from obs_meta WHERE boundary_id = {bound} AND [...] INTO geom_table_name
geom_table_name := 'observatory.obs_c6fb99c47d61289fbb8e561ff7773799d3fcc308';
-- SELECT table_name from obs_meta WHERE time_span = {time} AND [...] INTO data_table_name
data_table_name := 'observatory.obs_1a098da56badf5f32e336002b0a81708c40d29cd';
-- Get measure_ids array from JSON
SELECT ARRAY(SELECT json_array_elements_text(params->'measure_id'))::text[] INTO measure_ids_arr;
-- Get a comma-separated list of measures ("total_pop, over_16_pop") to be used in SELECTs
SELECT array_to_string(measure_ids_arr, ',') INTO measures_list;
FOREACH measure_id IN ARRAY measure_ids_arr
LOOP
-- Build query to compute each value and normalize
-- Assumes the default normalization method, the normalize parameter given in the JSON
-- should be checked in order to build the final query
SELECT measures_query || ' sum(' || measure_id || '/fraction)::numeric as ' || measure_id || ', ' INTO measures_query;
END LOOP;
-- Data query should select the measures and the cartodb_id of the user table, in that order.
data_query := '(WITH _areas AS(SELECT ST_Area(a.the_geom::geography)'
|| '/ (1000 * 1000) as fraction, a.geoid, b.cartodb_id FROM '
|| geom_table_name || ' as a, '
|| table_schema || '.' || table_name || ' AS b '
|| 'WHERE b.the_geom && a.the_geom ), values AS (SELECT geoid, '
|| measures_list
|| ' FROM ' || data_table_name || ' ) '
|| 'SELECT '
|| measures_query
|| ' cartodb_id::int FROM _areas, values '
|| 'WHERE values.geoid = _areas.geoid GROUP BY cartodb_id);';
RETURN data_query;
END;
$$ LANGUAGE plpgsql;

View File

@@ -1,6 +1,5 @@
-- Install dependencies
CREATE EXTENSION postgis;
CREATE EXTENSION plpythonu;
CREATE EXTENSION cartodb;
CREATE EXTENSION postgres_fdw;
-- Install the extension
CREATE EXTENSION observatory VERSION 'dev';

View File

@@ -1,4 +0,0 @@
SET client_min_messages TO WARNING;
\set ECHO none
Loading fixtures...
Done.

View File

@@ -1,152 +1,23 @@
\i test/sql/load_fixtures.sql
\pset format unaligned
\set ECHO all
\i test/fixtures/load_fixtures.sql
SET client_min_messages TO WARNING;
\set ECHO none
Loading obs_table.sql fixture file...
Done.
Loading obs_column.sql fixture file...
Done.
Loading obs_column_table.sql fixture file...
Done.
Loading obs_column_to_column.sql fixture file...
Done.
Loading obs_85328201013baa14e8e8a4a57a01e6f6fbc5f9b1.sql fixture file...
Done.
Loading obs_3e7cc9cfd403b912c57b42d5f9195af9ce2f3cdb.sql fixture file...
Done.
Loading obs_ab038198aaab3f3cb055758638ee4de28ad70146.sql fixture file...
Done.
Loading obs_a92e1111ad3177676471d66bb8036e6d057f271b.sql fixture file...
Done.
Loading obs_11ee8b82c877c073438bc935a91d3dfccef875d1.sql fixture file...
Done.
Loading obs_d34555209878e8c4b37cf0b2b3d072ff129ec470.sql fixture file...
Done.
-- OBS_GeomTable
-- get table with known geometry_id
-- should give back a table like obs_{hex hash}
SELECT
cdb_observatory._OBS_GeomTable(
CDB_LatLng(40.7128,-74.0059),
'"us.census.tiger".census_tract'
);
_obs_geomtable
----------------------------------------------
obs_a92e1111ad3177676471d66bb8036e6d057f271b
_obs_geomtable_with_returned_table
t
(1 row)
-- get null for unknown geometry_id
-- should give back null
SELECT
cdb_observatory._OBS_GeomTable(
CDB_LatLng(40.7128,-74.0059),
'"us.census.tiger".nonexistant_id' -- not in catalog
);
_obs_geomtable
----------------
_obs_geomtable_with_null_response
t
(1 row)
-- future test: give back nulls when geometry doesn't intersect
-- SELECT
-- cdb_observatory._OBS_GeomTable(
-- CDB_LatLng(0,0), -- should give back null since it's in the ocean?
-- '"us.census.tiger".census_tract'
-- );
-- OBS_GetColumnData
-- should give back:
-- colname | tablename | aggregate
-- -----------|-----------------|-----------
-- geoid | obs_{hex table} | null
-- total_pop | obs_{hex table} | sum
SELECT
(unnest(cdb_observatory._OBS_GetColumnData(
'"us.census.tiger".census_tract',
Array['"us.census.tiger".census_tract_geoid', '"us.census.acs".B01001001'],
'2009 - 2013'
))).*
ORDER BY colname, tablename ASC;
colname | tablename | aggregate
-----------+----------------------------------------------+-----------
geoid | obs_11ee8b82c877c073438bc935a91d3dfccef875d1 |
geoid | obs_ab038198aaab3f3cb055758638ee4de28ad70146 |
geoid | obs_d34555209878e8c4b37cf0b2b3d072ff129ec470 |
total_pop | obs_ab038198aaab3f3cb055758638ee4de28ad70146 | sum
(4 rows)
-- should be null-valued
SELECT
(unnest(cdb_observatory._OBS_GetColumnData(
'"us.census.tiger".census_tract',
Array['"us.census.tiger".baloney'], -- entry not in catalog
'2009 - 2013'
))).*
ORDER BY 1 ASC;
colname | tablename | aggregate
---------+-----------+-----------
(0 rows)
-- OBS_LookupCensusHuman
-- should give back: {"\"us.census.acs\".B19083001"}
SELECT
cdb_observatory._OBS_LookupCensusHuman(
Array['gini_index']
);
_obs_lookupcensushuman
---------------------------------
{"\"us.census.acs\".B19083001"}
_obs_buildsnapshotquery_test_1
t
(1 row)
-- should be empty array
SELECT
cdb_observatory._OBS_LookupCensusHuman(
Array['cookies']
);
_obs_lookupcensushuman
------------------------
_obs_buildsnapshotquery_test_2
t
(1 row)
-- OBS_BuildSnapshotQuery
-- Should give back: SELECT vals[1] As total_pop, vals[2] As male_pop, vals[3] As female_pop, vals[4] As median_age
SELECT
cdb_observatory._OBS_BuildSnapshotQuery(
Array['total_pop','male_pop','female_pop','median_age']
);
_obs_buildsnapshotquery
-------------------------------------------------------------------------------------------------
SELECT vals[1] As total_pop, vals[2] As male_pop, vals[3] As female_pop, vals[4] As median_age
_obs_standardizemeasurename_test
t
(1 row)
-- should give back: SELECT vals[1] As mandarin_orange
SELECT
cdb_observatory._OBS_BuildSnapshotQuery(
Array['mandarin_orange']
);
_obs_buildsnapshotquery
------------------------------------
SELECT vals[1] As mandarin_orange
obs_dumpversion_notnull
t
(1 row)
\i test/sql/drop_fixtures.sql
SET client_min_messages TO NOTICE;
\set ECHO none
Dropping obs_table.sql fixture table...
Done.
Dropping obs_column.sql fixture table...
Done.
Dropping obs_column_table.sql fixture table...
Done.
Dropping obs_column_to_column.sql fixture table...
Done.
Dropping obs_85328201013baa14e8e8a4a57a01e6f6fbc5f9b1 fixture table...
Done.
Dropping obs_3e7cc9cfd403b912c57b42d5f9195af9ce2f3cdb fixture table...
Done.
Dropping obs_ab038198aaab3f3cb055758638ee4de28ad70146 fixture table...
Done.
Dropping obs_a92e1111ad3177676471d66bb8036e6d057f271b fixture table...
Done.
Dropping obs_11ee8b82c877c073438bc935a91d3dfccef875d1 fixture table...
Done.
Dropping obs_d34555209878e8c4b37cf0b2b3d072ff129ec470 fixture table...
Done.

View File

@@ -1,113 +1,128 @@
\i test/sql/load_fixtures.sql
SET client_min_messages TO WARNING;
\pset format unaligned
\set ECHO none
Loading obs_table.sql fixture file...
Done.
Loading obs_column.sql fixture file...
Done.
Loading obs_column_table.sql fixture file...
Done.
Loading obs_column_to_column.sql fixture file...
Done.
Loading obs_85328201013baa14e8e8a4a57a01e6f6fbc5f9b1.sql fixture file...
Done.
Loading obs_3e7cc9cfd403b912c57b42d5f9195af9ce2f3cdb.sql fixture file...
Done.
Loading obs_ab038198aaab3f3cb055758638ee4de28ad70146.sql fixture file...
Done.
Loading obs_a92e1111ad3177676471d66bb8036e6d057f271b.sql fixture file...
Done.
Loading obs_11ee8b82c877c073438bc935a91d3dfccef875d1.sql fixture file...
Done.
Loading obs_d34555209878e8c4b37cf0b2b3d072ff129ec470.sql fixture file...
Done.
total_pop | male_pop | female_pop | median_age | white_pop | black_pop | asian_pop | hispanic_pop | amerindian_pop | other_race_pop | two_or_more_races_pop | not_hispanic_pop | households | pop_25_years_over | high_school_diploma | less_one_year_college | one_year_more_college | associates_degree | bachelors_degree | masters_degree | median_income | gini_index | income_per_capita | housing_units | vacant_housing_units | vacant_housing_units_for_rent | vacant_housing_units_for_sale | median_rent | percent_income_spent_on_rent | owner_occupied_housing_units | million_dollar_housing_units | mortgaged_housing_units | commuters_16_over | commute_less_10_mins | commute_10_14_mins | commute_15_19_mins | commute_20_24_mins | commute_25_29_mins | commute_30_34_mins | commute_35_44_mins | commute_45_59_mins | commute_60_more_mins | aggregate_travel_time_to_work | income_less_10000 | income_10000_14999 | income_15000_19999 | income_20000_24999 | income_25000_29999 | income_30000_34999 | income_35000_39999 | income_40000_44999 | income_45000_49999 | income_50000_59999 | income_60000_74999 | income_75000_99999 | income_100000_124999 | income_125000_149999 | income_150000_199999 | income_200000_or_more | land_area
------------------+------------------+------------------+------------+------------------+------------------+------------------+------------------+----------------+----------------+-----------------------+------------------+------------------+-------------------+---------------------+-----------------------+-----------------------+-------------------+------------------+------------------+---------------+------------+-------------------+------------------+----------------------+-------------------------------+-------------------------------+-------------+------------------------------+------------------------------+------------------------------+-------------------------+-------------------+----------------------+--------------------+--------------------+--------------------+--------------------+--------------------+--------------------+--------------------+----------------------+-------------------------------+-------------------+--------------------+--------------------+--------------------+--------------------+--------------------+--------------------+--------------------+--------------------+--------------------+--------------------+--------------------+----------------------+----------------------+----------------------+-----------------------+-----------
9516.27915900609 | 6152.51885204623 | 3363.76030695986 | 28.8 | 5301.51624447348 | 149.500458087105 | 230.000704749392 | 3835.26175169611 | 0 | 0 | 0 | 5681.01740730998 | 3323.51018362871 | 7107.02177675621 | 1040.753188991 | 69.0002114248176 | 793.502431385402 | 327.751004267883 | 2742.7584041365 | 931.502854235037 | 66304 | 0.3494 | 28291 | 3662.76122313407 | 339.251039505353 | 120.750369993431 | 0 | 1764 | 35.3 | 339.251039505353 | 0 | 224.250687130657 | 6549.27006773893 | 327.751004267883 | 28.750088093674 | 201.250616655718 | 621.001902823358 | 373.751145217762 | 1851.5056732326 | 1414.50433420876 | 1115.50341803455 | 615.251885204623 | | 57.500176187348 | 0 | 212.750651893187 | 408.251250930171 | 0 | 155.25047570584 | 109.250334755961 | 92.0002818997568 | 63.2501938060828 | 184.000563799514 | 621.001902823358 | 552.001691398541 | 327.751004267883 | 333.501021886618 | 126.500387612166 | |
obs_getdemographicsnapshot_test_no_returns
t
(1 row)
dimension | dimension_value
----------------------+-------------------------------------
{total_pop,male_pop} | {9516.27915900609,6152.51885204623}
obs_get_median_income_at_test_point
t
(1 row)
dimension | dimension_value
-----------------------+-----------------
{female_pop,male_pop} | {NULL,NULL}
obs_get_median_income_at_null_island
t
(1 row)
dimension | dimension_value
-----------------------+-----------------
{female_pop,male_pop} | {}
obs_getpoints_for_test_point_value|obs_getpoints_for_test_point_name|obs_getpoints_for_test_point_tablename|obs_getpoints_for_test_point_aggregate|obs_getpoints_for_test_point_type|obs_getpoints_for_test_point_description
t|t|t|t|t|t
(1 row)
names | vals
--------------+----------
{gini_index} | {0.3494}
obs_getpoints_for_null_island
t
(1 row)
names | vals
--------------+------
{gini_index} | {}
obs_getpolygons_for_test_point
t
(1 row)
_obs_getpoints
--------------------
{4809.33511352425}
obs_getpolygons_for_null_island
t
(1 row)
_obs_getpoints
----------------
test_point_segmentation
t
(1 row)
_obs_getpolygons
--------------------
{1570.72353789469}
null_island_segmentation
t
(1 row)
_obs_getpolygons
------------------
{NULL}
getcategories_at_test_point_1
t
(1 row)
segment_name | total_pop_quantile | male_pop_quantile | female_pop_quantile | median_age_quantile | white_pop_quantile | black_pop_quantile | asian_pop_quantile | hispanic_pop_quantile | not_us_citizen_pop_quantile | workers_16_and_over_quantile | commuters_by_car_truck_van_quantile | commuters_by_public_transportation_quantile | commuters_by_bus_quantile | commuters_by_subway_or_elevated_quantile | walked_to_work_quantile | worked_at_home_quantile | children_quantile | households_quantile | population_3_years_over_quantile | in_school_quantile | in_grades_1_to_4_quantile | in_grades_5_to_8_quantile | in_grades_9_to_12_quantile | in_undergrad_college_quantile | pop_25_years_over_quantile | high_school_diploma_quantile | bachelors_degree_quantile | masters_degree_quantile | pop_5_years_over_quantile | speak_only_english_at_home_quantile | speak_spanish_at_home_quantile | pop_determined_poverty_status_quantile | poverty_quantile | median_income_quantile | gini_index_quantile | income_per_capita_quantile | housing_units_quantile | vacant_housing_units_quantile | vacant_housing_units_for_rent_quantile | vacant_housing_units_for_sale_quantile | median_rent_quantile | percent_income_spent_on_rent_quantile | owner_occupied_housing_units_quantile | million_dollar_housing_units_quantile
-----------------------------+--------------------+-------------------+---------------------+---------------------+--------------------+--------------------+--------------------+-----------------------+-----------------------------+------------------------------+-------------------------------------+---------------------------------------------+---------------------------+------------------------------------------+-------------------------+-------------------------+--------------------+---------------------+----------------------------------+--------------------+---------------------------+---------------------------+----------------------------+-------------------------------+----------------------------+------------------------------+---------------------------+-------------------------+---------------------------+-------------------------------------+--------------------------------+----------------------------------------+-------------------+------------------------+---------------------+----------------------------+------------------------+-------------------------------+----------------------------------------+----------------------------------------+----------------------+---------------------------------------+---------------------------------------+---------------------------------------
Wealthy, urban without Kids | 0.234783783783784 | 0.422405405405405 | 0.0987567567567568 | 0.0715 | 0.295310810810811 | 0.407189189189189 | 0.625608108108108 | 0.795202702702703 | 0.703797297297297 | 0.59227027027027 | 0.0180540540540541 | 0.993756756756757 | 0.728162162162162 | 0.995972972972973 | 0.929135135135135 | 0.625432432432432 | 0.0386081081081081 | 0.157121621621622 | 0.241878378378378 | 0.173783783783784 | 0.0380675675675676 | 0.0308108108108108 | 0.0486216216216216 | 0.479743243243243 | 0.297675675675676 | 0.190351351351351 | 0.802513513513514 | 0.757148648648649 | 0.255405405405405 | 0.196094594594595 | 0.816851351351351 | 0.252513513513514 | 0.560054054054054 | 0.777472972972973 | 0.336932432432432 | 0.655378378378378 | 0.141810810810811 | 0.362824324324324 | 0.463837837837838 | 0 | 0.939040540540541 | 0.419445945945946 | 0.0387972972972973 | 0
getcategories_at_null_island
t
(1 row)
segment_name | total_pop_quantile | male_pop_quantile | female_pop_quantile | median_age_quantile | white_pop_quantile | black_pop_quantile | asian_pop_quantile | hispanic_pop_quantile | not_us_citizen_pop_quantile | workers_16_and_over_quantile | commuters_by_car_truck_van_quantile | commuters_by_public_transportation_quantile | commuters_by_bus_quantile | commuters_by_subway_or_elevated_quantile | walked_to_work_quantile | worked_at_home_quantile | children_quantile | households_quantile | population_3_years_over_quantile | in_school_quantile | in_grades_1_to_4_quantile | in_grades_5_to_8_quantile | in_grades_9_to_12_quantile | in_undergrad_college_quantile | pop_25_years_over_quantile | high_school_diploma_quantile | bachelors_degree_quantile | masters_degree_quantile | pop_5_years_over_quantile | speak_only_english_at_home_quantile | speak_spanish_at_home_quantile | pop_determined_poverty_status_quantile | poverty_quantile | median_income_quantile | gini_index_quantile | income_per_capita_quantile | housing_units_quantile | vacant_housing_units_quantile | vacant_housing_units_for_rent_quantile | vacant_housing_units_for_sale_quantile | median_rent_quantile | percent_income_spent_on_rent_quantile | owner_occupied_housing_units_quantile | million_dollar_housing_units_quantile
--------------+--------------------+-------------------+---------------------+---------------------+--------------------+--------------------+--------------------+-----------------------+-----------------------------+------------------------------+-------------------------------------+---------------------------------------------+---------------------------+------------------------------------------+-------------------------+-------------------------+-------------------+---------------------+----------------------------------+--------------------+---------------------------+---------------------------+----------------------------+-------------------------------+----------------------------+------------------------------+---------------------------+-------------------------+---------------------------+-------------------------------------+--------------------------------+----------------------------------------+------------------+------------------------+---------------------+----------------------------+------------------------+-------------------------------+----------------------------------------+----------------------------------------+----------------------+---------------------------------------+---------------------------------------+---------------------------------------
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
obs_getmeasure_zhvi_point_test
t
(1 row)
names | categories
-------+---------------------------------
{X10} | {"Wealthy, urban without Kids"}
obs_getmeasure_zhvi_point_default_latest_test
t
(1 row)
names | categories
-------+------------
{X10} |
obs_getmeasure_total_pop_point_test
t
(1 row)
obs_getmeasure_total_pop_point_null_normalization_test
t
(1 row)
obs_getmeasure_total_pop_point_area_test
t
(1 row)
obs_getmeasure_total_pop_polygon_test
t
(1 row)
obs_getmeasure_total_pop_polygon_null_normalization_test
t
(1 row)
obs_getmeasure_total_pop_polygon_area_test
t
(1 row)
obs_getmeasure_total_male_point_denominator
t
(1 row)
obs_getmeasure_total_male_poly_denominator
t
(1 row)
obs_getmeasure_bad_geometry
t
(1 row)
obs_getmeasure_null
t
(1 row)
obs_getcategory_point
t
(1 row)
obs_getcategory_polygon
t
(1 row)
obs_getcategory_null
t
(1 row)
obs_getpopulation
t
(1 row)
obs_getpopulation_polygon_test
t
(1 row)
obs_getpopulation_polygon_null_test
t
(1 row)
obs_getpopulation_polygon_null_geom_test
t
(1 row)
obs_getuscensusmeasure_point_male_pop
t
(1 row)
obs_getuscensusmeasure
t
(1 row)
obs_getuscensusmeasure_null
t
(1 row)
obs_getuscensusmeasure_null_geom
t
(1 row)
obs_getuscensuscategory_point
t
(1 row)
obs_getuscensuscategory_polygon
t
(1 row)
obs_getuscensuscategory_null
t
(1 row)
obs_getmeasurebyid_cartodb_census_tract
t
(1 row)
obs_getmeasurebyid_null_boundary_null_timespan
t
(1 row)
obs_getmeasurebyid_cartodb_block_group
t
(1 row)
obs_getmeasurebyid_nulls
t
(1 row)
obs_getmeasurebyid_null_id
t
(1 row)
Dropping obs_table.sql fixture table...
Done.
Dropping obs_column.sql fixture table...
Done.
Dropping obs_column_table.sql fixture table...
Done.
Dropping obs_column_to_column.sql fixture table...
Done.
Dropping obs_85328201013baa14e8e8a4a57a01e6f6fbc5f9b1 fixture table...
Done.
Dropping obs_3e7cc9cfd403b912c57b42d5f9195af9ce2f3cdb fixture table...
Done.
Dropping obs_ab038198aaab3f3cb055758638ee4de28ad70146 fixture table...
Done.
Dropping obs_a92e1111ad3177676471d66bb8036e6d057f271b fixture table...
Done.
Dropping obs_11ee8b82c877c073438bc935a91d3dfccef875d1 fixture table...
Done.
Dropping obs_d34555209878e8c4b37cf0b2b3d072ff129ec470 fixture table...
Done.

View File

@@ -0,0 +1,200 @@
\pset format unaligned
\set ECHO none
_obs_searchtables_tables_match|_obs_searchtables_timespan_matches
t|t
(1 row)
_obs_searchtables_timespan_does_not_match
t
(1 row)
_obs_searchtotalpop
t
(1 row)
_obs_getavailableboundariesexist
t
(1 row)
_obs_getavailablenumerators_usa_pop_in_all
t
(1 row)
_obs_getavailablenumerators_usa_pop_in_nyc_point
t
(1 row)
_obs_getavailablenumerators_usa_pop_in_usa_extents
t
(1 row)
_obs_getavailablenumerators_no_usa_pop_not_in_zero_point
t
(1 row)
_obs_getavailablenumerators_usa_pop_in_age_gender_subsection
t
(1 row)
_obs_getavailablenumerators_no_pop_in_income_subsection
t
(1 row)
_obs_getavailablenumerators_male_pop_denom_by_total_pop
t
(1 row)
_obs_getavailablenumerators_no_income_denom_by_total_pop
t
(1 row)
_obs_getavailablenumerators_zillow_at_zcta5
t
(1 row)
_obs_getavailablenumerators_no_zillow_at_block_group
t
(1 row)
_obs_getavailablenumerators_total_pop_2010_2014
t
(1 row)
_obs_getavailablenumerators_no_total_pop_1996
t
(1 row)
_obs_getavailabledenominators_usa_pop_in_all
t
(1 row)
_obs_getavailabledenominators_usa_pop_in_nyc_point
t
(1 row)
_obs_getavailabledenominators_usa_pop_in_usa_extents
t
(1 row)
_obs_getavailabledenominators_no_usa_pop_not_in_zero_point
t
(1 row)
_obs_getavailabledenominators_usa_pop_in_age_gender_subsection
t
(1 row)
_obs_getavailabledenominators_no_pop_in_income_subsection
t
(1 row)
_obs_getavailabledenominators_male_pop_denom_by_total_pop
t
(1 row)
_obs_getavailabledenominators_no_income_denom_by_total_pop
t
(1 row)
_obs_getavailabledenominators_at_zcta5
t
(1 row)
_obs_getavailabledenominators_none_spanish_geom
t
(1 row)
_obs_getavailabledenominators_total_pop_2010_2014
t
(1 row)
_obs_getavailabledenominators_no_total_pop_1996
t
(1 row)
_obs_getavailablegeometries_usa_bg_in_all
t
(1 row)
_obs_getavailablegeometries_usa_bg_in_nyc_point
t
(1 row)
_obs_getavailablegeometries_usa_bg_in_usa_extents
t
(1 row)
_obs_getavailablegeometries_no_usa_bg_not_in_zero_point
t
(1 row)
_obs_getavailablegeometries_usa_bg_in_boundary_subsection
t
(1 row)
_obs_getavailablegeometries_no_bg_in_uk_section
t
(1 row)
_obs_getavailablegeometries_total_pop_in_usa_bg
t
(1 row)
_obs_getavailablegeometries_foobarbaz_not_in_usa_bg
t
(1 row)
_obs_getavailablegeometries_total_pop_denom_in_usa_bg
t
(1 row)
_obs_getavailablegeometries_foobarbaz_denom_not_in_usa_bg
t
(1 row)
_obs_getavailablegeometries_bg_2014
t
(1 row)
_obs_getavailablegeometries_bg_not_1996
t
(1 row)
_obs_getavailabletimespans_2010_2014_in_all
t
(1 row)
_obs_getavailabletimespans_2010_2014_in_nyc_point
t
(1 row)
_obs_getavailabletimespans_2010_2014_in_usa_extents
t
(1 row)
_obs_getavailabletimespans_no_usa_bg_not_in_zero_point
t
(1 row)
_obs_getavailabletimespans_total_pop_in_2010_2014
t
(1 row)
_obs_getavailabletimespans_foobarbaz_not_in_2010_2014
t
(1 row)
_obs_getavailablegeometries_total_pop_denom_in_2010_2014
t
(1 row)
_obs_getavailablegeometries_foobarbaz_denom_not_in_2010_2014
t
(1 row)
_obs_geometryscores_500m_buffer
t
(1 row)
_obs_geometryscores_5km_buffer
t
(1 row)
_obs_geometryscores_50km_buffer
t
(1 row)
_obs_geometryscores_500km_buffer
t
(1 row)
_obs_geometryscores_2500km_buffer
t
(1 row)
_obs_geometryscores_numgeoms_500m_buffer
t
(1 row)
_obs_geometryscores_numgeoms_5km_buffer
t
(1 row)
_obs_geometryscores_numgeoms_50km_buffer
t
(1 row)
_obs_geometryscores_numgeoms_500km_buffer
t
(1 row)
_obs_geometryscores_numgeoms_2500km_buffer
t
(1 row)
_obs_geometryscores_500km_buffer_50_geoms
t
(1 row)
_obs_geometryscores_500km_buffer_500_geoms
t
(1 row)
_obs_geometryscores_500km_buffer_2500_geoms
t
(1 row)
_obs_geometryscores_500km_buffer_25000_geoms
t
(1 row)
_total_pop_in_legacy_builder_metadata
t
(1 row)
_median_income_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
t
(1 row)

View File

@@ -0,0 +1,95 @@
\pset format unaligned
\set ECHO none
obs_getboundary_cartodb_census_tract
t
(1 row)
obs_getboundary_cartodb_county
t
(1 row)
obs_getboundary_non_existent_boundary_id
t
(1 row)
obs_getboundary_null_island_census_tract
t
(1 row)
obs_getboundary_year_census_tract
t
(1 row)
obs_getboundary_unlisted_year
t
(1 row)
obs_getboundaryid_cartodb_census_tract
t
(1 row)
obs_getboundaryid_cartodb_census_tract_with_year
t
(1 row)
obs_getboundaryid_cartodb_county_with_year
t
(1 row)
obs_getboundaryid_null_island
t
(1 row)
obs_getboundarybyid_cartodb_county
t
(1 row)
obs_getboundarybyid_compared_with_obs_getboundary
t
(1 row)
obs_getboundarybyid_boundary_id_mismatch_geom_id
t
(1 row)
obs_getboundarybyid_boundary_id_mismatch_geom_id
t
(1 row)
_obs_getboundariesbygeometry_tracts_around_cartodb
t
(1 row)
_obs_getboundariesbygeometry_tracts_around_null_island
t
(1 row)
obs_getboundariesbygeometry_tracts_around_cartodb
t
(1 row)
obs_getboundariesbygeometry_tracts_around_null_island
t
(1 row)
obs_getboundariesbygeometry_wof
t
(1 row)
obs_getboundariesbypointandradius_around_cartodb
t
(1 row)
obs_getboundariesbypointandradius_around_null_island
t
(1 row)
_obs_getpointsbygeometry_around_cartodb
t
(1 row)
_obs_getpointsbygeometry_around_null_island
t
(1 row)
obs_getpointsbygeometry_around_cartodb
t
(1 row)
obs_getpointsbygeometry_around_cartodb_2014
t
(1 row)
obs_getpointsbygeometry_around_null_island
t
(1 row)
obs_getpointsbypointandradius_around_cartodb
t
(1 row)
obs_getpointsbypointandradius_around_cartodb_2014
t
(1 row)
obs_getpointsbypointandradius_around_null_island
t
(1 row)
geoid_name_matches|table_name_matches|geom_name_matches
t|t|t
(1 row)
geoid_name_matches|table_name_matches|geom_name_matches
t|t|t
(1 row)

29
src/pg/test/fixtures/drop_fixtures.sql vendored Normal file
View File

@@ -0,0 +1,29 @@
SET client_min_messages TO WARNING;
\set ECHO none
DROP TABLE IF EXISTS observatory.obs_table;
DROP TABLE IF EXISTS observatory.obs_column_table;
DROP TABLE IF EXISTS observatory.obs_column;
DROP TABLE IF EXISTS observatory.obs_column_tag;
DROP TABLE IF EXISTS observatory.obs_tag;
DROP TABLE IF EXISTS observatory.obs_column_to_column;
DROP TABLE IF EXISTS observatory.obs_dump_version;
DROP TABLE IF EXISTS observatory.obs_meta;
DROP TABLE IF EXISTS observatory.obs_meta_numer;
DROP TABLE IF EXISTS observatory.obs_meta_denom;
DROP TABLE IF EXISTS observatory.obs_meta_geom;
DROP TABLE IF EXISTS observatory.obs_meta_timespan;
DROP TABLE IF EXISTS observatory.obs_column_table_tile;
DROP TABLE IF EXISTS observatory.obs_fcd4e4f5610f6764973ef8c0c215b2e80bec8963;
DROP TABLE IF EXISTS observatory.obs_c6fb99c47d61289fbb8e561ff7773799d3fcc308;
DROP TABLE IF EXISTS observatory.obs_6c1309a64d8f3e6986061f4d1ca7b57743e75e74;
DROP TABLE IF EXISTS observatory.obs_7615e8622a68bfc5fe37c69c9880edfb40250103;
DROP TABLE IF EXISTS observatory.obs_d39f7fe5959891c8296490d83c22ded31c54af13;
DROP TABLE IF EXISTS observatory.obs_1babf5a26a1ecda5fb74963e88408f71d0364b81;
DROP TABLE IF EXISTS observatory.obs_65f29658e096ca1485bf683f65fdbc9f05ec3c5d;
DROP TABLE IF EXISTS observatory.obs_144e8b4f906885b2e057ac4842644a553ae49c6e;
DROP TABLE IF EXISTS observatory.obs_fc050f0b8673cfe3c6aa1040f749eb40975691b7;
DROP TABLE IF EXISTS observatory.obs_1a098da56badf5f32e336002b0a81708c40d29cd;
DROP TABLE IF EXISTS observatory.obs_1ea93bbc109c87c676b3270789dacf7a1430db6c;
DROP TABLE IF EXISTS observatory.obs_b393b5b88c6adda634b2071a8005b03c551b609a;
DROP TABLE IF EXISTS observatory.obs_1746e37b7cd28cb131971ea4187d42d71f09c5f3;
DROP TABLE IF EXISTS observatory.obs_a01cd5d8ccaa6531cef715071e9307e6b1987ec3;

17365
src/pg/test/fixtures/load_fixtures.sql vendored Normal file

File diff suppressed because one or more lines are too long

View File

@@ -1,17 +0,0 @@
CREATE TABLE IF NOT EXISTS obs_11ee8b82c877c073438bc935a91d3dfccef875d1 (
cartodb_id integer,
the_geom geometry(Geometry,4326),
the_geom_webmercator geometry(Geometry,3857),
geoid text,
x10 text,
x2 text,
x31 text,
x55 text
);
INSERT INTO obs_11ee8b82c877c073438bc935a91d3dfccef875d1 (cartodb_id, the_geom, the_geom_webmercator, geoid, x10, x2, x31, x55) VALUES (2150, NULL, NULL, '36047048500', 'Wealthy, urban without Kids', '8', '15', '1');
CREATE SCHEMA IF NOT EXISTS observatory;
ALTER TABLE obs_11ee8b82c877c073438bc935a91d3dfccef875d1 SET SCHEMA observatory;

View File

@@ -1,129 +0,0 @@
CREATE TABLE IF NOT EXISTS obs_3e7cc9cfd403b912c57b42d5f9195af9ce2f3cdb (
cartodb_id integer,
the_geom geometry(Geometry,4326),
the_geom_webmercator geometry(Geometry,3857),
geoid text,
total_pop double precision,
male_pop double precision,
female_pop double precision,
median_age double precision,
white_pop double precision,
black_pop double precision,
asian_pop double precision,
hispanic_pop double precision,
amerindian_pop double precision,
other_race_pop double precision,
two_or_more_races_pop double precision,
not_hispanic_pop double precision,
not_us_citizen_pop double precision,
workers_16_and_over double precision,
commuters_by_car_truck_van double precision,
commuters_drove_alone double precision,
commuters_by_carpool double precision,
commuters_by_public_transportation double precision,
commuters_by_bus double precision,
commuters_by_subway_or_elevated double precision,
walked_to_work double precision,
worked_at_home double precision,
children double precision,
households double precision,
population_3_years_over double precision,
in_school double precision,
in_grades_1_to_4 double precision,
in_grades_5_to_8 double precision,
in_grades_9_to_12 double precision,
in_undergrad_college double precision,
pop_25_years_over double precision,
high_school_diploma double precision,
less_one_year_college double precision,
one_year_more_college double precision,
associates_degree double precision,
bachelors_degree double precision,
masters_degree double precision,
pop_5_years_over double precision,
speak_only_english_at_home double precision,
speak_spanish_at_home double precision,
pop_determined_poverty_status double precision,
poverty double precision,
median_income double precision,
gini_index double precision,
income_per_capita double precision,
housing_units double precision,
vacant_housing_units double precision,
vacant_housing_units_for_rent double precision,
vacant_housing_units_for_sale double precision,
median_rent double precision,
percent_income_spent_on_rent double precision,
owner_occupied_housing_units double precision,
million_dollar_housing_units double precision,
mortgaged_housing_units double precision,
families_with_young_children double precision,
two_parent_families_with_young_children double precision,
two_parents_in_labor_force_families_with_young_children double precision,
two_parents_father_in_labor_force_families_with_young_children double precision,
two_parents_mother_in_labor_force_families_with_young_children double precision,
two_parents_not_in_labor_force_families_with_young_children double precision,
one_parent_families_with_young_children double precision,
father_one_parent_families_with_young_children double precision,
men_45_to_64 double precision,
men_45_to_49 double precision,
men_50_to_54 double precision,
men_55_to_59 double precision,
men_60_61 double precision,
men_62_64 double precision,
black_men_45_54 double precision,
black_men_55_64 double precision,
hispanic_men_45_54 double precision,
hispanic_men_55_64 double precision,
white_men_45_54 double precision,
white_men_55_64 double precision,
asian_men_45_54 double precision,
asian_men_55_64 double precision,
men_45_64_less_than_9_grade double precision,
men_45_64_grade_9_12 double precision,
men_45_64_high_school double precision,
men_45_64_some_college double precision,
men_45_64_associates_degree double precision,
men_45_64_bachelors_degree double precision,
men_45_64_graduate_degree double precision,
father_in_labor_force_one_parent_families_with_young_children double precision,
pop_15_and_over double precision,
pop_never_married double precision,
pop_now_married double precision,
pop_separated double precision,
pop_widowed double precision,
pop_divorced double precision,
commuters_16_over double precision,
commute_less_10_mins double precision,
commute_10_14_mins double precision,
commute_15_19_mins double precision,
commute_20_24_mins double precision,
commute_25_29_mins double precision,
commute_30_34_mins double precision,
commute_35_44_mins double precision,
commute_45_59_mins double precision,
commute_60_more_mins double precision,
aggregate_travel_time_to_work double precision,
income_less_10000 double precision,
income_10000_14999 double precision,
income_15000_19999 double precision,
income_20000_24999 double precision,
income_25000_29999 double precision,
income_30000_34999 double precision,
income_35000_39999 double precision,
income_40000_44999 double precision,
income_45000_49999 double precision,
income_50000_59999 double precision,
income_60000_74999 double precision,
income_75000_99999 double precision,
income_100000_124999 double precision,
income_125000_149999 double precision,
income_150000_199999 double precision,
income_200000_or_more double precision
);
INSERT INTO obs_3e7cc9cfd403b912c57b42d5f9195af9ce2f3cdb (cartodb_id, the_geom, the_geom_webmercator, geoid, total_pop, male_pop, female_pop, median_age, white_pop, black_pop, asian_pop, hispanic_pop, amerindian_pop, other_race_pop, two_or_more_races_pop, not_hispanic_pop, not_us_citizen_pop, workers_16_and_over, commuters_by_car_truck_van, commuters_drove_alone, commuters_by_carpool, commuters_by_public_transportation, commuters_by_bus, commuters_by_subway_or_elevated, walked_to_work, worked_at_home, children, households, population_3_years_over, in_school, in_grades_1_to_4, in_grades_5_to_8, in_grades_9_to_12, in_undergrad_college, pop_25_years_over, high_school_diploma, less_one_year_college, one_year_more_college, associates_degree, bachelors_degree, masters_degree, pop_5_years_over, speak_only_english_at_home, speak_spanish_at_home, pop_determined_poverty_status, poverty, median_income, gini_index, income_per_capita, housing_units, vacant_housing_units, vacant_housing_units_for_rent, vacant_housing_units_for_sale, median_rent, percent_income_spent_on_rent, owner_occupied_housing_units, million_dollar_housing_units, mortgaged_housing_units, families_with_young_children, two_parent_families_with_young_children, two_parents_in_labor_force_families_with_young_children, two_parents_father_in_labor_force_families_with_young_children, two_parents_mother_in_labor_force_families_with_young_children, two_parents_not_in_labor_force_families_with_young_children, one_parent_families_with_young_children, father_one_parent_families_with_young_children, men_45_to_64, men_45_to_49, men_50_to_54, men_55_to_59, men_60_61, men_62_64, black_men_45_54, black_men_55_64, hispanic_men_45_54, hispanic_men_55_64, white_men_45_54, white_men_55_64, asian_men_45_54, asian_men_55_64, men_45_64_less_than_9_grade, men_45_64_grade_9_12, men_45_64_high_school, men_45_64_some_college, men_45_64_associates_degree, men_45_64_bachelors_degree, men_45_64_graduate_degree, father_in_labor_force_one_parent_families_with_young_children, pop_15_and_over, pop_never_married, pop_now_married, pop_separated, pop_widowed, pop_divorced, commuters_16_over, commute_less_10_mins, commute_10_14_mins, commute_15_19_mins, commute_20_24_mins, commute_25_29_mins, commute_30_34_mins, commute_35_44_mins, commute_45_59_mins, commute_60_more_mins, aggregate_travel_time_to_work, income_less_10000, income_10000_14999, income_15000_19999, income_20000_24999, income_25000_29999, income_30000_34999, income_35000_39999, income_40000_44999, income_45000_49999, income_50000_59999, income_60000_74999, income_75000_99999, income_100000_124999, income_125000_149999, income_150000_199999, income_200000_or_more) VALUES (132625, NULL, NULL, '360470485002', 1655, 1070, 585, 28.8000000000000007, 922, 26, 40, 667, 0, 0, 0, 988, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 578, NULL, NULL, NULL, NULL, NULL, NULL, 1236, 181, 12, 138, 57, 477, 162, NULL, NULL, NULL, NULL, NULL, 66304, 0.349399999999999988, 28291, 637, 59, 21, 0, 1764, 35.2999999999999972, 59, 0, 39, 60, 47, 22, 25, 0, 0, 13, 0, NULL, 12, 64, 6, 15, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 0, NULL, NULL, NULL, NULL, NULL, NULL, 1139, 57, 5, 35, 108, 65, 322, 246, 194, 107, NULL, 10, 0, 37, 71, 0, 27, 19, 16, 11, 32, 108, 96, 57, 58, 22, 14);
CREATE SCHEMA IF NOT EXISTS observatory;
ALTER TABLE obs_3e7cc9cfd403b912c57b42d5f9195af9ce2f3cdb SET SCHEMA observatory;

View File

@@ -1,12 +0,0 @@
CREATE TABLE IF NOT EXISTS obs_85328201013baa14e8e8a4a57a01e6f6fbc5f9b1 (
cartodb_id integer,
the_geom geometry(Geometry,4326),
the_geom_webmercator geometry(Geometry,3857),
geoid text
);
INSERT INTO obs_85328201013baa14e8e8a4a57a01e6f6fbc5f9b1(cartodb_id, the_geom, the_geom_webmercator, geoid) VALUES (129734, '0106000020E6100000010000000103000000010000001B000000373465A71F7C52C065A71FD4455A4440AE105663097C52C0016729594E5A4440CFD90242EB7B52C07EA5F3E1595A4440F98381E7DE7B52C0E1CE85915E5A44407A6F0C01C07B52C0E1EB6B5D6A5A44401B9B1DA9BE7B52C03F6F2A52615A444088855AD3BC7B52C088669E5C535A4440E1EA0088BB7B52C0E6E95C514A5A44400CE6AF90B97B52C070D05E7D3C5A44401E85EB51B87B52C0B03A72A4335A4440BAF3C473B67B52C09929ADBF255A4440CD920035B57B52C0454AB3791C5A4440F78DAF3DB37B52C0E09BA6CF0E5A4440DBC2F352B17B52C0703FE081015A444015C440D7BE7B52C05E83BEF4F659444041446ADAC57B52C0EFDFBC38F15944405FB1868BDC7B52C0C03E3A75E559444034BC5983F77B52C0205ED72FD8594440EFFCA204FD7B52C07E384888F25944403ACAC16C027C52C00876FC17085A444056478E74067C52C00FECF82F105A44400FECF82F107C52C0876D8B321B5A4440BB438A01127C52C0DE1CAED51E5A4440B9C15087157C52C034643C4A255A444099F221A81A7C52C0D0EFFB372F5A44404AED45B41D7C52C0785DBF60375A4440373465A71F7C52C065A71FD4455A4440', '0106000020110F0000010000000103000000010000001B00000032BDDDFAFC655FC153A8E8ED80F45241B0FCBD28D7655FC14F4D6A798AF452412123E2FAA3655FC162ED8F6597F45241D9CC0CFF8E655FC1B67D80A59CF45241619957825A655FC1AB01DCDCA9F45241F732233A58655FC1E64AF3BA9FF45241FD0A331C55655FC1BF49541790F45241EE375EE952655FC1CF9272F585F45241AA316F924F655FC1D4F7757776F45241F8F1F9744D655FC1408CFE8D6CF452416B12CA484A655FC156BE40FD5CF45241B8D2542B48655FC149DCA39952F4524175CC65D444655FC106D3B94A43F452418E59D69241655FC1C23D366334F452419AA4818858655FC16C90219128F45241CD18C57164655FC1A533872422F45241BD2B21FD8A655FC1F390C1F614F45241B152F8CBB8655FC14A47B61806F452419ECAC825C2655FC16FDF6F9C23F45241D71BDA54CB655FC11F9B2BC43BF45241144F772DD2655FC116806FD544F45241AB4763B5E2655FC1CE331F2B51F45241DD9333CCE5655FC196244A3E55F45241BF29F5C7EB655FC1FB82AE795CF452419DE2E87DF4655FC145D3439967F45241B8920EABF9655FC1DB285EBD70F4524132BDDDFAFC655FC153A8E8ED80F45241', '360470485002');
CREATE SCHEMA IF NOT EXISTS observatory;
ALTER TABLE obs_85328201013baa14e8e8a4a57a01e6f6fbc5f9b1 SET SCHEMA observatory;

View File

@@ -1,12 +0,0 @@
CREATE TABLE IF NOT EXISTS obs_a92e1111ad3177676471d66bb8036e6d057f271b (
cartodb_id integer,
the_geom geometry(Geometry,4326),
the_geom_webmercator geometry(Geometry,3857),
geoid text
);
INSERT INTO obs_a92e1111ad3177676471d66bb8036e6d057f271b (cartodb_id, the_geom, the_geom_webmercator, geoid) VALUES (42130, '0106000020E6100000010000000103000000010000003500000056EF703B347C52C054FF2092215B44401B9AB2D30F7C52C03FE1ECD6325B4440B14B546F0D7C52C0BBCE86FC335B4440730F09DFFB7B52C0B796C9703C5B4440108FC4CBD37B52C0B96C74CE4F5B444001C0B167CF7B52C0ED0BE8853B5B4440C843DFDDCA7B52C05DDDB1D8265B4440A73D25E7C47B52C0D53BDC0E0D5B4440BB5E9A22C07B52C0F8A3A833F75A4440355F251FBB7B52C0B64604E3E05A444008910C39B67B52C098BF42E6CA5A44405227A089B07B52C0F204C24EB15A444024F1F274AE7B52C069E4F38AA75A44402B4A09C1AA7B52C06B63EC84975A4440E199D024B17B52C0546F0D6C955A44403C873254C57B52C02EAC1BEF8E5A44402593533BC37B52C0588AE42B815A4440973AC8EBC17B52C087890629785A44407A6F0C01C07B52C0E1EB6B5D6A5A44401B9B1DA9BE7B52C03F6F2A52615A444088855AD3BC7B52C088669E5C535A4440E1EA0088BB7B52C0E6E95C514A5A44400CE6AF90B97B52C070D05E7D3C5A44401E85EB51B87B52C0B03A72A4335A4440BAF3C473B67B52C09929ADBF255A4440CD920035B57B52C0454AB3791C5A4440F78DAF3DB37B52C0E09BA6CF0E5A4440DBC2F352B17B52C0703FE081015A444015C440D7BE7B52C05E83BEF4F659444041446ADAC57B52C0EFDFBC38F15944405FB1868BDC7B52C0C03E3A75E559444034BC5983F77B52C0205ED72FD8594440EFFCA204FD7B52C07E384888F25944403ACAC16C027C52C00876FC17085A444056478E74067C52C00FECF82F105A44400FECF82F107C52C0876D8B321B5A4440BB438A01127C52C0DE1CAED51E5A4440B9C15087157C52C034643C4A255A444099F221A81A7C52C0D0EFFB372F5A44404AED45B41D7C52C0785DBF60375A4440373465A71F7C52C065A71FD4455A4440C558A65F227C52C0D80DDB16655A4440F92EA52E197C52C09BA73AE4665A4440DEE522BE137C52C00664AF777F5A44405698BED7107C52C04759BF99985A444012D90759167C52C09430D3F6AF5A444044679945287C52C01F680586AC5A444049F086342A7C52C09CC3B5DAC35A44401FF5D72B2C7C52C0CB811E6ADB5A4440247EC51A2E7C52C0548B8862F25A4440FF59F3E32F7C52C0CB290131095B4440F96871C6307C52C09605137F145B444056EF703B347C52C054FF2092215B4440', '0106000020110F00000100000001030000000100000035000000CB0F2CEF1F665FC19DEDA02077F552416364A618E2655FC1D8D8EF798AF55241B40B7B08DE655FC199D7E7C28BF55241A3B11233C0655FC1B566E13B95F5524144B6AC207C655FC159D4CCEEAAF55241C19F52AB74655FC12A57B43494F552412CCFD9F56C655FC16DCEDF097DF552413D4D8DD462655FC12019DD2460F55241A97756BB5A655FC11519CDA747F552414BC1413752655FC1D30B38A72EF552416D0D0CE549655FC1694FB00416F55241DA23DD3C40655FC142906158F9F45241181B0FB43C655FC1A4E09E67EEF452419013EF6936655FC1B2DBC473DCF45241EBE7774441655FC1B4F8441ADAF45241AB9FC98D63655FC1594262D5D2F452411FBBDBFD5F655FC1E9AD116AC3F45241470CE7C35D655FC185FD8751B9F45241619957825A655FC1AB01DCDCA9F45241F732233A58655FC1E64AF3BA9FF45241FD0A331C55655FC1BF49541790F45241EE375EE952655FC1CF9272F585F45241AA316F924F655FC1D4F7757776F45241F8F1F9744D655FC1408CFE8D6CF452416B12CA484A655FC156BE40FD5CF45241B8D2542B48655FC149DCA39952F4524175CC65D444655FC106D3B94A43F452418E59D69241655FC1C23D366334F452419AA4818858655FC16C90219128F45241CD18C57164655FC1A533872422F45241BD2B21FD8A655FC1F390C1F614F45241B152F8CBB8655FC14A47B61806F452419ECAC825C2655FC16FDF6F9C23F45241D71BDA54CB655FC11F9B2BC43BF45241144F772DD2655FC116806FD544F45241AB4763B5E2655FC1CE331F2B51F45241DD9333CCE5655FC196244A3E55F45241BF29F5C7EB655FC1FB82AE795CF452419DE2E87DF4655FC145D3439967F45241B8920EABF9655FC1DB285EBD70F4524132BDDDFAFC655FC153A8E8ED80F452419841869901665FC1C596BEF3A3F45241EB9DB5FCF1655FC1418DA5F8A5F45241219564BFE8655FC1990A5B81C1F45241169F5DD2E3655FC18BDBEAA9DDF4524105172E2CED655FC108740AD7F7F452415F54539E0B665FC10CE331FCF3F452410FA302E70E665FC1D518FB1F0EF5524154A9F13D12665FC18624A18528F5524104F8A08615665FC1C8112C4242F55241A38C318F18665FC1E920CACF5BF552410EE9E90F1A665FC1834F6D7A68F55241CB0F2CEF1F665FC19DEDA02077F55241', '36047048500');
CREATE SCHEMA IF NOT EXISTS observatory;
ALTER TABLE obs_a92e1111ad3177676471d66bb8036e6d057f271b SET SCHEMA observatory;

View File

@@ -1,129 +0,0 @@
CREATE TABLE IF NOT EXISTS obs_ab038198aaab3f3cb055758638ee4de28ad70146 (
cartodb_id integer,
the_geom geometry(Geometry,4326),
the_geom_webmercator geometry(Geometry,3857),
geoid text,
total_pop double precision,
male_pop double precision,
female_pop double precision,
median_age double precision,
white_pop double precision,
black_pop double precision,
asian_pop double precision,
hispanic_pop double precision,
amerindian_pop double precision,
other_race_pop double precision,
two_or_more_races_pop double precision,
not_hispanic_pop double precision,
not_us_citizen_pop double precision,
workers_16_and_over double precision,
commuters_by_car_truck_van double precision,
commuters_drove_alone double precision,
commuters_by_carpool double precision,
commuters_by_public_transportation double precision,
commuters_by_bus double precision,
commuters_by_subway_or_elevated double precision,
walked_to_work double precision,
worked_at_home double precision,
children double precision,
households double precision,
population_3_years_over double precision,
in_school double precision,
in_grades_1_to_4 double precision,
in_grades_5_to_8 double precision,
in_grades_9_to_12 double precision,
in_undergrad_college double precision,
pop_25_years_over double precision,
high_school_diploma double precision,
less_one_year_college double precision,
one_year_more_college double precision,
associates_degree double precision,
bachelors_degree double precision,
masters_degree double precision,
pop_5_years_over double precision,
speak_only_english_at_home double precision,
speak_spanish_at_home double precision,
pop_determined_poverty_status double precision,
poverty double precision,
median_income double precision,
gini_index double precision,
income_per_capita double precision,
housing_units double precision,
vacant_housing_units double precision,
vacant_housing_units_for_rent double precision,
vacant_housing_units_for_sale double precision,
median_rent double precision,
percent_income_spent_on_rent double precision,
owner_occupied_housing_units double precision,
million_dollar_housing_units double precision,
mortgaged_housing_units double precision,
families_with_young_children double precision,
two_parent_families_with_young_children double precision,
two_parents_in_labor_force_families_with_young_children double precision,
two_parents_father_in_labor_force_families_with_young_children double precision,
two_parents_mother_in_labor_force_families_with_young_children double precision,
two_parents_not_in_labor_force_families_with_young_children double precision,
one_parent_families_with_young_children double precision,
father_one_parent_families_with_young_children double precision,
men_45_to_64 double precision,
men_45_to_49 double precision,
men_50_to_54 double precision,
men_55_to_59 double precision,
men_60_61 double precision,
men_62_64 double precision,
black_men_45_54 double precision,
black_men_55_64 double precision,
hispanic_men_45_54 double precision,
hispanic_men_55_64 double precision,
white_men_45_54 double precision,
white_men_55_64 double precision,
asian_men_45_54 double precision,
asian_men_55_64 double precision,
men_45_64_less_than_9_grade double precision,
men_45_64_grade_9_12 double precision,
men_45_64_high_school double precision,
men_45_64_some_college double precision,
men_45_64_associates_degree double precision,
men_45_64_bachelors_degree double precision,
men_45_64_graduate_degree double precision,
father_in_labor_force_one_parent_families_with_young_children double precision,
pop_15_and_over double precision,
pop_never_married double precision,
pop_now_married double precision,
pop_separated double precision,
pop_widowed double precision,
pop_divorced double precision,
commuters_16_over double precision,
commute_less_10_mins double precision,
commute_10_14_mins double precision,
commute_15_19_mins double precision,
commute_20_24_mins double precision,
commute_25_29_mins double precision,
commute_30_34_mins double precision,
commute_35_44_mins double precision,
commute_45_59_mins double precision,
commute_60_more_mins double precision,
aggregate_travel_time_to_work double precision,
income_less_10000 double precision,
income_10000_14999 double precision,
income_15000_19999 double precision,
income_20000_24999 double precision,
income_25000_29999 double precision,
income_30000_34999 double precision,
income_35000_39999 double precision,
income_40000_44999 double precision,
income_45000_49999 double precision,
income_50000_59999 double precision,
income_60000_74999 double precision,
income_75000_99999 double precision,
income_100000_124999 double precision,
income_125000_149999 double precision,
income_150000_199999 double precision,
income_200000_or_more double precision
);
INSERT INTO obs_ab038198aaab3f3cb055758638ee4de28ad70146 (cartodb_id, the_geom, the_geom_webmercator, geoid, total_pop, male_pop, female_pop, median_age, white_pop, black_pop, asian_pop, hispanic_pop, amerindian_pop, other_race_pop, two_or_more_races_pop, not_hispanic_pop, not_us_citizen_pop, workers_16_and_over, commuters_by_car_truck_van, commuters_drove_alone, commuters_by_carpool, commuters_by_public_transportation, commuters_by_bus, commuters_by_subway_or_elevated, walked_to_work, worked_at_home, children, households, population_3_years_over, in_school, in_grades_1_to_4, in_grades_5_to_8, in_grades_9_to_12, in_undergrad_college, pop_25_years_over, high_school_diploma, less_one_year_college, one_year_more_college, associates_degree, bachelors_degree, masters_degree, pop_5_years_over, speak_only_english_at_home, speak_spanish_at_home, pop_determined_poverty_status, poverty, median_income, gini_index, income_per_capita, housing_units, vacant_housing_units, vacant_housing_units_for_rent, vacant_housing_units_for_sale, median_rent, percent_income_spent_on_rent, owner_occupied_housing_units, million_dollar_housing_units, mortgaged_housing_units, families_with_young_children, two_parent_families_with_young_children, two_parents_in_labor_force_families_with_young_children, two_parents_father_in_labor_force_families_with_young_children, two_parents_mother_in_labor_force_families_with_young_children, two_parents_not_in_labor_force_families_with_young_children, one_parent_families_with_young_children, father_one_parent_families_with_young_children, men_45_to_64, men_45_to_49, men_50_to_54, men_55_to_59, men_60_61, men_62_64, black_men_45_54, black_men_55_64, hispanic_men_45_54, hispanic_men_55_64, white_men_45_54, white_men_55_64, asian_men_45_54, asian_men_55_64, men_45_64_less_than_9_grade, men_45_64_grade_9_12, men_45_64_high_school, men_45_64_some_college, men_45_64_associates_degree, men_45_64_bachelors_degree, men_45_64_graduate_degree, father_in_labor_force_one_parent_families_with_young_children, pop_15_and_over, pop_never_married, pop_now_married, pop_separated, pop_widowed, pop_divorced, commuters_16_over, commute_less_10_mins, commute_10_14_mins, commute_15_19_mins, commute_20_24_mins, commute_25_29_mins, commute_30_34_mins, commute_35_44_mins, commute_45_59_mins, commute_60_more_mins, aggregate_travel_time_to_work, income_less_10000, income_10000_14999, income_15000_19999, income_20000_24999, income_25000_29999, income_30000_34999, income_35000_39999, income_40000_44999, income_45000_49999, income_50000_59999, income_60000_74999, income_75000_99999, income_100000_124999, income_125000_149999, income_150000_199999, income_200000_or_more) VALUES (44715, NULL, NULL, '36047048500', 2794, 1793, 1001, 28, 1528, 80, 100, 1066, 0, 14, 6, 1728, 316, 1996, 117, 101, 16, 1453, 46, 1394, 145, 81, 174, 897, 2728, 554, 20, 13, 35, 182, 2064, 335, 19, 197, 109, 801, 299, 2715, 1696, 839, 2794, 564, 73170, 0.38919999999999999, 29516, 1009, 112, 21, 0, 1733, 29.3999999999999986, 106, 0, 74, 91, 61, 22, 25, 0, 14, 30, 17, 150, 31, 67, 6, 15, 31, 0, 0, 37, 52, 61, 0, 0, 0, 18, 6, 53, 6, 16, 23, 28, 17, 2627, 2035, 393, 65, 35, 19, 1915, 82, 24, 77, 172, 169, 461, 457, 297, 176, 67175, 10, 11, 37, 96, 29, 52, 19, 24, 11, 57, 123, 151, 68, 94, 45, 70);
CREATE SCHEMA IF NOT EXISTS observatory;
ALTER TABLE obs_ab038198aaab3f3cb055758638ee4de28ad70146 SET SCHEMA observatory;

View File

@@ -1,841 +0,0 @@
CREATE TABLE obs_column (cartodb_id bigint, the_geom geometry, the_geom_webmercator geometry, id text, type text, name text, description text, weight numeric, aggregate text, version text, extra json);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (590, NULL, NULL, '"us.census.tiger".geom', 'Geometry', NULL, NULL, 0, NULL, 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (628, NULL, NULL, '"us.census.acs".B15001027', 'Numeric', 'Men age 45 to 64 ("middle aged")', '0', 0, 'sum', 1, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (661, NULL, NULL, '"us.ny.nyc.opendata".document_id', 'Text', 'Document ID', NULL, 0, NULL, 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (752, NULL, NULL, '"us.census.acs".B25075001_quantile', 'Numeric', 'Quantile:Owner-occupied Housing Units', '', 0, 'quantile', 3, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (1, NULL, NULL, '"es.ine".gender', 'Text', 'Gender', NULL, 0, NULL, 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (2, NULL, NULL, '"es.ine".total_pop', 'Numeric', 'Total Population', 'The total number of all people living in a geographic area.', 10, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (3, NULL, NULL, '"es.ine".pop_100_more', 'Numeric', 'Population age 100 or more', NULL, 0, NULL, 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (4, NULL, NULL, '"es.ine".pop_0_4', 'Numeric', 'Population age 0 to 4', NULL, 0, NULL, 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (5, NULL, NULL, '"es.ine".pop_5_9', 'Numeric', 'Population age 5 to 9', NULL, 0, NULL, 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (6, NULL, NULL, '"es.ine".pop_10_14', 'Numeric', 'Population age 10 to 14', NULL, 0, NULL, 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (7, NULL, NULL, '"es.ine".pop_15_19', 'Numeric', 'Population age 15 to 19', NULL, 0, NULL, 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (8, NULL, NULL, '"es.ine".pop_20_24', 'Numeric', 'Population age 20 to 24', NULL, 0, NULL, 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (9, NULL, NULL, '"es.ine".pop_25_29', 'Numeric', 'Population age 25 to 29', NULL, 0, NULL, 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (10, NULL, NULL, '"es.ine".pop_30_34', 'Numeric', 'Population age 30 to 34', NULL, 0, NULL, 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (11, NULL, NULL, '"es.ine".pop_35_39', 'Numeric', 'Population age 35 to 39', NULL, 0, NULL, 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (12, NULL, NULL, '"es.ine".pop_40_44', 'Numeric', 'Population age 40 to 44', NULL, 0, NULL, 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (13, NULL, NULL, '"es.ine".pop_45_49', 'Numeric', 'Population age 45 to 49', NULL, 0, NULL, 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (14, NULL, NULL, '"es.ine".pop_50_54', 'Numeric', 'Population age 50 to 54', NULL, 0, NULL, 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (15, NULL, NULL, '"es.ine".pop_55_59', 'Numeric', 'Population age 55 to 59', NULL, 0, NULL, 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (16, NULL, NULL, '"es.ine".pop_60_64', 'Numeric', 'Population age 60 to 64', NULL, 0, NULL, 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (17, NULL, NULL, '"es.ine".pop_65_69', 'Numeric', 'Population age 65 to 69', NULL, 0, NULL, 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (18, NULL, NULL, '"es.ine".pop_70_74', 'Numeric', 'Population age 70 to 74', NULL, 0, NULL, 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (19, NULL, NULL, '"es.ine".pop_75_79', 'Numeric', 'Population age 75 to 79', NULL, 0, NULL, 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (20, NULL, NULL, '"es.ine".pop_80_84', 'Numeric', 'Population age 80 to 84', NULL, 0, NULL, 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (21, NULL, NULL, '"es.ine".pop_85_89', 'Numeric', 'Population age 85 to 89', NULL, 0, NULL, 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (22, NULL, NULL, '"es.ine".pop_90_94', 'Numeric', 'Population age 90 to 94', NULL, 0, NULL, 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (23, NULL, NULL, '"es.ine".pop_95_99', 'Numeric', 'Population age 95 to 99', NULL, 0, NULL, 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (24, NULL, NULL, '"us.census.lodes".total_jobs', 'Integer', 'Total Jobs', 'Total number of jobs', 8, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (25, NULL, NULL, '"us.census.lodes".jobs_firm_age_500_more_employees', 'Integer', 'Jobs at firms with 500 Employees', 'Number of jobs for workers at firms with Firm Size: 500 Employees', 1, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (26, NULL, NULL, '"us.census.lodes".jobs_age_29_or_younger', 'Integer', 'Jobs for workers age 29 or younger', 'Number of jobs of workers age 29 or younger', 3, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (27, NULL, NULL, '"us.census.lodes".jobs_age_30_to_54', 'Integer', 'Jobs for workers age 30 to 54', 'Number of jobs for workers age 30 to 54', 3, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (28, NULL, NULL, '"us.census.lodes".jobs_age_55_or_older', 'Integer', 'Jobs for workers age 55 or older', 'Number of jobs for workers age 55 or older', 3, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (29, NULL, NULL, '"us.census.lodes".jobs_earning_15000_or_less', 'Integer', 'Jobs earning up to $15,000 per year', 'Number of jobs with earnings $1250/month or less ($15,000 per year)', 3, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (30, NULL, NULL, '"us.census.lodes".jobs_earning_15001_to_40000', 'Integer', 'Jobs earning $15,000 to $40,000 per year', 'Number of jobs with earnings $1251/month to $3333/month ($15,000 to $40,000 per year)', 5, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (31, NULL, NULL, '"us.census.lodes".jobs_earning_40001_or_more', 'Integer', 'Jobs with earnings greater than $40,000 per year', 'Number of Jobs with earnings greater than $3333/month', 5, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (32, NULL, NULL, '"us.census.lodes".jobs_11_agriculture_forestry_fishing', 'Integer', 'Agriculture, Forestry, Fishing and Hunting jobs', 'Number of jobs in NAICS sector 11 (Agriculture, Forestry, Fishing and Hunting)', 4, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (33, NULL, NULL, '"us.census.lodes".jobs_21_mining_quarrying_oil_gas', 'Integer', 'Mining, Quarrying, and Oil and Gas Extraction jobs', 'Number of jobs in NAICS sector 21 (Mining, Quarrying, and Oil and Gas Extraction) ', 4, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (34, NULL, NULL, '"us.census.lodes".jobs_22_utilities', 'Integer', 'Utilities Jobs', 'Number of jobs in NAICS sector 22 (Utilities) ', 4, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (35, NULL, NULL, '"us.census.lodes".jobs_23_construction', 'Integer', 'Construction Jobs', 'Number of jobs in NAICS sector 23 (Construction) ', 4, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (36, NULL, NULL, '"us.census.lodes".jobs_31_33_manufacturing', 'Integer', 'Manufacturing Jobs', 'Number of jobs in NAICS sector 31-33 (Manufacturing) ', 4, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (37, NULL, NULL, '"us.census.lodes".jobs_42_wholesale_trade', 'Integer', 'Wholesale Trade Jobs', 'Number of jobs in NAICS sector 42 (Wholesale Trade) ', 4, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (38, NULL, NULL, '"us.census.lodes".jobs_44_45_retail_trade', 'Integer', 'Retail Trade Jobs', 'Number of jobs in NAICS sector 44-45 (Retail Trade) ', 4, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (39, NULL, NULL, '"us.census.lodes".jobs_48_49_transport_warehousing', 'Integer', 'Transport and Warehousing Jobs', 'Number of jobs in NAICS sector 48-49 (Transportation and Warehousing) ', 4, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (40, NULL, NULL, '"us.census.lodes".jobs_51_information', 'Integer', 'Information Jobs', 'Number of jobs in NAICS sector 51 (Information) ', 4, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (41, NULL, NULL, '"us.census.lodes".jobs_52_finance_and_insurance', 'Integer', 'Finance and Insurance Jobs', 'Number of jobs in NAICS sector 52 (Finance and Insurance)', 4, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (42, NULL, NULL, '"us.census.lodes".jobs_53_real_estate_rental_leasing', 'Integer', 'Real Estate and Rental and Leasing Jobs', 'Number of jobs in NAICS sector 53 (Real Estate and Rental and Leasing) ', 4, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (43, NULL, NULL, '"us.census.lodes".jobs_54_professional_scientific_tech_services', 'Integer', 'Professional, Scientific, and Technical Services Jobs', 'Number of jobs in NAICS sector 54 (Professional, Scientific, and Technical Services) ', 4, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (44, NULL, NULL, '"us.census.lodes".jobs_55_management_of_companies_enterprises', 'Integer', 'Management of Companies and Enterprises Jobs', 'Number of jobs in NAICS sector 55 (Management of Companies and Enterprises) ', 4, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (45, NULL, NULL, '"us.census.lodes".jobs_56_admin_support_waste_management', 'Integer', 'Administrative and Support and Waste Management and Remediation Services Jobs', 'Number of jobs in NAICS sector 56 (Administrative and Support and Waste Management and Remediation Services) ', 4, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (46, NULL, NULL, '"us.census.lodes".jobs_61_educational_services', 'Integer', 'Educational Services Jobs', 'Number of jobs in NAICS sector 61 (Educational Services) ', 4, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (47, NULL, NULL, '"us.census.lodes".jobs_62_healthcare_social_assistance', 'Integer', 'Health Care and Social Assistance Jobs', 'Number of jobs in NAICS sector 62 (Health Care and Social Assistance) ', 4, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (48, NULL, NULL, '"us.census.lodes".jobs_71_arts_entertainment_recreation', 'Integer', 'Arts, Entertainment, and Recreation jobs', 'Number of jobs in NAICS sector 71 (Arts, Entertainment, and Recreation) ', 4, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (49, NULL, NULL, '"us.census.lodes".jobs_72_accommodation_and_food', 'Integer', 'Accommodation and Food Services jobs', 'Number of jobs in NAICS sector 72 (Accommodation and Food Services) ', 4, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (119, NULL, NULL, '"us.census.acs".B01001015', 'Numeric', 'Men age 45 to 49', '', 0, 'sum', 1, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (50, NULL, NULL, '"us.census.lodes".jobs_81_other_services_except_public_admin', 'Integer', 'Other Services (except Public Administration) jobs', 'Jobs in NAICS sector 81 (Other Services [except Public Administration])', 4, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (51, NULL, NULL, '"us.census.lodes".jobs_92_public_administration', 'Integer', 'Public Administration jobs', 'Number of jobs in NAICS sector 92 (Public Administration) ', 4, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (52, NULL, NULL, '"us.census.lodes".jobs_white', 'Integer', 'Jobs held by workers who are white', 'Number of jobs for workers with Race: White, Alone', 2, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (53, NULL, NULL, '"us.census.lodes".jobs_black', 'Integer', 'Jobs held by workers who are black', 'Number of jobs for workers with Race: Black or African American Alone', 2, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (54, NULL, NULL, '"us.bls".industry_code', 'Text', 'Six-digit NAICS Industry Code', '6-character Industry Code (NAICS SuperSector)', 0, NULL, 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (55, NULL, NULL, '"us.census.tiger".county', 'Geometry', 'US County', 'The primary legal divisions of most states are termed counties. In Louisiana, these divisions are known as parishes. In Alaska, which has no counties, the equivalent entities are the organized boroughs, city and boroughs, municipalities, and census areas; the latter of which are delineated cooperatively for statistical purposes by the state of Alaska and the Census Bureau. In four states (Maryland, Missouri, Nevada, and Virginia), there are one or more incorporated places that are independent of any county organization and thus constitute primary divisions of their states. These incorporated places are known as independent cities and are treated as equivalent entities for purposes of data presentation. The District of Columbia and Guam have no primary divisions, and each area is considered an equivalent entity for purposes of data presentation. All of the counties in Connecticut and Rhode Island and nine counties in Massachusetts were dissolved as functioning governmental entities; however, the Census Bureau continues to present data for these historical entities in order to provide comparable geographic units at the county level of the geographic hierarchy for these states and represents them as nonfunctioning legal entities in data products. The Census Bureau treats the following entities as equivalents of counties for purposes of data presentation: municipios in Puerto Rico, districts and islands in American Samoa, municipalities in the Commonwealth of the Northern Mariana Islands, and islands in the U.S. Virgin Islands. Each county or statistically equivalent entity is assigned a three-character numeric Federal Information Processing Series (FIPS) code based on alphabetical sequence that is unique within state and an eight-digit National Standard feature identifier.', 7, NULL, 1, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (56, NULL, NULL, '"us.census.tiger".state', 'Geometry', 'US States', 'States and Equivalent Entities are the primary governmental divisions of the United States. In addition to the 50 states, the Census Bureau treats the District of Columbia, Puerto Rico, American Samoa, the Commonwealth of the Northern Mariana Islands, Guam, and the U.S. Virgin Islands as the statistical equivalents of states for the purpose of data presentation.', 8, NULL, 1, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (57, NULL, NULL, '"us.census.tiger".puma', 'Geometry', 'US Census Public Use Microdata Areas', 'PUMAs are geographic areas for which the Census Bureau provides selected extracts of raw data from a small sample of census records that are screened to protect confidentiality. These extracts are referred to as public use microdata sample (PUMS) files.
For the 2010 Census, each state, the District of Columbia, Puerto Rico, and some Island Area participants delineated PUMAs for use in presenting PUMS data based on a 5 percent sample of decennial census or American Community Survey data. These areas are required to contain at least 100,000 people. This is different from Census 2000 when two types of PUMAs were defined: a 5 percent PUMA as for 2010 and an additional super-PUMA designed to provide a 1 percent sample. The PUMAs are identified by a five-digit census code unique within state.', 6, NULL, 1, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (58, NULL, NULL, '"us.census.tiger".block_group', 'Geometry', 'US Census Block Groups', 'Block groups (BGs) are statistical divisions of census tracts, are generally defined to contain between 600 and 3,000 people, and are used to present data and control block numbering. A block group consists of clusters of blocks within the same census tract that have the same first digit of their four-digit census block number. For example, blocks 3001, 3002, 3003, ..., 3999 in census tract 1210.02 belong to BG 3 in that census tract. Most BGs were delineated by local participants in the Census Bureau\u2019s Participant Statistical Areas Program. The Census Bureau delineated BGs only where a local or tribal government declined to participate, and a regional organization or State Data Center was not available to participate.
A BG usually covers a contiguous area. Each census tract contains at least one BG, and BGs are uniquely numbered within the census tract. Within the standard census geographic hierarchy, BGs never cross state, county, or census tract boundaries but may cross the boundaries of any other geographic entity. Tribal census tracts and tribal BGs are separate and unique geographic areas defined within federally recognized American Indian reservations and can cross state and county boundaries (see \u201cTribal Census Tract\u201d and \u201cTribal Block Group\u201d). The tribal census tracts and tribal block groups may be completely different from the census tracts and block groups defined by state and county.', 10, NULL, 1, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (59, NULL, NULL, '"us.census.tiger".census_tract', 'Geometry', 'US Census Tracts', 'Census tracts are identified by an up to four-digit integer number and may have an optional two-digit suffix; for example 1457.02 or 23. The census tract codes consist of six digits with an implied decimal between the fourth and fifth digit corresponding to the basic census tract number but with leading zeroes and trailing zeroes for census tracts without a suffix. The tract number examples above would have codes of 145702 and 002300, respectively.
Some ranges of census tract numbers in the 2010 Census are used to identify distinctive types of census tracts. The code range in the 9400s is used for those census tracts with a majority of population, housing, or land area associated with an American Indian area and matches the numbering used in Census 2000. The code range in the 9800s is new for 2010 and is used to specifically identify special land-use census tracts; that is, census tracts defined to encompass a large area with little or no residential population with special characteristics, such as large parks or employment areas. The range of census tracts in the 9900s represents census tracts delineated specifically to cover large bodies of water. This is different from Census 2000 when water-only census tracts were assigned codes of all zeroes (000000); 000000 is no longer used as a census tract code for the 2010 Census.
The Census Bureau uses suffixes to help identify census tract changes for comparison purposes. Census tract suffixes may range from .01 to .98. As part of local review of existing census tracts before each census, some census tracts may have grown enough in population size to qualify as more than one census tract. When a census tract is split, the split parts usually retain the basic number but receive different suffixes. For example, if census tract 14 is split, the new tract numbers would be 14.01 and 14.02. In a few counties, local participants request major changes to, and renumbering of, the census tracts; however, this is generally discouraged. Changes to individual census tract boundaries usually do not result in census tract numbering changes.
The Census Bureau introduced the concept of tribal census tracts for the first time for Census 2000. Tribal census tracts for that census consisted of the standard county-based census tracts tabulated within American Indian areas, thus allowing for the tracts to ignore state and county boundaries for tabulation. The Census Bureau assigned the 9400 range of numbers to identify specific tribal census tracts; however, not all tribal census tracts used this numbering scheme. For the 2010 Census, tribal census tracts no longer are tied to or numbered in the same way as the county-based census tracts (see \u201cTribal Census Tract\u201d).', 9, NULL, 1, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (60, NULL, NULL, '"us.census.tiger".congressional_district', 'Geometry', 'US Congressional Districts', 'Congressional districts are identified by a two-character numeric Federal Information Processing Series (FIPS) code numbered uniquely within the state. The District of Columbia, Puerto Rico, and the Island Areas have code 98 assigned identifying their nonvoting delegate status with respect to representation in Congress:
01 to 53: Congressional district codes
00: At large (single district for state)
98: Nonvoting delegate', 5, NULL, 1, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (61, NULL, NULL, '"us.census.lodes".jobs_amerindian', 'Integer', 'Jobs held by workers who are American Indian or Alaska Native Alone', 'Number of jobs for workers with Race: American Indian or Alaska Native Alone', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (62, NULL, NULL, '"us.census.lodes".jobs_asian', 'Integer', 'Jobs held by workers who are Asian', 'Number of jobs for workers with Race: Asian Alone', 2, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (63, NULL, NULL, '"us.census.lodes".jobs_hawaiian', 'Integer', 'Jobs held by workers who are Native Hawaiian or Other Pacific Islander Alone', 'Number of jobs for workers with Race: Native Hawaiian or Other Pacific Islander Alone', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (64, NULL, NULL, '"us.census.lodes".jobs_two_or_more_races', 'Integer', 'Jobs held by workers who reported Two or More Race Groups', 'Number of jobs for workers with Race: Two or More Race Groups', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (128, NULL, NULL, '"us.census.acs".B01001H012', 'Numeric', 'White Men age 45 to 54', '', 0, 'sum', 1, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (65, NULL, NULL, '"us.census.lodes".jobs_not_hispanic', 'Integer', 'Jobs held by workers who are Not Hispanic or Latino', 'Number of jobs for workers with Ethnicity: Not Hispanic or Latino', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (66, NULL, NULL, '"us.census.acs".B01001001', 'Numeric', 'Total Population', 'The total number of all people living in a given geographic area. This is a very useful catch-all denominator when calculating rates.', 10, 'sum', 1, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (67, NULL, NULL, '"us.census.acs".B15001034', 'Numeric', 'Men age 45 to 64 who obtained a graduate or professional degree', '', 0, 'sum', 1, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (68, NULL, NULL, '"us.census.acs".B01001002', 'Numeric', 'Male Population', 'The number of people within each geography who are male.', 8, 'sum', 1, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (69, NULL, NULL, '"us.census.acs".B01001026', 'Numeric', 'Female Population', 'The number of people within each geography who are female.', 8, 'sum', 1, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (70, NULL, NULL, '"us.census.acs".B01002001', 'Numeric', 'Median Age', 'The median age of all people in a given geographic area.', 2, 'median', 1, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (71, NULL, NULL, '"us.census.acs".B03002003', 'Numeric', 'White Population', 'The number of people identifying as white, non-Hispanic in each geography.', 7, 'sum', 1, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (72, NULL, NULL, '"us.census.acs".B03002004', 'Numeric', 'Black or African American Population', 'The number of people identifying as black or African American, non-Hispanic in each geography.', 7, 'sum', 1, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (73, NULL, NULL, '"us.census.acs".B03002006', 'Numeric', 'Asian Population', 'The number of people identifying as Asian, non-Hispanic in each geography.', 7, 'sum', 1, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (74, NULL, NULL, '"us.census.acs".B03002012', 'Numeric', 'Hispanic Population', 'The number of people identifying as Hispanic or Latino in each geography.', 7, 'sum', 1, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (75, NULL, NULL, '"us.census.acs".B05001006', 'Numeric', 'Not a U.S. Citizen Population', 'The number of people within each geography who indicated that they are not U.S. citizens.', 3, 'sum', 1, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (76, NULL, NULL, '"us.census.acs".B08006017', 'Numeric', 'Worked at Home', 'The count within a geographical area of workers over the age of 16 who worked at home.', 4, 'sum', 1, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (77, NULL, NULL, '"us.census.acs".B08006008', 'Numeric', 'Commuters by Public Transportation', 'The number of workers age 16 years and over within a geographic area who primarily traveled to work by public transportation. This is the principal mode of travel or type of conveyance, by distance rather than time, that the worker usually used to get from home to work.', 4, 'sum', 1, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (78, NULL, NULL, '"us.census.acs".B08006015', 'Numeric', 'Walked to Work', 'The number of workers age 16 years and over within a geographic area who primarily walked to work. This would mean that of any way of getting to work, they travelled the most distance walking.', 4, 'sum', 1, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (79, NULL, NULL, '"us.census.acs".B08006009', 'Numeric', 'Commuters by Bus', 'The number of workers age 16 years and over within a geographic area who primarily traveled to work by bus. This is the principal mode of travel or type of conveyance, by distance rather than time, that the worker usually used to get from home to work. This is a subset of workers who commuted by public transport.', 3, 'sum', 1, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (80, NULL, NULL, '"us.census.acs".B08006011', 'Numeric', 'Commuters by Subway or Elevated', 'The number of workers age 16 years and over within a geographic area who primarily traveled to work by subway or elevated train. This is the principal mode of travel or type of conveyance, by distance rather than time, that the worker usually used to get from home to work. This is a subset of workers who commuted by public transport.', 3, 'sum', 1, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (81, NULL, NULL, '"us.census.acs".B09001001', 'Numeric', 'children under 18 Years of Age', 'The number of people within each geography who are under 18 years of age.', 4, 'sum', 1, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (82, NULL, NULL, '"us.census.acs".B14001001', 'Numeric', 'Population 3 Years and Over', 'The total number of people in each geography age 3 years and over. This denominator is mostly used to calculate rates of school enrollment.', 4, 'sum', 1, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (83, NULL, NULL, '"us.census.acs".B14001002', 'Numeric', 'Students Enrolled in School', 'The total number of people in each geography currently enrolled at any level of school, from nursery or pre-school to advanced post-graduate education. Only includes those over the age of 3.', 6, 'sum', 1, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (84, NULL, NULL, '"us.census.acs".B14001008', 'Numeric', 'Students Enrolled as Undergraduate in College', 'The number of people in a geographic area who are enrolled in college at the undergraduate level. Enrollment refers to being registered or listed as a student in an educational program leading to a college degree. This may be a public school or college, a private school or college.', 5, 'sum', 1, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (85, NULL, NULL, '"us.census.acs".B14001005', 'Numeric', 'Students Enrolled in Grades 1 to 4', 'The total number of people in each geography currently enrolled in grades 1 through 4 inclusive. This corresponds roughly to elementary school.', 3, 'sum', 1, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (86, NULL, NULL, '"us.census.acs".B14001006', 'Numeric', 'Students Enrolled in Grades 5 to 8', 'The total number of people in each geography currently enrolled in grades 5 through 8 inclusive. This corresponds roughly to middle school.', 3, 'sum', 1, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (87, NULL, NULL, '"us.census.acs".B14001007', 'Numeric', 'Students Enrolled in Grades 9 to 12', 'The total number of people in each geography currently enrolled in grades 9 through 12 inclusive. This corresponds roughly to high school.', 3, 'sum', 1, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (88, NULL, NULL, '"us.census.acs".B15003001', 'Numeric', 'Population 25 Years and Over', 'The number of people in a geographic area who are over the age of 25. This is used mostly as a denominator of educational attainment.', 2, 'sum', 1, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (89, NULL, NULL, '"us.census.acs".B15003023', 'Numeric', 'Population Completed Master''s Degree', 'The number of people in a geographic area over the age of 25 who obtained a master''s degree, but did not complete a more advanced degree.', 4, 'sum', 1, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (90, NULL, NULL, '"us.census.acs".B15003017', 'Numeric', 'Population Completed High School', 'The number of people in a geographic area over the age of 25 who completed high school, and did not complete a more advanced degree.', 4, 'sum', 1, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (91, NULL, NULL, '"us.census.acs".B15003022', 'Numeric', 'Population Completed Bachelor''s Degree', 'The number of people in a geographic area over the age of 25 who obtained a bachelor''s degree, and did not complete a more advanced degree.', 4, 'sum', 1, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (120, NULL, NULL, '"us.census.acs".B01001016', 'Numeric', 'Men age 50 to 54', '', 0, 'sum', 1, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (92, NULL, NULL, '"us.census.acs".B16001001', 'Numeric', 'Population 5 Years and Over', 'The number of people in a geographic area who are over the age of 5. This is primarily used as a denominator of measures of language spoken at home.', 2, 'sum', 1, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (93, NULL, NULL, '"us.census.acs".B16001003', 'Numeric', 'Speaks Spanish at Home', 'The number of people in a geographic area over age 5 who speak Spanish at home, possibly in addition to other languages.', 4, 'sum', 1, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (94, NULL, NULL, '"us.census.acs".B01001H013', 'Numeric', 'White Men age 55 to 64', '', 0, 'sum', 1, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (95, NULL, NULL, '"us.census.acs".B16001002', 'Numeric', 'Speaks only English at Home', 'The number of people in a geographic area over age 5 who speak only English at home.', 3, 'sum', 1, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (129, NULL, NULL, '"us.census.acs".B01001D012', 'Numeric', 'Asian Men age 45 to 54', '', 0, 'sum', 1, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (96, NULL, NULL, '"us.census.acs".B17001001', 'Numeric', 'Population for Whom Poverty Status Determined', 'The number of people in each geography who could be identified as either living in poverty or not. This should be used as the denominator when calculating poverty rates, as it excludes people for whom it was not possible to determine poverty.', 2, 'sum', 1, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (97, NULL, NULL, '"us.census.acs".B17001002', 'Numeric', 'Income In The Past 12 Months Below Poverty Level', 'The number of people in a geographic area who are part of a family (which could be just them as an individual) determined to be "in poverty" following the Office of Management and Budget''s Directive 14. (https://www.census.gov/hhes/povmeas/methodology/ombdir14.html)', 2, 'sum', 1, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (98, NULL, NULL, '"us.census.acs".B19013001', 'Numeric', 'Median Household Income in the past 12 Months', 'Within a geographic area, the median income received by every household on a regular basis before payments for personal income taxes, social security, union dues, medicare deductions, etc. It includes income received from wages, salary, commissions, bonuses, and tips; self-employment income from own nonfarm or farm businesses, including proprietorships and partnerships; interest, dividends, net rental income, royalty income, or income from estates and trusts; Social Security or Railroad Retirement income; Supplemental Security Income (SSI); any cash public assistance or welfare payments from the state or local welfare office; retirement, survivor, or disability benefits; and any other sources of income received regularly such as Veterans'' (VA) payments, unemployment and/or worker''s compensation, child support, and alimony.', 8, 'median', 1, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (99, NULL, NULL, '"us.census.acs".B19083001', 'Numeric', 'Gini Index', '', 5, '', 1, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (100, NULL, NULL, '"us.census.acs".B19301001', 'Numeric', 'Per Capita Income in the past 12 Months', '', 7, 'average', 1, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (101, NULL, NULL, '"us.census.acs".B25001001', 'Numeric', 'Housing Units', 'A count of housing units in each geography. A housing unit is a house, an apartment, a mobile home or trailer, a group of rooms, or a single room occupied as separate living quarters, or if vacant, intended for occupancy as separate living quarters.', 8, 'sum', 1, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (102, NULL, NULL, '"us.census.acs".B25075001', 'Numeric', 'Owner-occupied Housing Units', '', 5, 'sum', 1, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (103, NULL, NULL, '"us.census.acs".B25081002', 'Numeric', 'Owner-occupied Housing Units with a Mortgage', 'The count of housing units within a geographic area that are mortagaged. "Mortgage" refers to all forms of debt where the property is pledged as security for repayment of the debt, including deeds of trust, trust deed, contracts to purchase, land contracts, junior mortgages, and home equity loans.', 4, 'sum', 1, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (104, NULL, NULL, '"us.census.acs".B25002003', 'Numeric', 'Vacant Housing Units', 'The count of vacant housing units in a geographic area. A housing unit is vacant if no one is living in it at the time of enumeration, unless its occupants are only temporarily absent. Units temporarily occupied at the time of enumeration entirely by people who have a usual residence elsewhere are also classified as vacant.', 8, 'sum', 1, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (105, NULL, NULL, '"us.census.acs".B25004004', 'Numeric', 'Vacant Housing Units for Sale', 'The count of vacant housing units in a geographic area that are for sale. A housing unit is vacant if no one is living in it at the time of enumeration, unless its occupants are only temporarily absent. Units temporarily occupied at the time of enumeration entirely by people who have a usual residence elsewhere are also classified as vacant.', 7, 'sum', 1, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (106, NULL, NULL, '"us.census.acs".B25004002', 'Numeric', 'Vacant Housing Units for Rent', 'The count of vacant housing units in a geographic area that are for rent. A housing unit is vacant if no one is living in it at the time of enumeration, unless its occupants are only temporarily absent. Units temporarily occupied at the time of enumeration entirely by people who have a usual residence elsewhere are also classified as vacant.', 7, 'sum', 1, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (107, NULL, NULL, '"us.census.acs".B25058001', 'Numeric', 'Median Rent', 'The median contract rent within a geographic area. The contract rent is the monthly rent agreed to or contracted for, regardless of any furnishings, utilities, fees, meals, or services that may be included. For vacant units, it is the monthly rent asked for the rental unit at the time of interview.', 8, 'median', 1, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (108, NULL, NULL, '"us.census.acs".B25071001', 'Numeric', 'Percent of Household Income Spent on Rent', 'Within a geographic area, the median percentage of household income which was spent on gross rent. Gross rent is the amount of the contract rent plus the estimated average monthly cost of utilities (electricity, gas, water, sewer etc.) and fuels (oil, coal, wood, etc.) if these are paid by the renter. Household income is the sum of the income of all people 15 years and older living in the household.', 4, 'average', 1, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (109, NULL, NULL, '"us.census.acs".B25075025', 'Numeric', 'Owner-occupied Housing Units valued at $1,000,000 or more.', 'The count of owner occupied housing units in a geographic area that are valued at $1,000,000 or more. Value is the respondent''s estimate of how much the property (house and lot, mobile home and lot, or condominium unit) would sell for if it were for sale.', 5, 'sum', 1, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (110, NULL, NULL, '"us.census.acs".B23008002', 'Numeric', 'Families with young children (under 6 years of age)', '', 0, 'sum', 1, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (111, NULL, NULL, 'B23008010', 'Numeric', 'One-parent families, father in labor force, with young children (under 6 years of age)', '', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (112, NULL, NULL, '"us.census.acs".B23008003', 'Numeric', 'Two-parent families with young children (under 6 years of age)', '', 0, 'sum', 1, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (113, NULL, NULL, '"us.census.acs".B23008004', 'Numeric', 'Two-parent families, both parents in labor force with young children (under 6 years of age)', '', 0, 'sum', 1, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (114, NULL, NULL, '"us.census.acs".B23008005', 'Numeric', 'Two-parent families, father only in labor force with young children (under 6 years of age)', '', 0, 'sum', 1, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (115, NULL, NULL, '"us.census.acs".B23008006', 'Numeric', 'Two-parent families, mother only in labor force with young children (under 6 years of age)', '', 0, 'sum', 1, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (116, NULL, NULL, '"us.census.acs".B23008007', 'Numeric', 'Two-parent families, neither parent in labor force with young children (under 6 years of age)', '', 0, 'sum', 1, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (117, NULL, NULL, '"us.census.acs".B23008008', 'Numeric', 'One-parent families with young children (under 6 years of age)', '', 0, 'sum', 1, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (118, NULL, NULL, '"us.census.acs".B23008009', 'Numeric', 'One-parent families, father, with young children (under 6 years of age)', '', 0, 'sum', 1, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (121, NULL, NULL, '"us.census.acs".B01001017', 'Numeric', 'Men age 55 to 59', '', 0, 'sum', 1, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (122, NULL, NULL, '"us.census.acs".B01001018', 'Numeric', 'Men age 60 to 61', '', 0, 'sum', 1, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (123, NULL, NULL, '"us.census.acs".B01001019', 'Numeric', 'Men age 62 to 64', '', 0, 'sum', 1, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (124, NULL, NULL, '"us.census.acs".B01001B012', 'Numeric', 'Black Men age 45 to 54', '', 0, 'sum', 1, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (125, NULL, NULL, '"us.census.acs".B01001B013', 'Numeric', 'Black Men age 55 to 64', '', 0, 'sum', 1, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (126, NULL, NULL, '"us.census.acs".B01001I012', 'Numeric', 'Hispanic Men age 45 to 54', '', 0, 'sum', 1, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (127, NULL, NULL, '"us.census.acs".B01001I013', 'Numeric', 'Hispanic Men age 55 to 64', '', 0, 'sum', 1, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (168, NULL, NULL, '"us.bls".year', 'Text', 'Year', '4-character year', 0, NULL, 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (130, NULL, NULL, '"us.census.acs".B01001D013', 'Numeric', 'Asian Men age 55 to 64', '', 0, 'sum', 1, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (131, NULL, NULL, '"us.census.acs".B15001028', 'Numeric', 'Men age 45 to 64 who attained less than a 9th grade education', '', 0, 'sum', 1, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (132, NULL, NULL, '"us.census.acs".B15001029', 'Numeric', 'Men age 45 to 64 who attained between 9th and 12th grade, no diploma', '', 0, 'sum', 1, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (133, NULL, NULL, '"us.census.acs".B15001030', 'Numeric', 'Men age 45 to 64 who completed high school or obtained GED', '', 0, 'sum', 1, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (134, NULL, NULL, '"us.census.acs".B15001031', 'Numeric', 'Men age 45 to 64 who completed some college, no degree', '', 0, 'sum', 1, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (135, NULL, NULL, '"us.census.acs".B15001032', 'Numeric', 'Men age 45 to 64 who obtained an associate''s degree', '', 0, 'sum', 1, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (136, NULL, NULL, '"us.census.acs".B15001033', 'Numeric', 'Men age 45 to 64 who obtained a bachelor''s degree', '', 0, 'sum', 1, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (137, NULL, NULL, '"us.census.tiger".zcta5', 'Geometry', 'US Census Zip Code Tabulation Areas', 'ZCTAs are approximate area representations of U.S. Postal Service (USPS) five-digit ZIP Code service areas that the Census Bureau creates using whole blocks to present statistical data from censuses and surveys. The Census Bureau defines ZCTAs by allocating each block that contains addresses to a single ZCTA, usually to the ZCTA that reflects the most frequently occurring ZIP Code for the addresses within that tabulation block. Blocks that do not contain addresses but are completely surrounded by a single ZCTA (enclaves) are assigned to the surrounding ZCTA; those surrounded by multiple ZCTAs will be added to a single ZCTA based on limited buffering performed between multiple ZCTAs. The Census Bureau identifies five-digit ZCTAs using a five-character numeric code that represents the most frequently occurring USPS ZIP Code within that ZCTA, and this code may contain leading zeros.
There are significant changes to the 2010 ZCTA delineation from that used in 2000. Coverage was extended to include the Island Areas for 2010 so that the United States, Puerto Rico, and the Island Areas have ZCTAs. Unlike 2000, when areas that could not be assigned to a ZCTA were given a generic code ending in \u201cXX\u201d (land area) or \u201cHH\u201d (water area), for 2010 there is no universal coverage by ZCTAs, and only legitimate five-digit areas are defined. The 2010 ZCTAs will better represent the actual Zip Code service areas because the Census Bureau initiated a process before creation of 2010 blocks to add block boundaries that split polygons with large numbers of addresses using different Zip Codes.
Data users should not use ZCTAs to identify the official USPS ZIP Code for mail delivery. The USPS makes periodic changes to ZIP Codes to support more efficient mail delivery. The ZCTAs process used primarily residential addresses and was biased towards Zip Codes used for city-style mail delivery, thus there may be Zip Codes that are primarily nonresidential or boxes only that may not have a corresponding ZCTA.', 6, NULL, 1, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (138, NULL, NULL, '"us.census.tiger".block', 'Geometry', 'US Census Blocks', 'Census blocks are numbered uniquely with a four-digit census block number from 0000 to 9999 within census tract, which nest within state and county. The first digit of the census block number identifies the block group. Block numbers beginning with a zero (in Block Group 0) are only associated with water-only areas.', 3, NULL, 1, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (139, NULL, NULL, '"us.census.tiger".census_tract_geoid', 'Text', 'US Census Tract Geoids', '', 0, NULL, 1, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (140, NULL, NULL, '"us.census.tiger".county_geoid', 'Text', 'US County Geoids', '', 0, NULL, 1, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (141, NULL, NULL, '"us.census.tiger".congressional_district_geoid', 'Text', 'US Congressional District Geoids', '', 0, NULL, 1, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (142, NULL, NULL, '"us.census.tiger".block_geoid', 'Text', 'US Census Block Geoids', NULL, 0, NULL, 1, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (143, NULL, NULL, '"us.census.tiger".zcta5_geoid', 'Text', 'US Census Zip Code Tabulation Area Geoids', '', 0, NULL, 1, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (144, NULL, NULL, '"us.census.tiger".puma_geoid', 'Text', 'US Census Public Use Microdata Area Geoids', '', 0, NULL, 1, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (145, NULL, NULL, '"us.census.tiger".state_geoid', 'Text', 'US State Geoids', '', 0, NULL, 1, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (146, NULL, NULL, '"us.census.tiger".block_group_geoid', 'Text', 'US Census Block Group Geoids', NULL, 0, NULL, 1, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (147, NULL, NULL, '"us.census.lodes".jobs_hispanic', 'Integer', 'Jobs held by workers who are Hispanic or Latino', 'Number of jobs for workers with Ethnicity: Hispanic or Latino', 1, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (148, NULL, NULL, '"us.census.lodes".jobs_less_than_high_school', 'Integer', 'Jobs held by workers who did not complete high school', 'Number of jobs for workers with Educational Attainment: Less than high school', 4, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (149, NULL, NULL, '"us.census.lodes".jobs_high_school', 'Integer', 'Jobs held by workers who completed high school', 'Number of jobs for workers with Educational Attainment: High school or equivalent, no college', 4, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (150, NULL, NULL, '"us.census.lodes".jobs_some_college', 'Integer', 'Jobs held by workers who completed some college or Associate degree', 'Number of jobs for workers with Educational Attainment: Some college or Associate degree', 4, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (151, NULL, NULL, '"us.census.lodes".jobs_bachelors_or_advanced', 'Integer', 'Jobs held by workers who obtained a Bachelor''s degree or advanced degree', 'Number of jobs for workers with Educational Attainment: Bachelor''s degree or advanced degree', 4, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (152, NULL, NULL, '"us.census.lodes".jobs_male', 'Integer', 'Jobs held by men', 'Number of jobs for male workers', 2, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (153, NULL, NULL, '"us.census.lodes".jobs_female', 'Integer', 'Jobs held by women', 'Number of jobs for female workers', 2, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (154, NULL, NULL, '"us.census.lodes".jobs_firm_age_0_1_years', 'Integer', 'Jobs at firms aged 0-1 Years', 'Number of jobs for workers at firms with Firm Age: 0-1 Years', 1, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (155, NULL, NULL, '"us.census.lodes".jobs_firm_age_2_3_years', 'Integer', 'Jobs at firms aged 2-3 Years', 'Number of jobs for workers at firms with Firm Age: 2-3 Years', 1, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (156, NULL, NULL, '"us.census.lodes".jobs_firm_age_4_5_years', 'Integer', 'Jobs at firms aged 4-5 Years', 'Number of jobs for workers at firms with Firm Age: 4-5 Years', 1, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (157, NULL, NULL, '"us.census.lodes".jobs_firm_age_6_10_years', 'Integer', 'Jobs at firms aged 6-10 years', 'Number of jobs for workers at firms with Firm Age: 6-10 Years', 1, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (158, NULL, NULL, '"us.census.lodes".jobs_firm_age_11_more_years', 'Integer', 'Jobs at firms aged 11 Years', 'Number of jobs for workers at firms with Firm Age: 11 Years', 1, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (159, NULL, NULL, '"us.census.lodes".jobs_firm_age_0_19_employees', 'Integer', 'Jobs at firms with 0-19 Employees', 'Number of jobs for workers at firms with Firm Size: 0-19 Employees', 1, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (160, NULL, NULL, '"us.census.lodes".jobs_firm_age_20_49_employees', 'Integer', 'Jobs at firms with 20-49 Employees', 'Number of jobs for workers at firms with Firm Size: 20-49 Employees', 1, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (161, NULL, NULL, '"us.census.lodes".jobs_firm_age_50_249_employees', 'Integer', 'Jobs at firms with 0-249 Employees', 'Number of jobs for workers at firms with Firm Size: 50-249 Employees', 1, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (162, NULL, NULL, '"us.census.lodes".jobs_firm_age_250_499_employees', 'Integer', 'Jobs at firms with 250-499 Employees', 'Number of jobs for workers at firms with Firm Size: 250-499 Employees', 1, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (163, NULL, NULL, '"us.census.lodes".createdate', 'Date', 'Date on which data was created, formatted as YYYYMMDD ', NULL, 0, NULL, 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (164, NULL, NULL, '"us.bls".industry_title', 'Text', 'NAICS Industry Title', 'Title of NAICS industry', 0, NULL, 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (165, NULL, NULL, '"us.bls".own_code', 'Text', 'Ownership Code', '1-character ownership code: http://www.bls.gov/cew/doc/titles/ownership/ownership_titles.htm', 0, NULL, 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (166, NULL, NULL, '"us.bls".agglvl_code', 'Text', 'Aggregation Level Code', '2-character aggregation level code: http://www.bls.gov/cew/doc/titles/agglevel/agglevel_titles.htm', 0, NULL, 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (167, NULL, NULL, '"us.bls".size_code', 'Text', 'Size code', '1-character size code: http://www.bls.gov/cew/doc/titles/size/size_titles.htm', 0, NULL, 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (169, NULL, NULL, '"us.bls".qtr', 'Text', 'Quarter', '1-character quarter (always A for annual)', 0, NULL, 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (170, NULL, NULL, '"us.bls".disclosure_code', 'Text', 'Disclosure code', '1-character disclosure code (either '' ''(blank)), or ''N'' not disclosed)', 0, NULL, 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (171, NULL, NULL, '"us.bls".qtrly_estabs', 'Numeric', 'Establishment count', 'Count of establishments for a given quarter', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (172, NULL, NULL, '"us.bls".month1_emplvl', 'Numeric', 'First month employment', 'Employment level for the first month of a given quarter', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (173, NULL, NULL, '"us.bls".month2_emplvl', 'Numeric', 'Second month employment', 'Employment level for the second month of a given quarter', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (174, NULL, NULL, '"us.bls".month3_emplvl', 'Numeric', 'Third month employment', 'Employment level for the third month of a given quarter', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (175, NULL, NULL, '"us.bls".total_qtrly_wages', 'Numeric', 'Total wages', 'Total wages for a given quarter', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (176, NULL, NULL, '"us.bls".taxable_qtrly_wages', 'Numeric', 'Taxable wages', 'Taxable wages for a given quarter', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (177, NULL, NULL, '"us.bls".qtrly_contributions', 'Numeric', 'Total contributions', 'Quarterly contributions for a given quarter', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (178, NULL, NULL, '"us.bls".avg_wkly_wage', 'Numeric', 'Average weekly wage', 'Average weekly wage for a given quarter', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (179, NULL, NULL, '"us.bls".lq_disclosure_code', 'Text', 'Location quotient disclosure code', '1-character location-quotient disclosure code (either '' ''(blank)), or ''N'' not disclosed', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (180, NULL, NULL, '"us.bls".lq_qtrly_estabs', 'Numeric', 'Location quotient', 'Location quotient of the quarterly establishment count relative to the U.S. (Rounded to hundredths place)', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (181, NULL, NULL, '"us.bls".lq_month1_emplvl', 'Numeric', 'Location quotient first month', 'Location quotient of the employment level for the first month of a given quarter relative to the U.S. (Rounded to hundredths place)),', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (182, NULL, NULL, '"us.bls".lq_month2_emplvl', 'Numeric', 'Location quotient second month', 'Location quotient of the employment level for the second month of a given quarter relative to the U.S. (Rounded to hundredths place)),', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (183, NULL, NULL, '"us.bls".lq_month3_emplvl', 'Numeric', 'Location quotient third month', 'Location quotient of the employment level for the third month of a given quarter relative to the U.S. (Rounded to hundredths place)),', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (184, NULL, NULL, '"us.bls".lq_total_qtrly_wages', 'Numeric', 'Location quotient quarterly', 'Location quotient of the total wages for a given quarter relative to the U.S. (Rounded to hundredths place)', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (185, NULL, NULL, '"us.bls".lq_taxable_qtrly_wages', 'Numeric', 'Quarterly location quotient taxable wages', 'Location quotient of the total taxable wages for a given quarter relative to the U.S. (Rounded to hundredths place)', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (186, NULL, NULL, '"us.bls".lq_qtrly_contributions', 'Numeric', 'Quarterly location quotient contributions', 'Location quotient of the total contributions for a given quarter relative to the U.S. (Rounded to hundredths place)', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (187, NULL, NULL, '"us.bls".lq_avg_wkly_wage', 'Numeric', 'Quarterly location quotient weekly wage', 'Location quotient of the average weekly wage for a given quarter relative to the U.S. (Rounded to hundredths place)', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (188, NULL, NULL, '"us.bls".oty_disclosure_code', 'Text', 'Over-the-year Disclosure code', '1-character over-the-year disclosure code (either '' ''(blank)), or ''N'' not disclosed)', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (189, NULL, NULL, '"us.bls".oty_qtrly_estabs_chg', 'Numeric', 'Over-the-year change in establishment count', 'Over-the-year change in the count of establishments for a given quarter', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (190, NULL, NULL, '"us.bls".oty_qtrly_estabs_pct_chg', 'Numeric', 'Over-the-year percent change in establishment count', 'Over-the-year percent change in the count of establishments for a given quarter (Rounded to the tenths place)', 0, NULL, 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (191, NULL, NULL, '"us.bls".oty_month1_emplvl_chg', 'Numeric', 'Over-the-year change in first month employment level', 'Over-the-year change in the first month''s employment level of a given quarter', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (192, NULL, NULL, '"us.bls".oty_month1_emplvl_pct_chg', 'Numeric', 'Over-the-year percent change in first month employment level', 'Over-the-year percent change in the first month''s employment level of a given quarter (Rounded to the tenths place)),', 0, NULL, 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (193, NULL, NULL, '"us.bls".oty_month2_emplvl_chg', 'Numeric', 'Over-the-year change in second month employment level', 'Over-the-year change in the second month''s employment level of a given quarter', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (194, NULL, NULL, '"us.bls".oty_month2_emplvl_pct_chg', 'Numeric', 'Over-the-year percent change in second month employment level', 'Over-the-year percent change in the second month''s employment level of a given quarter (Rounded to the tenths place)', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (195, NULL, NULL, '"us.bls".oty_month3_emplvl_chg', 'Numeric', 'Over-the-year change in third month employment level', 'Over-the-year change in the third month''s employment level of a given quarter', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (196, NULL, NULL, '"us.bls".oty_month3_emplvl_pct_chg', 'Numeric', 'Over-the-year percent change in third month employment level', 'Over-the-year percent change in the third month''s employment level of a given quarter (Rounded to the tenths place)', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (197, NULL, NULL, '"us.bls".oty_total_qtrly_wages_chg', 'Numeric', 'Over-the-year change in total quarterly wages', 'Over-the-year change in total quarterly wages for a given quarter', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (198, NULL, NULL, '"us.bls".oty_total_qtrly_wages_pct_chg', 'Numeric', 'Over-the-year percent change in total quarterly wages', 'Over-the-year percent change in total quarterly wages for a given quarter (Rounded to the tenths place)', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (199, NULL, NULL, '"us.bls".oty_taxable_qtrly_wages_chg', 'Numeric', 'Over-the-year change in taxable quarterly wages', 'Over-the-year change in taxable quarterly wages for a given quarter', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (200, NULL, NULL, '"us.bls".oty_taxable_qtrly_wages_pct_chg', 'Numeric', 'Over-the-year percent change in taxable quarterly wages', 'Over-the-year percent change in taxable quarterly wages for a given quarter (Rounded to the tenths place)', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (201, NULL, NULL, '"us.bls".oty_qtrly_contributions_chg', 'Numeric', 'Over-the-year change in quarterly contributions', 'Over-the-year change in quarterly contributions for a given quarter', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (202, NULL, NULL, '"us.bls".oty_qtrly_contributions_pct_chg', 'Numeric', 'Over-the-year percent change in quarterly contributions', 'Over-the-year percent change in quarterly contributions for a given quarter (Rounded to the tenths place)', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (203, NULL, NULL, '"us.bls".oty_avg_wkly_wage_chg', 'Numeric', 'Over-the-year change in average weekly wage', 'Over-the-year change in average weekly wage for a given quarter', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (204, NULL, NULL, '"us.bls".oty_avg_wkly_wage_pct_chg', 'Numeric', 'Over-the-year percent change in average weekly wage', 'Over-the-year percent change in average weekly wage for a given quarter (Rounded to the tenths place)', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (205, NULL, NULL, '"us.bls".total_all_industries_avg_wkly_wage', 'Numeric', 'Average weekly wage for Total, all industries', 'Average weekly wage for a given quarter for Total, all industries', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (206, NULL, NULL, '"us.bls".total_all_industries_qtrly_estabs', 'Numeric', 'Establishment count for Total, all industries', 'Count of establishments for a given quarter for Total, all industries', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (207, NULL, NULL, '"us.bls".total_all_industries_month3_emplvl', 'Numeric', 'Third month employment for Total, all industries', 'Employment level for the third month of a given quarter for Total, all industries', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (208, NULL, NULL, '"us.bls".total_all_industries_lq_avg_wkly_wage', 'Numeric', 'Quarterly location quotient weekly wage for Total, all industries', 'Location quotient of the average weekly wage for a given quarter relative to the U.S. (Rounded to hundredths place) for Total, all industries', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (209, NULL, NULL, '"us.bls".total_all_industries_lq_qtrly_estabs', 'Numeric', 'Location quotient for Total, all industries', 'Location quotient of the quarterly establishment count relative to the U.S. (Rounded to hundredths place) for Total, all industries', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (210, NULL, NULL, '"us.bls".total_all_industries_lq_month3_emplvl', 'Numeric', 'Location quotient third month for Total, all industries', 'Location quotient of the employment level for the third month of a given quarter relative to the U.S. (Rounded to hundredths place)), for Total, all industries', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (211, NULL, NULL, '"us.bls".natural_resources_and_mining_avg_wkly_wage', 'Numeric', 'Average weekly wage for Natural resources and mining', 'Average weekly wage for a given quarter for Natural resources and mining', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (212, NULL, NULL, '"us.bls".natural_resources_and_mining_qtrly_estabs', 'Numeric', 'Establishment count for Natural resources and mining', 'Count of establishments for a given quarter for Natural resources and mining', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (213, NULL, NULL, '"us.bls".natural_resources_and_mining_month3_emplvl', 'Numeric', 'Third month employment for Natural resources and mining', 'Employment level for the third month of a given quarter for Natural resources and mining', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (214, NULL, NULL, '"us.bls".natural_resources_and_mining_lq_avg_wkly_wage', 'Numeric', 'Quarterly location quotient weekly wage for Natural resources and mining', 'Location quotient of the average weekly wage for a given quarter relative to the U.S. (Rounded to hundredths place) for Natural resources and mining', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (215, NULL, NULL, '"us.bls".natural_resources_and_mining_lq_qtrly_estabs', 'Numeric', 'Location quotient for Natural resources and mining', 'Location quotient of the quarterly establishment count relative to the U.S. (Rounded to hundredths place) for Natural resources and mining', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (216, NULL, NULL, '"us.bls".natural_resources_and_mining_lq_month3_emplvl', 'Numeric', 'Location quotient third month for Natural resources and mining', 'Location quotient of the employment level for the third month of a given quarter relative to the U.S. (Rounded to hundredths place)), for Natural resources and mining', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (217, NULL, NULL, '"us.bls".construction_avg_wkly_wage', 'Numeric', 'Average weekly wage for Construction', 'Average weekly wage for a given quarter for Construction', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (218, NULL, NULL, '"us.bls".construction_qtrly_estabs', 'Numeric', 'Establishment count for Construction', 'Count of establishments for a given quarter for Construction', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (219, NULL, NULL, '"us.bls".construction_month3_emplvl', 'Numeric', 'Third month employment for Construction', 'Employment level for the third month of a given quarter for Construction', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (220, NULL, NULL, '"us.bls".construction_lq_avg_wkly_wage', 'Numeric', 'Quarterly location quotient weekly wage for Construction', 'Location quotient of the average weekly wage for a given quarter relative to the U.S. (Rounded to hundredths place) for Construction', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (221, NULL, NULL, '"us.bls".construction_lq_qtrly_estabs', 'Numeric', 'Location quotient for Construction', 'Location quotient of the quarterly establishment count relative to the U.S. (Rounded to hundredths place) for Construction', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (222, NULL, NULL, '"us.bls".construction_lq_month3_emplvl', 'Numeric', 'Location quotient third month for Construction', 'Location quotient of the employment level for the third month of a given quarter relative to the U.S. (Rounded to hundredths place)), for Construction', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (223, NULL, NULL, '"us.bls".manufacturing_avg_wkly_wage', 'Numeric', 'Average weekly wage for Manufacturing', 'Average weekly wage for a given quarter for Manufacturing', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (224, NULL, NULL, '"us.bls".manufacturing_qtrly_estabs', 'Numeric', 'Establishment count for Manufacturing', 'Count of establishments for a given quarter for Manufacturing', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (225, NULL, NULL, '"us.bls".manufacturing_month3_emplvl', 'Numeric', 'Third month employment for Manufacturing', 'Employment level for the third month of a given quarter for Manufacturing', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (226, NULL, NULL, '"us.bls".manufacturing_lq_avg_wkly_wage', 'Numeric', 'Quarterly location quotient weekly wage for Manufacturing', 'Location quotient of the average weekly wage for a given quarter relative to the U.S. (Rounded to hundredths place) for Manufacturing', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (227, NULL, NULL, '"us.bls".manufacturing_lq_qtrly_estabs', 'Numeric', 'Location quotient for Manufacturing', 'Location quotient of the quarterly establishment count relative to the U.S. (Rounded to hundredths place) for Manufacturing', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (228, NULL, NULL, '"us.bls".manufacturing_lq_month3_emplvl', 'Numeric', 'Location quotient third month for Manufacturing', 'Location quotient of the employment level for the third month of a given quarter relative to the U.S. (Rounded to hundredths place)), for Manufacturing', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (229, NULL, NULL, '"us.bls".trade_transportation_and_utilities_avg_wkly_wage', 'Numeric', 'Average weekly wage for Trade, transportation, and utilities', 'Average weekly wage for a given quarter for Trade, transportation, and utilities', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (230, NULL, NULL, '"us.bls".trade_transportation_and_utilities_qtrly_estabs', 'Numeric', 'Establishment count for Trade, transportation, and utilities', 'Count of establishments for a given quarter for Trade, transportation, and utilities', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (259, NULL, NULL, '"us.bls".leisure_and_hospitality_avg_wkly_wage', 'Numeric', 'Average weekly wage for Leisure and hospitality', 'Average weekly wage for a given quarter for Leisure and hospitality', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (231, NULL, NULL, '"us.bls".trade_transportation_and_utilities_month3_emplvl', 'Numeric', 'Third month employment for Trade, transportation, and utilities', 'Employment level for the third month of a given quarter for Trade, transportation, and utilities', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (232, NULL, NULL, '"us.bls".trade_transportation_and_utilities_lq_avg_wkly_wage', 'Numeric', 'Quarterly location quotient weekly wage for Trade, transportation, and utilities', 'Location quotient of the average weekly wage for a given quarter relative to the U.S. (Rounded to hundredths place) for Trade, transportation, and utilities', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (233, NULL, NULL, '"us.bls".trade_transportation_and_utilities_lq_qtrly_estabs', 'Numeric', 'Location quotient for Trade, transportation, and utilities', 'Location quotient of the quarterly establishment count relative to the U.S. (Rounded to hundredths place) for Trade, transportation, and utilities', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (234, NULL, NULL, '"us.bls".trade_transportation_and_utilities_lq_month3_emplvl', 'Numeric', 'Location quotient third month for Trade, transportation, and utilities', 'Location quotient of the employment level for the third month of a given quarter relative to the U.S. (Rounded to hundredths place)), for Trade, transportation, and utilities', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (235, NULL, NULL, '"us.bls".information_avg_wkly_wage', 'Numeric', 'Average weekly wage for Information', 'Average weekly wage for a given quarter for Information', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (236, NULL, NULL, '"us.bls".information_qtrly_estabs', 'Numeric', 'Establishment count for Information', 'Count of establishments for a given quarter for Information', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (237, NULL, NULL, '"us.bls".information_month3_emplvl', 'Numeric', 'Third month employment for Information', 'Employment level for the third month of a given quarter for Information', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (238, NULL, NULL, '"us.bls".information_lq_avg_wkly_wage', 'Numeric', 'Quarterly location quotient weekly wage for Information', 'Location quotient of the average weekly wage for a given quarter relative to the U.S. (Rounded to hundredths place) for Information', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (239, NULL, NULL, '"us.bls".information_lq_qtrly_estabs', 'Numeric', 'Location quotient for Information', 'Location quotient of the quarterly establishment count relative to the U.S. (Rounded to hundredths place) for Information', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (240, NULL, NULL, '"us.bls".information_lq_month3_emplvl', 'Numeric', 'Location quotient third month for Information', 'Location quotient of the employment level for the third month of a given quarter relative to the U.S. (Rounded to hundredths place)), for Information', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (241, NULL, NULL, '"us.bls".financial_activities_avg_wkly_wage', 'Numeric', 'Average weekly wage for Financial activities', 'Average weekly wage for a given quarter for Financial activities', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (242, NULL, NULL, '"us.bls".financial_activities_qtrly_estabs', 'Numeric', 'Establishment count for Financial activities', 'Count of establishments for a given quarter for Financial activities', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (243, NULL, NULL, '"us.bls".financial_activities_month3_emplvl', 'Numeric', 'Third month employment for Financial activities', 'Employment level for the third month of a given quarter for Financial activities', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (244, NULL, NULL, '"us.bls".financial_activities_lq_avg_wkly_wage', 'Numeric', 'Quarterly location quotient weekly wage for Financial activities', 'Location quotient of the average weekly wage for a given quarter relative to the U.S. (Rounded to hundredths place) for Financial activities', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (245, NULL, NULL, '"us.bls".financial_activities_lq_qtrly_estabs', 'Numeric', 'Location quotient for Financial activities', 'Location quotient of the quarterly establishment count relative to the U.S. (Rounded to hundredths place) for Financial activities', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (246, NULL, NULL, '"us.bls".financial_activities_lq_month3_emplvl', 'Numeric', 'Location quotient third month for Financial activities', 'Location quotient of the employment level for the third month of a given quarter relative to the U.S. (Rounded to hundredths place)), for Financial activities', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (247, NULL, NULL, '"us.bls".professional_and_business_services_avg_wkly_wage', 'Numeric', 'Average weekly wage for Professional and business services', 'Average weekly wage for a given quarter for Professional and business services', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (248, NULL, NULL, '"us.bls".professional_and_business_services_qtrly_estabs', 'Numeric', 'Establishment count for Professional and business services', 'Count of establishments for a given quarter for Professional and business services', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (249, NULL, NULL, '"us.bls".professional_and_business_services_month3_emplvl', 'Numeric', 'Third month employment for Professional and business services', 'Employment level for the third month of a given quarter for Professional and business services', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (250, NULL, NULL, '"us.bls".professional_and_business_services_lq_avg_wkly_wage', 'Numeric', 'Quarterly location quotient weekly wage for Professional and business services', 'Location quotient of the average weekly wage for a given quarter relative to the U.S. (Rounded to hundredths place) for Professional and business services', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (251, NULL, NULL, '"us.bls".professional_and_business_services_lq_qtrly_estabs', 'Numeric', 'Location quotient for Professional and business services', 'Location quotient of the quarterly establishment count relative to the U.S. (Rounded to hundredths place) for Professional and business services', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (252, NULL, NULL, '"us.bls".professional_and_business_services_lq_month3_emplvl', 'Numeric', 'Location quotient third month for Professional and business services', 'Location quotient of the employment level for the third month of a given quarter relative to the U.S. (Rounded to hundredths place)), for Professional and business services', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (253, NULL, NULL, '"us.bls".education_and_health_services_avg_wkly_wage', 'Numeric', 'Average weekly wage for Education and health services', 'Average weekly wage for a given quarter for Education and health services', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (254, NULL, NULL, '"us.bls".education_and_health_services_qtrly_estabs', 'Numeric', 'Establishment count for Education and health services', 'Count of establishments for a given quarter for Education and health services', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (255, NULL, NULL, '"us.bls".education_and_health_services_month3_emplvl', 'Numeric', 'Third month employment for Education and health services', 'Employment level for the third month of a given quarter for Education and health services', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (256, NULL, NULL, '"us.bls".education_and_health_services_lq_avg_wkly_wage', 'Numeric', 'Quarterly location quotient weekly wage for Education and health services', 'Location quotient of the average weekly wage for a given quarter relative to the U.S. (Rounded to hundredths place) for Education and health services', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (257, NULL, NULL, '"us.bls".education_and_health_services_lq_qtrly_estabs', 'Numeric', 'Location quotient for Education and health services', 'Location quotient of the quarterly establishment count relative to the U.S. (Rounded to hundredths place) for Education and health services', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (258, NULL, NULL, '"us.bls".education_and_health_services_lq_month3_emplvl', 'Numeric', 'Location quotient third month for Education and health services', 'Location quotient of the employment level for the third month of a given quarter relative to the U.S. (Rounded to hundredths place)), for Education and health services', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (260, NULL, NULL, '"us.bls".leisure_and_hospitality_qtrly_estabs', 'Numeric', 'Establishment count for Leisure and hospitality', 'Count of establishments for a given quarter for Leisure and hospitality', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (261, NULL, NULL, '"us.bls".leisure_and_hospitality_month3_emplvl', 'Numeric', 'Third month employment for Leisure and hospitality', 'Employment level for the third month of a given quarter for Leisure and hospitality', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (262, NULL, NULL, '"us.bls".leisure_and_hospitality_lq_avg_wkly_wage', 'Numeric', 'Quarterly location quotient weekly wage for Leisure and hospitality', 'Location quotient of the average weekly wage for a given quarter relative to the U.S. (Rounded to hundredths place) for Leisure and hospitality', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (263, NULL, NULL, '"us.bls".leisure_and_hospitality_lq_qtrly_estabs', 'Numeric', 'Location quotient for Leisure and hospitality', 'Location quotient of the quarterly establishment count relative to the U.S. (Rounded to hundredths place) for Leisure and hospitality', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (264, NULL, NULL, '"us.bls".leisure_and_hospitality_lq_month3_emplvl', 'Numeric', 'Location quotient third month for Leisure and hospitality', 'Location quotient of the employment level for the third month of a given quarter relative to the U.S. (Rounded to hundredths place)), for Leisure and hospitality', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (265, NULL, NULL, '"us.bls".other_services_avg_wkly_wage', 'Numeric', 'Average weekly wage for Other services', 'Average weekly wage for a given quarter for Other services', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (266, NULL, NULL, '"us.bls".other_services_qtrly_estabs', 'Numeric', 'Establishment count for Other services', 'Count of establishments for a given quarter for Other services', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (267, NULL, NULL, '"us.bls".other_services_month3_emplvl', 'Numeric', 'Third month employment for Other services', 'Employment level for the third month of a given quarter for Other services', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (268, NULL, NULL, '"us.bls".other_services_lq_avg_wkly_wage', 'Numeric', 'Quarterly location quotient weekly wage for Other services', 'Location quotient of the average weekly wage for a given quarter relative to the U.S. (Rounded to hundredths place) for Other services', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (269, NULL, NULL, '"us.bls".other_services_lq_qtrly_estabs', 'Numeric', 'Location quotient for Other services', 'Location quotient of the quarterly establishment count relative to the U.S. (Rounded to hundredths place) for Other services', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (270, NULL, NULL, '"us.bls".other_services_lq_month3_emplvl', 'Numeric', 'Location quotient third month for Other services', 'Location quotient of the employment level for the third month of a given quarter relative to the U.S. (Rounded to hundredths place)), for Other services', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (271, NULL, NULL, '"us.bls".public_administration_avg_wkly_wage', 'Numeric', 'Average weekly wage for Public administration', 'Average weekly wage for a given quarter for Public administration', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (272, NULL, NULL, '"us.bls".public_administration_qtrly_estabs', 'Numeric', 'Establishment count for Public administration', 'Count of establishments for a given quarter for Public administration', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (273, NULL, NULL, '"us.bls".public_administration_month3_emplvl', 'Numeric', 'Third month employment for Public administration', 'Employment level for the third month of a given quarter for Public administration', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (274, NULL, NULL, '"us.bls".public_administration_lq_avg_wkly_wage', 'Numeric', 'Quarterly location quotient weekly wage for Public administration', 'Location quotient of the average weekly wage for a given quarter relative to the U.S. (Rounded to hundredths place) for Public administration', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (275, NULL, NULL, '"us.bls".public_administration_lq_qtrly_estabs', 'Numeric', 'Location quotient for Public administration', 'Location quotient of the quarterly establishment count relative to the U.S. (Rounded to hundredths place) for Public administration', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (276, NULL, NULL, '"us.bls".public_administration_lq_month3_emplvl', 'Numeric', 'Location quotient third month for Public administration', 'Location quotient of the employment level for the third month of a given quarter relative to the U.S. (Rounded to hundredths place)), for Public administration', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (277, NULL, NULL, '"us.bls".unclassified_avg_wkly_wage', 'Numeric', 'Average weekly wage for Unclassified', 'Average weekly wage for a given quarter for Unclassified', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (278, NULL, NULL, '"us.bls".unclassified_qtrly_estabs', 'Numeric', 'Establishment count for Unclassified', 'Count of establishments for a given quarter for Unclassified', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (279, NULL, NULL, '"us.bls".unclassified_month3_emplvl', 'Numeric', 'Third month employment for Unclassified', 'Employment level for the third month of a given quarter for Unclassified', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (280, NULL, NULL, '"us.bls".unclassified_lq_avg_wkly_wage', 'Numeric', 'Quarterly location quotient weekly wage for Unclassified', 'Location quotient of the average weekly wage for a given quarter relative to the U.S. (Rounded to hundredths place) for Unclassified', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (281, NULL, NULL, '"us.bls".unclassified_lq_qtrly_estabs', 'Numeric', 'Location quotient for Unclassified', 'Location quotient of the quarterly establishment count relative to the U.S. (Rounded to hundredths place) for Unclassified', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (282, NULL, NULL, '"us.bls".unclassified_lq_month3_emplvl', 'Numeric', 'Location quotient third month for Unclassified', 'Location quotient of the employment level for the third month of a given quarter relative to the U.S. (Rounded to hundredths place)), for Unclassified', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (283, NULL, NULL, '"us.bls".naics_11_agriculture_forestry_fishing_and_hunting_avg_wkly_wage', 'Numeric', 'Average weekly wage for NAICS 11 Agriculture, forestry, fishing and hunting', 'Average weekly wage for a given quarter for NAICS 11 Agriculture, forestry, fishing and hunting', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (284, NULL, NULL, '"us.bls".naics_11_agriculture_forestry_fishing_and_hunting_qtrly_estabs', 'Numeric', 'Establishment count for NAICS 11 Agriculture, forestry, fishing and hunting', 'Count of establishments for a given quarter for NAICS 11 Agriculture, forestry, fishing and hunting', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (285, NULL, NULL, '"us.bls".naics_11_agriculture_forestry_fishing_and_hunting_month3_emplvl', 'Numeric', 'Third month employment for NAICS 11 Agriculture, forestry, fishing and hunting', 'Employment level for the third month of a given quarter for NAICS 11 Agriculture, forestry, fishing and hunting', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (286, NULL, NULL, '"us.bls".naics_11_agriculture_forestry_fishing_and_hunting_lq_avg_wkly_wage', 'Numeric', 'Quarterly location quotient weekly wage for NAICS 11 Agriculture, forestry, fishing and hunting', 'Location quotient of the average weekly wage for a given quarter relative to the U.S. (Rounded to hundredths place) for NAICS 11 Agriculture, forestry, fishing and hunting', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (287, NULL, NULL, '"us.bls".naics_11_agriculture_forestry_fishing_and_hunting_lq_qtrly_estabs', 'Numeric', 'Location quotient for NAICS 11 Agriculture, forestry, fishing and hunting', 'Location quotient of the quarterly establishment count relative to the U.S. (Rounded to hundredths place) for NAICS 11 Agriculture, forestry, fishing and hunting', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (315, NULL, NULL, '"us.bls".naics_51_information_month3_emplvl', 'Numeric', 'Third month employment for NAICS 51 Information', 'Employment level for the third month of a given quarter for NAICS 51 Information', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (288, NULL, NULL, '"us.bls".naics_11_agriculture_forestry_fishing_and_hunting_lq_month3_emplvl', 'Numeric', 'Location quotient third month for NAICS 11 Agriculture, forestry, fishing and hunting', 'Location quotient of the employment level for the third month of a given quarter relative to the U.S. (Rounded to hundredths place)), for NAICS 11 Agriculture, forestry, fishing and hunting', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (289, NULL, NULL, '"us.bls".naics_21_mining_quarrying_and_oil_and_gas_extraction_avg_wkly_wage', 'Numeric', 'Average weekly wage for NAICS 21 Mining, quarrying, and oil and gas extraction', 'Average weekly wage for a given quarter for NAICS 21 Mining, quarrying, and oil and gas extraction', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (290, NULL, NULL, '"us.bls".naics_21_mining_quarrying_and_oil_and_gas_extraction_qtrly_estabs', 'Numeric', 'Establishment count for NAICS 21 Mining, quarrying, and oil and gas extraction', 'Count of establishments for a given quarter for NAICS 21 Mining, quarrying, and oil and gas extraction', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (291, NULL, NULL, '"us.bls".naics_21_mining_quarrying_and_oil_and_gas_extraction_month3_emplvl', 'Numeric', 'Third month employment for NAICS 21 Mining, quarrying, and oil and gas extraction', 'Employment level for the third month of a given quarter for NAICS 21 Mining, quarrying, and oil and gas extraction', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (292, NULL, NULL, '"us.bls".naics_21_mining_quarrying_and_oil_and_gas_extraction_lq_avg_wkly_wage', 'Numeric', 'Quarterly location quotient weekly wage for NAICS 21 Mining, quarrying, and oil and gas extraction', 'Location quotient of the average weekly wage for a given quarter relative to the U.S. (Rounded to hundredths place) for NAICS 21 Mining, quarrying, and oil and gas extraction', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (293, NULL, NULL, '"us.bls".naics_21_mining_quarrying_and_oil_and_gas_extraction_lq_qtrly_estabs', 'Numeric', 'Location quotient for NAICS 21 Mining, quarrying, and oil and gas extraction', 'Location quotient of the quarterly establishment count relative to the U.S. (Rounded to hundredths place) for NAICS 21 Mining, quarrying, and oil and gas extraction', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (294, NULL, NULL, '"us.bls".naics_21_mining_quarrying_and_oil_and_gas_extraction_lq_month3_emplvl', 'Numeric', 'Location quotient third month for NAICS 21 Mining, quarrying, and oil and gas extraction', 'Location quotient of the employment level for the third month of a given quarter relative to the U.S. (Rounded to hundredths place)), for NAICS 21 Mining, quarrying, and oil and gas extraction', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (295, NULL, NULL, '"us.bls".naics_22_utilities_avg_wkly_wage', 'Numeric', 'Average weekly wage for NAICS 22 Utilities', 'Average weekly wage for a given quarter for NAICS 22 Utilities', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (296, NULL, NULL, '"us.bls".naics_22_utilities_qtrly_estabs', 'Numeric', 'Establishment count for NAICS 22 Utilities', 'Count of establishments for a given quarter for NAICS 22 Utilities', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (297, NULL, NULL, '"us.bls".naics_22_utilities_month3_emplvl', 'Numeric', 'Third month employment for NAICS 22 Utilities', 'Employment level for the third month of a given quarter for NAICS 22 Utilities', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (298, NULL, NULL, '"us.bls".naics_22_utilities_lq_avg_wkly_wage', 'Numeric', 'Quarterly location quotient weekly wage for NAICS 22 Utilities', 'Location quotient of the average weekly wage for a given quarter relative to the U.S. (Rounded to hundredths place) for NAICS 22 Utilities', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (299, NULL, NULL, '"us.bls".naics_22_utilities_lq_qtrly_estabs', 'Numeric', 'Location quotient for NAICS 22 Utilities', 'Location quotient of the quarterly establishment count relative to the U.S. (Rounded to hundredths place) for NAICS 22 Utilities', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (300, NULL, NULL, '"us.bls".naics_22_utilities_lq_month3_emplvl', 'Numeric', 'Location quotient third month for NAICS 22 Utilities', 'Location quotient of the employment level for the third month of a given quarter relative to the U.S. (Rounded to hundredths place)), for NAICS 22 Utilities', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (301, NULL, NULL, '"us.bls".naics_23_construction_avg_wkly_wage', 'Numeric', 'Average weekly wage for NAICS 23 Construction', 'Average weekly wage for a given quarter for NAICS 23 Construction', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (302, NULL, NULL, '"us.bls".naics_23_construction_qtrly_estabs', 'Numeric', 'Establishment count for NAICS 23 Construction', 'Count of establishments for a given quarter for NAICS 23 Construction', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (303, NULL, NULL, '"us.bls".naics_23_construction_month3_emplvl', 'Numeric', 'Third month employment for NAICS 23 Construction', 'Employment level for the third month of a given quarter for NAICS 23 Construction', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (304, NULL, NULL, '"us.bls".naics_23_construction_lq_avg_wkly_wage', 'Numeric', 'Quarterly location quotient weekly wage for NAICS 23 Construction', 'Location quotient of the average weekly wage for a given quarter relative to the U.S. (Rounded to hundredths place) for NAICS 23 Construction', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (305, NULL, NULL, '"us.bls".naics_23_construction_lq_qtrly_estabs', 'Numeric', 'Location quotient for NAICS 23 Construction', 'Location quotient of the quarterly establishment count relative to the U.S. (Rounded to hundredths place) for NAICS 23 Construction', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (306, NULL, NULL, '"us.bls".naics_23_construction_lq_month3_emplvl', 'Numeric', 'Location quotient third month for NAICS 23 Construction', 'Location quotient of the employment level for the third month of a given quarter relative to the U.S. (Rounded to hundredths place)), for NAICS 23 Construction', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (307, NULL, NULL, '"us.bls".naics_42_wholesale_trade_avg_wkly_wage', 'Numeric', 'Average weekly wage for NAICS 42 Wholesale trade', 'Average weekly wage for a given quarter for NAICS 42 Wholesale trade', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (308, NULL, NULL, '"us.bls".naics_42_wholesale_trade_qtrly_estabs', 'Numeric', 'Establishment count for NAICS 42 Wholesale trade', 'Count of establishments for a given quarter for NAICS 42 Wholesale trade', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (309, NULL, NULL, '"us.bls".naics_42_wholesale_trade_month3_emplvl', 'Numeric', 'Third month employment for NAICS 42 Wholesale trade', 'Employment level for the third month of a given quarter for NAICS 42 Wholesale trade', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (310, NULL, NULL, '"us.bls".naics_42_wholesale_trade_lq_avg_wkly_wage', 'Numeric', 'Quarterly location quotient weekly wage for NAICS 42 Wholesale trade', 'Location quotient of the average weekly wage for a given quarter relative to the U.S. (Rounded to hundredths place) for NAICS 42 Wholesale trade', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (311, NULL, NULL, '"us.bls".naics_42_wholesale_trade_lq_qtrly_estabs', 'Numeric', 'Location quotient for NAICS 42 Wholesale trade', 'Location quotient of the quarterly establishment count relative to the U.S. (Rounded to hundredths place) for NAICS 42 Wholesale trade', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (312, NULL, NULL, '"us.bls".naics_42_wholesale_trade_lq_month3_emplvl', 'Numeric', 'Location quotient third month for NAICS 42 Wholesale trade', 'Location quotient of the employment level for the third month of a given quarter relative to the U.S. (Rounded to hundredths place)), for NAICS 42 Wholesale trade', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (313, NULL, NULL, '"us.bls".naics_51_information_avg_wkly_wage', 'Numeric', 'Average weekly wage for NAICS 51 Information', 'Average weekly wage for a given quarter for NAICS 51 Information', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (314, NULL, NULL, '"us.bls".naics_51_information_qtrly_estabs', 'Numeric', 'Establishment count for NAICS 51 Information', 'Count of establishments for a given quarter for NAICS 51 Information', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (316, NULL, NULL, '"us.bls".naics_51_information_lq_avg_wkly_wage', 'Numeric', 'Quarterly location quotient weekly wage for NAICS 51 Information', 'Location quotient of the average weekly wage for a given quarter relative to the U.S. (Rounded to hundredths place) for NAICS 51 Information', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (317, NULL, NULL, '"us.bls".naics_51_information_lq_qtrly_estabs', 'Numeric', 'Location quotient for NAICS 51 Information', 'Location quotient of the quarterly establishment count relative to the U.S. (Rounded to hundredths place) for NAICS 51 Information', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (538, NULL, NULL, '"us.bls".month3_emplvl_naics51', 'Numeric', 'Third month employment for NAICS 51 Information', 'Employment level for the third month of a given quarter for NAICS 51 Information', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (318, NULL, NULL, '"us.bls".naics_51_information_lq_month3_emplvl', 'Numeric', 'Location quotient third month for NAICS 51 Information', 'Location quotient of the employment level for the third month of a given quarter relative to the U.S. (Rounded to hundredths place)), for NAICS 51 Information', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (319, NULL, NULL, '"us.bls".naics_52_finance_and_insurance_avg_wkly_wage', 'Numeric', 'Average weekly wage for NAICS 52 Finance and insurance', 'Average weekly wage for a given quarter for NAICS 52 Finance and insurance', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (320, NULL, NULL, '"us.bls".naics_52_finance_and_insurance_qtrly_estabs', 'Numeric', 'Establishment count for NAICS 52 Finance and insurance', 'Count of establishments for a given quarter for NAICS 52 Finance and insurance', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (321, NULL, NULL, '"us.bls".naics_52_finance_and_insurance_month3_emplvl', 'Numeric', 'Third month employment for NAICS 52 Finance and insurance', 'Employment level for the third month of a given quarter for NAICS 52 Finance and insurance', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (322, NULL, NULL, '"us.bls".naics_52_finance_and_insurance_lq_avg_wkly_wage', 'Numeric', 'Quarterly location quotient weekly wage for NAICS 52 Finance and insurance', 'Location quotient of the average weekly wage for a given quarter relative to the U.S. (Rounded to hundredths place) for NAICS 52 Finance and insurance', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (323, NULL, NULL, '"us.bls".naics_52_finance_and_insurance_lq_qtrly_estabs', 'Numeric', 'Location quotient for NAICS 52 Finance and insurance', 'Location quotient of the quarterly establishment count relative to the U.S. (Rounded to hundredths place) for NAICS 52 Finance and insurance', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (324, NULL, NULL, '"us.bls".naics_52_finance_and_insurance_lq_month3_emplvl', 'Numeric', 'Location quotient third month for NAICS 52 Finance and insurance', 'Location quotient of the employment level for the third month of a given quarter relative to the U.S. (Rounded to hundredths place)), for NAICS 52 Finance and insurance', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (325, NULL, NULL, '"us.bls".naics_53_real_estate_and_rental_and_leasing_avg_wkly_wage', 'Numeric', 'Average weekly wage for NAICS 53 Real estate and rental and leasing', 'Average weekly wage for a given quarter for NAICS 53 Real estate and rental and leasing', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (326, NULL, NULL, '"us.bls".naics_53_real_estate_and_rental_and_leasing_qtrly_estabs', 'Numeric', 'Establishment count for NAICS 53 Real estate and rental and leasing', 'Count of establishments for a given quarter for NAICS 53 Real estate and rental and leasing', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (327, NULL, NULL, '"us.bls".naics_53_real_estate_and_rental_and_leasing_month3_emplvl', 'Numeric', 'Third month employment for NAICS 53 Real estate and rental and leasing', 'Employment level for the third month of a given quarter for NAICS 53 Real estate and rental and leasing', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (328, NULL, NULL, '"us.bls".naics_53_real_estate_and_rental_and_leasing_lq_avg_wkly_wage', 'Numeric', 'Quarterly location quotient weekly wage for NAICS 53 Real estate and rental and leasing', 'Location quotient of the average weekly wage for a given quarter relative to the U.S. (Rounded to hundredths place) for NAICS 53 Real estate and rental and leasing', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (329, NULL, NULL, '"us.bls".naics_53_real_estate_and_rental_and_leasing_lq_qtrly_estabs', 'Numeric', 'Location quotient for NAICS 53 Real estate and rental and leasing', 'Location quotient of the quarterly establishment count relative to the U.S. (Rounded to hundredths place) for NAICS 53 Real estate and rental and leasing', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (330, NULL, NULL, '"us.bls".naics_53_real_estate_and_rental_and_leasing_lq_month3_emplvl', 'Numeric', 'Location quotient third month for NAICS 53 Real estate and rental and leasing', 'Location quotient of the employment level for the third month of a given quarter relative to the U.S. (Rounded to hundredths place)), for NAICS 53 Real estate and rental and leasing', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (331, NULL, NULL, '"us.bls".naics_54_professional_and_technical_services_avg_wkly_wage', 'Numeric', 'Average weekly wage for NAICS 54 Professional and technical services', 'Average weekly wage for a given quarter for NAICS 54 Professional and technical services', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (332, NULL, NULL, '"us.bls".naics_54_professional_and_technical_services_qtrly_estabs', 'Numeric', 'Establishment count for NAICS 54 Professional and technical services', 'Count of establishments for a given quarter for NAICS 54 Professional and technical services', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (333, NULL, NULL, '"us.bls".naics_54_professional_and_technical_services_month3_emplvl', 'Numeric', 'Third month employment for NAICS 54 Professional and technical services', 'Employment level for the third month of a given quarter for NAICS 54 Professional and technical services', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (334, NULL, NULL, '"us.bls".naics_54_professional_and_technical_services_lq_avg_wkly_wage', 'Numeric', 'Quarterly location quotient weekly wage for NAICS 54 Professional and technical services', 'Location quotient of the average weekly wage for a given quarter relative to the U.S. (Rounded to hundredths place) for NAICS 54 Professional and technical services', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (335, NULL, NULL, '"us.bls".naics_54_professional_and_technical_services_lq_qtrly_estabs', 'Numeric', 'Location quotient for NAICS 54 Professional and technical services', 'Location quotient of the quarterly establishment count relative to the U.S. (Rounded to hundredths place) for NAICS 54 Professional and technical services', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (336, NULL, NULL, '"us.bls".naics_54_professional_and_technical_services_lq_month3_emplvl', 'Numeric', 'Location quotient third month for NAICS 54 Professional and technical services', 'Location quotient of the employment level for the third month of a given quarter relative to the U.S. (Rounded to hundredths place)), for NAICS 54 Professional and technical services', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (337, NULL, NULL, '"us.bls".naics_55_management_of_companies_and_enterprises_avg_wkly_wage', 'Numeric', 'Average weekly wage for NAICS 55 Management of companies and enterprises', 'Average weekly wage for a given quarter for NAICS 55 Management of companies and enterprises', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (338, NULL, NULL, '"us.bls".naics_55_management_of_companies_and_enterprises_qtrly_estabs', 'Numeric', 'Establishment count for NAICS 55 Management of companies and enterprises', 'Count of establishments for a given quarter for NAICS 55 Management of companies and enterprises', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (339, NULL, NULL, '"us.bls".naics_55_management_of_companies_and_enterprises_month3_emplvl', 'Numeric', 'Third month employment for NAICS 55 Management of companies and enterprises', 'Employment level for the third month of a given quarter for NAICS 55 Management of companies and enterprises', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (415, NULL, NULL, '"us.bls".avg_wkly_wage_naics1011', 'Numeric', 'Average weekly wage for Natural resources and mining', 'Average weekly wage for a given quarter for Natural resources and mining', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (340, NULL, NULL, '"us.bls".naics_55_management_of_companies_and_enterprises_lq_avg_wkly_wage', 'Numeric', 'Quarterly location quotient weekly wage for NAICS 55 Management of companies and enterprises', 'Location quotient of the average weekly wage for a given quarter relative to the U.S. (Rounded to hundredths place) for NAICS 55 Management of companies and enterprises', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (389, NULL, NULL, '"us.bls".naics_99_unclassified_lq_qtrly_estabs', 'Numeric', 'Location quotient for NAICS 99 Unclassified', 'Location quotient of the quarterly establishment count relative to the U.S. (Rounded to hundredths place) for NAICS 99 Unclassified', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (341, NULL, NULL, '"us.bls".naics_55_management_of_companies_and_enterprises_lq_qtrly_estabs', 'Numeric', 'Location quotient for NAICS 55 Management of companies and enterprises', 'Location quotient of the quarterly establishment count relative to the U.S. (Rounded to hundredths place) for NAICS 55 Management of companies and enterprises', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (342, NULL, NULL, '"us.bls".naics_55_management_of_companies_and_enterprises_lq_month3_emplvl', 'Numeric', 'Location quotient third month for NAICS 55 Management of companies and enterprises', 'Location quotient of the employment level for the third month of a given quarter relative to the U.S. (Rounded to hundredths place)), for NAICS 55 Management of companies and enterprises', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (343, NULL, NULL, '"us.bls".naics_56_administrative_and_waste_services_avg_wkly_wage', 'Numeric', 'Average weekly wage for NAICS 56 Administrative and waste services', 'Average weekly wage for a given quarter for NAICS 56 Administrative and waste services', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (344, NULL, NULL, '"us.bls".naics_56_administrative_and_waste_services_qtrly_estabs', 'Numeric', 'Establishment count for NAICS 56 Administrative and waste services', 'Count of establishments for a given quarter for NAICS 56 Administrative and waste services', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (345, NULL, NULL, '"us.bls".naics_56_administrative_and_waste_services_month3_emplvl', 'Numeric', 'Third month employment for NAICS 56 Administrative and waste services', 'Employment level for the third month of a given quarter for NAICS 56 Administrative and waste services', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (346, NULL, NULL, '"us.bls".naics_56_administrative_and_waste_services_lq_avg_wkly_wage', 'Numeric', 'Quarterly location quotient weekly wage for NAICS 56 Administrative and waste services', 'Location quotient of the average weekly wage for a given quarter relative to the U.S. (Rounded to hundredths place) for NAICS 56 Administrative and waste services', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (347, NULL, NULL, '"us.bls".naics_56_administrative_and_waste_services_lq_qtrly_estabs', 'Numeric', 'Location quotient for NAICS 56 Administrative and waste services', 'Location quotient of the quarterly establishment count relative to the U.S. (Rounded to hundredths place) for NAICS 56 Administrative and waste services', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (348, NULL, NULL, '"us.bls".naics_56_administrative_and_waste_services_lq_month3_emplvl', 'Numeric', 'Location quotient third month for NAICS 56 Administrative and waste services', 'Location quotient of the employment level for the third month of a given quarter relative to the U.S. (Rounded to hundredths place)), for NAICS 56 Administrative and waste services', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (349, NULL, NULL, '"us.bls".naics_61_educational_services_avg_wkly_wage', 'Numeric', 'Average weekly wage for NAICS 61 Educational services', 'Average weekly wage for a given quarter for NAICS 61 Educational services', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (350, NULL, NULL, '"us.bls".naics_61_educational_services_qtrly_estabs', 'Numeric', 'Establishment count for NAICS 61 Educational services', 'Count of establishments for a given quarter for NAICS 61 Educational services', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (351, NULL, NULL, '"us.bls".naics_61_educational_services_month3_emplvl', 'Numeric', 'Third month employment for NAICS 61 Educational services', 'Employment level for the third month of a given quarter for NAICS 61 Educational services', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (352, NULL, NULL, '"us.bls".naics_61_educational_services_lq_avg_wkly_wage', 'Numeric', 'Quarterly location quotient weekly wage for NAICS 61 Educational services', 'Location quotient of the average weekly wage for a given quarter relative to the U.S. (Rounded to hundredths place) for NAICS 61 Educational services', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (353, NULL, NULL, '"us.bls".naics_61_educational_services_lq_qtrly_estabs', 'Numeric', 'Location quotient for NAICS 61 Educational services', 'Location quotient of the quarterly establishment count relative to the U.S. (Rounded to hundredths place) for NAICS 61 Educational services', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (354, NULL, NULL, '"us.bls".naics_61_educational_services_lq_month3_emplvl', 'Numeric', 'Location quotient third month for NAICS 61 Educational services', 'Location quotient of the employment level for the third month of a given quarter relative to the U.S. (Rounded to hundredths place)), for NAICS 61 Educational services', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (355, NULL, NULL, '"us.bls".naics_62_health_care_and_social_assistance_avg_wkly_wage', 'Numeric', 'Average weekly wage for NAICS 62 Health care and social assistance', 'Average weekly wage for a given quarter for NAICS 62 Health care and social assistance', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (356, NULL, NULL, '"us.bls".naics_62_health_care_and_social_assistance_qtrly_estabs', 'Numeric', 'Establishment count for NAICS 62 Health care and social assistance', 'Count of establishments for a given quarter for NAICS 62 Health care and social assistance', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (357, NULL, NULL, '"us.bls".naics_62_health_care_and_social_assistance_month3_emplvl', 'Numeric', 'Third month employment for NAICS 62 Health care and social assistance', 'Employment level for the third month of a given quarter for NAICS 62 Health care and social assistance', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (358, NULL, NULL, '"us.bls".naics_62_health_care_and_social_assistance_lq_avg_wkly_wage', 'Numeric', 'Quarterly location quotient weekly wage for NAICS 62 Health care and social assistance', 'Location quotient of the average weekly wage for a given quarter relative to the U.S. (Rounded to hundredths place) for NAICS 62 Health care and social assistance', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (359, NULL, NULL, '"us.bls".naics_62_health_care_and_social_assistance_lq_qtrly_estabs', 'Numeric', 'Location quotient for NAICS 62 Health care and social assistance', 'Location quotient of the quarterly establishment count relative to the U.S. (Rounded to hundredths place) for NAICS 62 Health care and social assistance', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (360, NULL, NULL, '"us.bls".naics_62_health_care_and_social_assistance_lq_month3_emplvl', 'Numeric', 'Location quotient third month for NAICS 62 Health care and social assistance', 'Location quotient of the employment level for the third month of a given quarter relative to the U.S. (Rounded to hundredths place)), for NAICS 62 Health care and social assistance', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (361, NULL, NULL, '"us.bls".naics_71_arts_entertainment_and_recreation_avg_wkly_wage', 'Numeric', 'Average weekly wage for NAICS 71 Arts, entertainment, and recreation', 'Average weekly wage for a given quarter for NAICS 71 Arts, entertainment, and recreation', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (362, NULL, NULL, '"us.bls".naics_71_arts_entertainment_and_recreation_qtrly_estabs', 'Numeric', 'Establishment count for NAICS 71 Arts, entertainment, and recreation', 'Count of establishments for a given quarter for NAICS 71 Arts, entertainment, and recreation', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (363, NULL, NULL, '"us.bls".naics_71_arts_entertainment_and_recreation_month3_emplvl', 'Numeric', 'Third month employment for NAICS 71 Arts, entertainment, and recreation', 'Employment level for the third month of a given quarter for NAICS 71 Arts, entertainment, and recreation', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (701, NULL, NULL, '"us.census.acs".B01001002_quantile', 'Numeric', 'Quantile:Male Population', 'The number of people within each geography who are male.', 0, 'quantile', 3, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (364, NULL, NULL, '"us.bls".naics_71_arts_entertainment_and_recreation_lq_avg_wkly_wage', 'Numeric', 'Quarterly location quotient weekly wage for NAICS 71 Arts, entertainment, and recreation', 'Location quotient of the average weekly wage for a given quarter relative to the U.S. (Rounded to hundredths place) for NAICS 71 Arts, entertainment, and recreation', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (365, NULL, NULL, '"us.bls".naics_71_arts_entertainment_and_recreation_lq_qtrly_estabs', 'Numeric', 'Location quotient for NAICS 71 Arts, entertainment, and recreation', 'Location quotient of the quarterly establishment count relative to the U.S. (Rounded to hundredths place) for NAICS 71 Arts, entertainment, and recreation', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (366, NULL, NULL, '"us.bls".naics_71_arts_entertainment_and_recreation_lq_month3_emplvl', 'Numeric', 'Location quotient third month for NAICS 71 Arts, entertainment, and recreation', 'Location quotient of the employment level for the third month of a given quarter relative to the U.S. (Rounded to hundredths place)), for NAICS 71 Arts, entertainment, and recreation', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (367, NULL, NULL, '"us.bls".naics_72_accommodation_and_food_services_avg_wkly_wage', 'Numeric', 'Average weekly wage for NAICS 72 Accommodation and food services', 'Average weekly wage for a given quarter for NAICS 72 Accommodation and food services', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (368, NULL, NULL, '"us.bls".naics_72_accommodation_and_food_services_qtrly_estabs', 'Numeric', 'Establishment count for NAICS 72 Accommodation and food services', 'Count of establishments for a given quarter for NAICS 72 Accommodation and food services', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (369, NULL, NULL, '"us.bls".naics_72_accommodation_and_food_services_month3_emplvl', 'Numeric', 'Third month employment for NAICS 72 Accommodation and food services', 'Employment level for the third month of a given quarter for NAICS 72 Accommodation and food services', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (370, NULL, NULL, '"us.bls".naics_72_accommodation_and_food_services_lq_avg_wkly_wage', 'Numeric', 'Quarterly location quotient weekly wage for NAICS 72 Accommodation and food services', 'Location quotient of the average weekly wage for a given quarter relative to the U.S. (Rounded to hundredths place) for NAICS 72 Accommodation and food services', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (371, NULL, NULL, '"us.bls".naics_72_accommodation_and_food_services_lq_qtrly_estabs', 'Numeric', 'Location quotient for NAICS 72 Accommodation and food services', 'Location quotient of the quarterly establishment count relative to the U.S. (Rounded to hundredths place) for NAICS 72 Accommodation and food services', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (372, NULL, NULL, '"us.bls".naics_72_accommodation_and_food_services_lq_month3_emplvl', 'Numeric', 'Location quotient third month for NAICS 72 Accommodation and food services', 'Location quotient of the employment level for the third month of a given quarter relative to the U.S. (Rounded to hundredths place)), for NAICS 72 Accommodation and food services', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (373, NULL, NULL, '"us.bls".naics_81_other_services_except_public_administration_avg_wkly_wage', 'Numeric', 'Average weekly wage for NAICS 81 Other services, except public administration', 'Average weekly wage for a given quarter for NAICS 81 Other services, except public administration', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (374, NULL, NULL, '"us.bls".naics_81_other_services_except_public_administration_qtrly_estabs', 'Numeric', 'Establishment count for NAICS 81 Other services, except public administration', 'Count of establishments for a given quarter for NAICS 81 Other services, except public administration', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (375, NULL, NULL, '"us.bls".naics_81_other_services_except_public_administration_month3_emplvl', 'Numeric', 'Third month employment for NAICS 81 Other services, except public administration', 'Employment level for the third month of a given quarter for NAICS 81 Other services, except public administration', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (376, NULL, NULL, '"us.bls".naics_81_other_services_except_public_administration_lq_avg_wkly_wage', 'Numeric', 'Quarterly location quotient weekly wage for NAICS 81 Other services, except public administration', 'Location quotient of the average weekly wage for a given quarter relative to the U.S. (Rounded to hundredths place) for NAICS 81 Other services, except public administration', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (377, NULL, NULL, '"us.bls".naics_81_other_services_except_public_administration_lq_qtrly_estabs', 'Numeric', 'Location quotient for NAICS 81 Other services, except public administration', 'Location quotient of the quarterly establishment count relative to the U.S. (Rounded to hundredths place) for NAICS 81 Other services, except public administration', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (378, NULL, NULL, '"us.bls".naics_81_other_services_except_public_administration_lq_month3_emplvl', 'Numeric', 'Location quotient third month for NAICS 81 Other services, except public administration', 'Location quotient of the employment level for the third month of a given quarter relative to the U.S. (Rounded to hundredths place)), for NAICS 81 Other services, except public administration', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (379, NULL, NULL, '"us.bls".naics_92_public_administration_avg_wkly_wage', 'Numeric', 'Average weekly wage for NAICS 92 Public administration', 'Average weekly wage for a given quarter for NAICS 92 Public administration', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (380, NULL, NULL, '"us.bls".naics_92_public_administration_qtrly_estabs', 'Numeric', 'Establishment count for NAICS 92 Public administration', 'Count of establishments for a given quarter for NAICS 92 Public administration', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (381, NULL, NULL, '"us.bls".naics_92_public_administration_month3_emplvl', 'Numeric', 'Third month employment for NAICS 92 Public administration', 'Employment level for the third month of a given quarter for NAICS 92 Public administration', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (382, NULL, NULL, '"us.bls".naics_92_public_administration_lq_avg_wkly_wage', 'Numeric', 'Quarterly location quotient weekly wage for NAICS 92 Public administration', 'Location quotient of the average weekly wage for a given quarter relative to the U.S. (Rounded to hundredths place) for NAICS 92 Public administration', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (383, NULL, NULL, '"us.bls".naics_92_public_administration_lq_qtrly_estabs', 'Numeric', 'Location quotient for NAICS 92 Public administration', 'Location quotient of the quarterly establishment count relative to the U.S. (Rounded to hundredths place) for NAICS 92 Public administration', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (384, NULL, NULL, '"us.bls".naics_92_public_administration_lq_month3_emplvl', 'Numeric', 'Location quotient third month for NAICS 92 Public administration', 'Location quotient of the employment level for the third month of a given quarter relative to the U.S. (Rounded to hundredths place)), for NAICS 92 Public administration', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (385, NULL, NULL, '"us.bls".naics_99_unclassified_avg_wkly_wage', 'Numeric', 'Average weekly wage for NAICS 99 Unclassified', 'Average weekly wage for a given quarter for NAICS 99 Unclassified', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (386, NULL, NULL, '"us.bls".naics_99_unclassified_qtrly_estabs', 'Numeric', 'Establishment count for NAICS 99 Unclassified', 'Count of establishments for a given quarter for NAICS 99 Unclassified', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (387, NULL, NULL, '"us.bls".naics_99_unclassified_month3_emplvl', 'Numeric', 'Third month employment for NAICS 99 Unclassified', 'Employment level for the third month of a given quarter for NAICS 99 Unclassified', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (416, NULL, NULL, '"us.bls".qtrly_estabs_naics1011', 'Numeric', 'Establishment count for Natural resources and mining', 'Count of establishments for a given quarter for Natural resources and mining', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (388, NULL, NULL, '"us.bls".naics_99_unclassified_lq_avg_wkly_wage', 'Numeric', 'Quarterly location quotient weekly wage for NAICS 99 Unclassified', 'Location quotient of the average weekly wage for a given quarter relative to the U.S. (Rounded to hundredths place) for NAICS 99 Unclassified', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (390, NULL, NULL, '"us.bls".naics_99_unclassified_lq_month3_emplvl', 'Numeric', 'Location quotient third month for NAICS 99 Unclassified', 'Location quotient of the employment level for the third month of a given quarter relative to the U.S. (Rounded to hundredths place)), for NAICS 99 Unclassified', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (391, NULL, NULL, '"us.bls".naics_31_33_manufacturing_avg_wkly_wage', 'Numeric', 'Average weekly wage for NAICS 31-33 Manufacturing', 'Average weekly wage for a given quarter for NAICS 31-33 Manufacturing', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (392, NULL, NULL, '"us.bls".naics_31_33_manufacturing_qtrly_estabs', 'Numeric', 'Establishment count for NAICS 31-33 Manufacturing', 'Count of establishments for a given quarter for NAICS 31-33 Manufacturing', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (393, NULL, NULL, '"us.bls".naics_31_33_manufacturing_month3_emplvl', 'Numeric', 'Third month employment for NAICS 31-33 Manufacturing', 'Employment level for the third month of a given quarter for NAICS 31-33 Manufacturing', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (394, NULL, NULL, '"us.bls".naics_31_33_manufacturing_lq_avg_wkly_wage', 'Numeric', 'Quarterly location quotient weekly wage for NAICS 31-33 Manufacturing', 'Location quotient of the average weekly wage for a given quarter relative to the U.S. (Rounded to hundredths place) for NAICS 31-33 Manufacturing', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (395, NULL, NULL, '"us.bls".naics_31_33_manufacturing_lq_qtrly_estabs', 'Numeric', 'Location quotient for NAICS 31-33 Manufacturing', 'Location quotient of the quarterly establishment count relative to the U.S. (Rounded to hundredths place) for NAICS 31-33 Manufacturing', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (396, NULL, NULL, '"us.bls".naics_31_33_manufacturing_lq_month3_emplvl', 'Numeric', 'Location quotient third month for NAICS 31-33 Manufacturing', 'Location quotient of the employment level for the third month of a given quarter relative to the U.S. (Rounded to hundredths place)), for NAICS 31-33 Manufacturing', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (397, NULL, NULL, '"us.bls".naics_44_45_retail_trade_avg_wkly_wage', 'Numeric', 'Average weekly wage for NAICS 44-45 Retail trade', 'Average weekly wage for a given quarter for NAICS 44-45 Retail trade', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (398, NULL, NULL, '"us.bls".naics_44_45_retail_trade_qtrly_estabs', 'Numeric', 'Establishment count for NAICS 44-45 Retail trade', 'Count of establishments for a given quarter for NAICS 44-45 Retail trade', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (399, NULL, NULL, '"us.bls".naics_44_45_retail_trade_month3_emplvl', 'Numeric', 'Third month employment for NAICS 44-45 Retail trade', 'Employment level for the third month of a given quarter for NAICS 44-45 Retail trade', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (400, NULL, NULL, '"us.bls".naics_44_45_retail_trade_lq_avg_wkly_wage', 'Numeric', 'Quarterly location quotient weekly wage for NAICS 44-45 Retail trade', 'Location quotient of the average weekly wage for a given quarter relative to the U.S. (Rounded to hundredths place) for NAICS 44-45 Retail trade', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (401, NULL, NULL, '"us.bls".naics_44_45_retail_trade_lq_qtrly_estabs', 'Numeric', 'Location quotient for NAICS 44-45 Retail trade', 'Location quotient of the quarterly establishment count relative to the U.S. (Rounded to hundredths place) for NAICS 44-45 Retail trade', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (402, NULL, NULL, '"us.bls".naics_44_45_retail_trade_lq_month3_emplvl', 'Numeric', 'Location quotient third month for NAICS 44-45 Retail trade', 'Location quotient of the employment level for the third month of a given quarter relative to the U.S. (Rounded to hundredths place)), for NAICS 44-45 Retail trade', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (403, NULL, NULL, '"us.bls".naics_48_49_transportation_and_warehousing_avg_wkly_wage', 'Numeric', 'Average weekly wage for NAICS 48-49 Transportation and warehousing', 'Average weekly wage for a given quarter for NAICS 48-49 Transportation and warehousing', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (404, NULL, NULL, '"us.bls".naics_48_49_transportation_and_warehousing_qtrly_estabs', 'Numeric', 'Establishment count for NAICS 48-49 Transportation and warehousing', 'Count of establishments for a given quarter for NAICS 48-49 Transportation and warehousing', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (405, NULL, NULL, '"us.bls".naics_48_49_transportation_and_warehousing_month3_emplvl', 'Numeric', 'Third month employment for NAICS 48-49 Transportation and warehousing', 'Employment level for the third month of a given quarter for NAICS 48-49 Transportation and warehousing', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (406, NULL, NULL, '"us.bls".naics_48_49_transportation_and_warehousing_lq_avg_wkly_wage', 'Numeric', 'Quarterly location quotient weekly wage for NAICS 48-49 Transportation and warehousing', 'Location quotient of the average weekly wage for a given quarter relative to the U.S. (Rounded to hundredths place) for NAICS 48-49 Transportation and warehousing', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (407, NULL, NULL, '"us.bls".naics_48_49_transportation_and_warehousing_lq_qtrly_estabs', 'Numeric', 'Location quotient for NAICS 48-49 Transportation and warehousing', 'Location quotient of the quarterly establishment count relative to the U.S. (Rounded to hundredths place) for NAICS 48-49 Transportation and warehousing', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (408, NULL, NULL, '"us.bls".naics_48_49_transportation_and_warehousing_lq_month3_emplvl', 'Numeric', 'Location quotient third month for NAICS 48-49 Transportation and warehousing', 'Location quotient of the employment level for the third month of a given quarter relative to the U.S. (Rounded to hundredths place)), for NAICS 48-49 Transportation and warehousing', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (409, NULL, NULL, '"us.bls".avg_wkly_wage_naics10', 'Numeric', 'Average weekly wage for Total, all industries', 'Average weekly wage for a given quarter for Total, all industries', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (410, NULL, NULL, '"us.bls".qtrly_estabs_naics10', 'Numeric', 'Establishment count for Total, all industries', 'Count of establishments for a given quarter for Total, all industries', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (411, NULL, NULL, '"us.bls".month3_emplvl_naics10', 'Numeric', 'Third month employment for Total, all industries', 'Employment level for the third month of a given quarter for Total, all industries', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (412, NULL, NULL, '"us.bls".lq_avg_wkly_wage_naics10', 'Numeric', 'Quarterly location quotient weekly wage for Total, all industries', 'Location quotient of the average weekly wage for a given quarter relative to the U.S. (Rounded to hundredths place) for Total, all industries', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (413, NULL, NULL, '"us.bls".lq_qtrly_estabs_naics10', 'Numeric', 'Location quotient for Total, all industries', 'Location quotient of the quarterly establishment count relative to the U.S. (Rounded to hundredths place) for Total, all industries', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (414, NULL, NULL, '"us.bls".lq_month3_emplvl_naics10', 'Numeric', 'Location quotient third month for Total, all industries', 'Location quotient of the employment level for the third month of a given quarter relative to the U.S. (Rounded to hundredths place)), for Total, all industries', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (417, NULL, NULL, '"us.bls".month3_emplvl_naics1011', 'Numeric', 'Third month employment for Natural resources and mining', 'Employment level for the third month of a given quarter for Natural resources and mining', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (418, NULL, NULL, '"us.bls".lq_avg_wkly_wage_naics1011', 'Numeric', 'Quarterly location quotient weekly wage for Natural resources and mining', 'Location quotient of the average weekly wage for a given quarter relative to the U.S. (Rounded to hundredths place) for Natural resources and mining', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (419, NULL, NULL, '"us.bls".lq_qtrly_estabs_naics1011', 'Numeric', 'Location quotient for Natural resources and mining', 'Location quotient of the quarterly establishment count relative to the U.S. (Rounded to hundredths place) for Natural resources and mining', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (420, NULL, NULL, '"us.bls".lq_month3_emplvl_naics1011', 'Numeric', 'Location quotient third month for Natural resources and mining', 'Location quotient of the employment level for the third month of a given quarter relative to the U.S. (Rounded to hundredths place)), for Natural resources and mining', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (421, NULL, NULL, '"us.bls".avg_wkly_wage_naics1012', 'Numeric', 'Average weekly wage for Construction', 'Average weekly wage for a given quarter for Construction', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (422, NULL, NULL, '"us.bls".qtrly_estabs_naics1012', 'Numeric', 'Establishment count for Construction', 'Count of establishments for a given quarter for Construction', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (423, NULL, NULL, '"us.bls".month3_emplvl_naics1012', 'Numeric', 'Third month employment for Construction', 'Employment level for the third month of a given quarter for Construction', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (424, NULL, NULL, '"us.bls".lq_avg_wkly_wage_naics1012', 'Numeric', 'Quarterly location quotient weekly wage for Construction', 'Location quotient of the average weekly wage for a given quarter relative to the U.S. (Rounded to hundredths place) for Construction', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (425, NULL, NULL, '"us.bls".lq_qtrly_estabs_naics1012', 'Numeric', 'Location quotient for Construction', 'Location quotient of the quarterly establishment count relative to the U.S. (Rounded to hundredths place) for Construction', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (426, NULL, NULL, '"us.bls".lq_month3_emplvl_naics1012', 'Numeric', 'Location quotient third month for Construction', 'Location quotient of the employment level for the third month of a given quarter relative to the U.S. (Rounded to hundredths place)), for Construction', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (427, NULL, NULL, '"us.bls".avg_wkly_wage_naics1013', 'Numeric', 'Average weekly wage for Manufacturing', 'Average weekly wage for a given quarter for Manufacturing', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (428, NULL, NULL, '"us.bls".qtrly_estabs_naics1013', 'Numeric', 'Establishment count for Manufacturing', 'Count of establishments for a given quarter for Manufacturing', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (429, NULL, NULL, '"us.bls".month3_emplvl_naics1013', 'Numeric', 'Third month employment for Manufacturing', 'Employment level for the third month of a given quarter for Manufacturing', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (430, NULL, NULL, '"us.bls".lq_avg_wkly_wage_naics1013', 'Numeric', 'Quarterly location quotient weekly wage for Manufacturing', 'Location quotient of the average weekly wage for a given quarter relative to the U.S. (Rounded to hundredths place) for Manufacturing', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (431, NULL, NULL, '"us.bls".lq_qtrly_estabs_naics1013', 'Numeric', 'Location quotient for Manufacturing', 'Location quotient of the quarterly establishment count relative to the U.S. (Rounded to hundredths place) for Manufacturing', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (432, NULL, NULL, '"us.bls".lq_month3_emplvl_naics1013', 'Numeric', 'Location quotient third month for Manufacturing', 'Location quotient of the employment level for the third month of a given quarter relative to the U.S. (Rounded to hundredths place)), for Manufacturing', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (433, NULL, NULL, '"us.bls".avg_wkly_wage_naics1021', 'Numeric', 'Average weekly wage for Trade, transportation, and utilities', 'Average weekly wage for a given quarter for Trade, transportation, and utilities', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (434, NULL, NULL, '"us.bls".qtrly_estabs_naics1021', 'Numeric', 'Establishment count for Trade, transportation, and utilities', 'Count of establishments for a given quarter for Trade, transportation, and utilities', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (435, NULL, NULL, '"us.bls".month3_emplvl_naics1021', 'Numeric', 'Third month employment for Trade, transportation, and utilities', 'Employment level for the third month of a given quarter for Trade, transportation, and utilities', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (436, NULL, NULL, '"us.bls".lq_avg_wkly_wage_naics1021', 'Numeric', 'Quarterly location quotient weekly wage for Trade, transportation, and utilities', 'Location quotient of the average weekly wage for a given quarter relative to the U.S. (Rounded to hundredths place) for Trade, transportation, and utilities', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (437, NULL, NULL, '"us.bls".lq_qtrly_estabs_naics1021', 'Numeric', 'Location quotient for Trade, transportation, and utilities', 'Location quotient of the quarterly establishment count relative to the U.S. (Rounded to hundredths place) for Trade, transportation, and utilities', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (438, NULL, NULL, '"us.bls".qtrly_estabs_naics1027', 'Numeric', 'Establishment count for Other services', 'Count of establishments for a given quarter for Other services', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (439, NULL, NULL, '"us.bls".lq_month3_emplvl_naics1021', 'Numeric', 'Location quotient third month for Trade, transportation, and utilities', 'Location quotient of the employment level for the third month of a given quarter relative to the U.S. (Rounded to hundredths place)), for Trade, transportation, and utilities', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (440, NULL, NULL, '"us.bls".avg_wkly_wage_naics1022', 'Numeric', 'Average weekly wage for Information', 'Average weekly wage for a given quarter for Information', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (441, NULL, NULL, '"us.bls".qtrly_estabs_naics1022', 'Numeric', 'Establishment count for Information', 'Count of establishments for a given quarter for Information', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (442, NULL, NULL, '"us.bls".month3_emplvl_naics1022', 'Numeric', 'Third month employment for Information', 'Employment level for the third month of a given quarter for Information', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (443, NULL, NULL, '"us.bls".lq_avg_wkly_wage_naics1022', 'Numeric', 'Quarterly location quotient weekly wage for Information', 'Location quotient of the average weekly wage for a given quarter relative to the U.S. (Rounded to hundredths place) for Information', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (444, NULL, NULL, '"us.bls".lq_qtrly_estabs_naics1022', 'Numeric', 'Location quotient for Information', 'Location quotient of the quarterly establishment count relative to the U.S. (Rounded to hundredths place) for Information', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (445, NULL, NULL, '"us.bls".lq_month3_emplvl_naics1022', 'Numeric', 'Location quotient third month for Information', 'Location quotient of the employment level for the third month of a given quarter relative to the U.S. (Rounded to hundredths place)), for Information', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (446, NULL, NULL, '"us.bls".avg_wkly_wage_naics1023', 'Numeric', 'Average weekly wage for Financial activities', 'Average weekly wage for a given quarter for Financial activities', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (447, NULL, NULL, '"us.bls".qtrly_estabs_naics1023', 'Numeric', 'Establishment count for Financial activities', 'Count of establishments for a given quarter for Financial activities', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (448, NULL, NULL, '"us.bls".month3_emplvl_naics1023', 'Numeric', 'Third month employment for Financial activities', 'Employment level for the third month of a given quarter for Financial activities', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (449, NULL, NULL, '"us.bls".lq_avg_wkly_wage_naics1023', 'Numeric', 'Quarterly location quotient weekly wage for Financial activities', 'Location quotient of the average weekly wage for a given quarter relative to the U.S. (Rounded to hundredths place) for Financial activities', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (450, NULL, NULL, '"us.bls".lq_qtrly_estabs_naics1023', 'Numeric', 'Location quotient for Financial activities', 'Location quotient of the quarterly establishment count relative to the U.S. (Rounded to hundredths place) for Financial activities', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (451, NULL, NULL, '"us.bls".lq_month3_emplvl_naics1023', 'Numeric', 'Location quotient third month for Financial activities', 'Location quotient of the employment level for the third month of a given quarter relative to the U.S. (Rounded to hundredths place)), for Financial activities', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (452, NULL, NULL, '"us.bls".avg_wkly_wage_naics1024', 'Numeric', 'Average weekly wage for Professional and business services', 'Average weekly wage for a given quarter for Professional and business services', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (453, NULL, NULL, '"us.bls".qtrly_estabs_naics1024', 'Numeric', 'Establishment count for Professional and business services', 'Count of establishments for a given quarter for Professional and business services', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (454, NULL, NULL, '"us.bls".month3_emplvl_naics1024', 'Numeric', 'Third month employment for Professional and business services', 'Employment level for the third month of a given quarter for Professional and business services', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (455, NULL, NULL, '"us.bls".lq_avg_wkly_wage_naics1024', 'Numeric', 'Quarterly location quotient weekly wage for Professional and business services', 'Location quotient of the average weekly wage for a given quarter relative to the U.S. (Rounded to hundredths place) for Professional and business services', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (456, NULL, NULL, '"us.bls".lq_qtrly_estabs_naics1024', 'Numeric', 'Location quotient for Professional and business services', 'Location quotient of the quarterly establishment count relative to the U.S. (Rounded to hundredths place) for Professional and business services', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (457, NULL, NULL, '"us.bls".lq_month3_emplvl_naics1024', 'Numeric', 'Location quotient third month for Professional and business services', 'Location quotient of the employment level for the third month of a given quarter relative to the U.S. (Rounded to hundredths place)), for Professional and business services', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (458, NULL, NULL, '"us.bls".avg_wkly_wage_naics1025', 'Numeric', 'Average weekly wage for Education and health services', 'Average weekly wage for a given quarter for Education and health services', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (459, NULL, NULL, '"us.bls".qtrly_estabs_naics1025', 'Numeric', 'Establishment count for Education and health services', 'Count of establishments for a given quarter for Education and health services', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (460, NULL, NULL, '"us.bls".month3_emplvl_naics1025', 'Numeric', 'Third month employment for Education and health services', 'Employment level for the third month of a given quarter for Education and health services', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (461, NULL, NULL, '"us.bls".lq_avg_wkly_wage_naics1025', 'Numeric', 'Quarterly location quotient weekly wage for Education and health services', 'Location quotient of the average weekly wage for a given quarter relative to the U.S. (Rounded to hundredths place) for Education and health services', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (462, NULL, NULL, '"us.bls".lq_qtrly_estabs_naics1025', 'Numeric', 'Location quotient for Education and health services', 'Location quotient of the quarterly establishment count relative to the U.S. (Rounded to hundredths place) for Education and health services', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (463, NULL, NULL, '"us.bls".lq_month3_emplvl_naics1025', 'Numeric', 'Location quotient third month for Education and health services', 'Location quotient of the employment level for the third month of a given quarter relative to the U.S. (Rounded to hundredths place)), for Education and health services', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (464, NULL, NULL, '"us.bls".avg_wkly_wage_naics1026', 'Numeric', 'Average weekly wage for Leisure and hospitality', 'Average weekly wage for a given quarter for Leisure and hospitality', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (465, NULL, NULL, '"us.bls".qtrly_estabs_naics1026', 'Numeric', 'Establishment count for Leisure and hospitality', 'Count of establishments for a given quarter for Leisure and hospitality', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (466, NULL, NULL, '"us.bls".month3_emplvl_naics1026', 'Numeric', 'Third month employment for Leisure and hospitality', 'Employment level for the third month of a given quarter for Leisure and hospitality', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (467, NULL, NULL, '"us.bls".lq_avg_wkly_wage_naics1026', 'Numeric', 'Quarterly location quotient weekly wage for Leisure and hospitality', 'Location quotient of the average weekly wage for a given quarter relative to the U.S. (Rounded to hundredths place) for Leisure and hospitality', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (468, NULL, NULL, '"us.bls".lq_qtrly_estabs_naics1026', 'Numeric', 'Location quotient for Leisure and hospitality', 'Location quotient of the quarterly establishment count relative to the U.S. (Rounded to hundredths place) for Leisure and hospitality', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (469, NULL, NULL, '"us.bls".lq_month3_emplvl_naics1026', 'Numeric', 'Location quotient third month for Leisure and hospitality', 'Location quotient of the employment level for the third month of a given quarter relative to the U.S. (Rounded to hundredths place)), for Leisure and hospitality', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (470, NULL, NULL, '"us.bls".avg_wkly_wage_naics1027', 'Numeric', 'Average weekly wage for Other services', 'Average weekly wage for a given quarter for Other services', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (471, NULL, NULL, '"us.bls".month3_emplvl_naics1027', 'Numeric', 'Third month employment for Other services', 'Employment level for the third month of a given quarter for Other services', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (472, NULL, NULL, '"us.bls".lq_avg_wkly_wage_naics1027', 'Numeric', 'Quarterly location quotient weekly wage for Other services', 'Location quotient of the average weekly wage for a given quarter relative to the U.S. (Rounded to hundredths place) for Other services', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (473, NULL, NULL, '"us.bls".lq_qtrly_estabs_naics1027', 'Numeric', 'Location quotient for Other services', 'Location quotient of the quarterly establishment count relative to the U.S. (Rounded to hundredths place) for Other services', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (474, NULL, NULL, '"us.bls".lq_month3_emplvl_naics1027', 'Numeric', 'Location quotient third month for Other services', 'Location quotient of the employment level for the third month of a given quarter relative to the U.S. (Rounded to hundredths place)), for Other services', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (475, NULL, NULL, '"us.bls".avg_wkly_wage_naics1028', 'Numeric', 'Average weekly wage for Public administration', 'Average weekly wage for a given quarter for Public administration', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (476, NULL, NULL, '"us.bls".qtrly_estabs_naics1028', 'Numeric', 'Establishment count for Public administration', 'Count of establishments for a given quarter for Public administration', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (477, NULL, NULL, '"us.bls".month3_emplvl_naics1028', 'Numeric', 'Third month employment for Public administration', 'Employment level for the third month of a given quarter for Public administration', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (478, NULL, NULL, '"us.bls".lq_avg_wkly_wage_naics1028', 'Numeric', 'Quarterly location quotient weekly wage for Public administration', 'Location quotient of the average weekly wage for a given quarter relative to the U.S. (Rounded to hundredths place) for Public administration', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (537, NULL, NULL, '"us.bls".qtrly_estabs_naics51', 'Numeric', 'Establishment count for NAICS 51 Information', 'Count of establishments for a given quarter for NAICS 51 Information', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (479, NULL, NULL, '"us.bls".lq_qtrly_estabs_naics1028', 'Numeric', 'Location quotient for Public administration', 'Location quotient of the quarterly establishment count relative to the U.S. (Rounded to hundredths place) for Public administration', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (480, NULL, NULL, '"us.bls".lq_month3_emplvl_naics1028', 'Numeric', 'Location quotient third month for Public administration', 'Location quotient of the employment level for the third month of a given quarter relative to the U.S. (Rounded to hundredths place)), for Public administration', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (481, NULL, NULL, '"us.bls".avg_wkly_wage_naics1029', 'Numeric', 'Average weekly wage for Unclassified', 'Average weekly wage for a given quarter for Unclassified', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (482, NULL, NULL, '"us.bls".qtrly_estabs_naics1029', 'Numeric', 'Establishment count for Unclassified', 'Count of establishments for a given quarter for Unclassified', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (483, NULL, NULL, '"us.bls".month3_emplvl_naics1029', 'Numeric', 'Third month employment for Unclassified', 'Employment level for the third month of a given quarter for Unclassified', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (484, NULL, NULL, '"us.bls".lq_avg_wkly_wage_naics1029', 'Numeric', 'Quarterly location quotient weekly wage for Unclassified', 'Location quotient of the average weekly wage for a given quarter relative to the U.S. (Rounded to hundredths place) for Unclassified', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (485, NULL, NULL, '"us.bls".lq_qtrly_estabs_naics1029', 'Numeric', 'Location quotient for Unclassified', 'Location quotient of the quarterly establishment count relative to the U.S. (Rounded to hundredths place) for Unclassified', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (486, NULL, NULL, '"us.bls".lq_month3_emplvl_naics1029', 'Numeric', 'Location quotient third month for Unclassified', 'Location quotient of the employment level for the third month of a given quarter relative to the U.S. (Rounded to hundredths place)), for Unclassified', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (487, NULL, NULL, '"us.bls".avg_wkly_wage_naics11', 'Numeric', 'Average weekly wage for NAICS 11 Agriculture, forestry, fishing and hunting', 'Average weekly wage for a given quarter for NAICS 11 Agriculture, forestry, fishing and hunting', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (488, NULL, NULL, '"us.bls".qtrly_estabs_naics11', 'Numeric', 'Establishment count for NAICS 11 Agriculture, forestry, fishing and hunting', 'Count of establishments for a given quarter for NAICS 11 Agriculture, forestry, fishing and hunting', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (489, NULL, NULL, '"us.bls".month3_emplvl_naics11', 'Numeric', 'Third month employment for NAICS 11 Agriculture, forestry, fishing and hunting', 'Employment level for the third month of a given quarter for NAICS 11 Agriculture, forestry, fishing and hunting', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (490, NULL, NULL, '"us.bls".lq_avg_wkly_wage_naics11', 'Numeric', 'Quarterly location quotient weekly wage for NAICS 11 Agriculture, forestry, fishing and hunting', 'Location quotient of the average weekly wage for a given quarter relative to the U.S. (Rounded to hundredths place) for NAICS 11 Agriculture, forestry, fishing and hunting', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (491, NULL, NULL, '"us.bls".lq_qtrly_estabs_naics11', 'Numeric', 'Location quotient for NAICS 11 Agriculture, forestry, fishing and hunting', 'Location quotient of the quarterly establishment count relative to the U.S. (Rounded to hundredths place) for NAICS 11 Agriculture, forestry, fishing and hunting', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (492, NULL, NULL, '"us.bls".lq_month3_emplvl_naics11', 'Numeric', 'Location quotient third month for NAICS 11 Agriculture, forestry, fishing and hunting', 'Location quotient of the employment level for the third month of a given quarter relative to the U.S. (Rounded to hundredths place)), for NAICS 11 Agriculture, forestry, fishing and hunting', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (493, NULL, NULL, '"us.bls".avg_wkly_wage_naics21', 'Numeric', 'Average weekly wage for NAICS 21 Mining, quarrying, and oil and gas extraction', 'Average weekly wage for a given quarter for NAICS 21 Mining, quarrying, and oil and gas extraction', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (494, NULL, NULL, '"us.bls".qtrly_estabs_naics21', 'Numeric', 'Establishment count for NAICS 21 Mining, quarrying, and oil and gas extraction', 'Count of establishments for a given quarter for NAICS 21 Mining, quarrying, and oil and gas extraction', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (495, NULL, NULL, '"us.bls".month3_emplvl_naics21', 'Numeric', 'Third month employment for NAICS 21 Mining, quarrying, and oil and gas extraction', 'Employment level for the third month of a given quarter for NAICS 21 Mining, quarrying, and oil and gas extraction', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (496, NULL, NULL, '"us.bls".lq_avg_wkly_wage_naics21', 'Numeric', 'Quarterly location quotient weekly wage for NAICS 21 Mining, quarrying, and oil and gas extraction', 'Location quotient of the average weekly wage for a given quarter relative to the U.S. (Rounded to hundredths place) for NAICS 21 Mining, quarrying, and oil and gas extraction', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (497, NULL, NULL, '"us.bls".lq_qtrly_estabs_naics21', 'Numeric', 'Location quotient for NAICS 21 Mining, quarrying, and oil and gas extraction', 'Location quotient of the quarterly establishment count relative to the U.S. (Rounded to hundredths place) for NAICS 21 Mining, quarrying, and oil and gas extraction', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (498, NULL, NULL, '"us.bls".lq_month3_emplvl_naics21', 'Numeric', 'Location quotient third month for NAICS 21 Mining, quarrying, and oil and gas extraction', 'Location quotient of the employment level for the third month of a given quarter relative to the U.S. (Rounded to hundredths place)), for NAICS 21 Mining, quarrying, and oil and gas extraction', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (499, NULL, NULL, '"us.bls".avg_wkly_wage_naics22', 'Numeric', 'Average weekly wage for NAICS 22 Utilities', 'Average weekly wage for a given quarter for NAICS 22 Utilities', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (500, NULL, NULL, '"us.bls".qtrly_estabs_naics22', 'Numeric', 'Establishment count for NAICS 22 Utilities', 'Count of establishments for a given quarter for NAICS 22 Utilities', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (501, NULL, NULL, '"us.bls".month3_emplvl_naics22', 'Numeric', 'Third month employment for NAICS 22 Utilities', 'Employment level for the third month of a given quarter for NAICS 22 Utilities', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (502, NULL, NULL, '"us.bls".lq_avg_wkly_wage_naics22', 'Numeric', 'Quarterly location quotient weekly wage for NAICS 22 Utilities', 'Location quotient of the average weekly wage for a given quarter relative to the U.S. (Rounded to hundredths place) for NAICS 22 Utilities', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (503, NULL, NULL, '"us.bls".lq_qtrly_estabs_naics22', 'Numeric', 'Location quotient for NAICS 22 Utilities', 'Location quotient of the quarterly establishment count relative to the U.S. (Rounded to hundredths place) for NAICS 22 Utilities', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (504, NULL, NULL, '"us.bls".lq_month3_emplvl_naics22', 'Numeric', 'Location quotient third month for NAICS 22 Utilities', 'Location quotient of the employment level for the third month of a given quarter relative to the U.S. (Rounded to hundredths place)), for NAICS 22 Utilities', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (505, NULL, NULL, '"us.bls".avg_wkly_wage_naics23', 'Numeric', 'Average weekly wage for NAICS 23 Construction', 'Average weekly wage for a given quarter for NAICS 23 Construction', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (506, NULL, NULL, '"us.bls".qtrly_estabs_naics23', 'Numeric', 'Establishment count for NAICS 23 Construction', 'Count of establishments for a given quarter for NAICS 23 Construction', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (507, NULL, NULL, '"us.bls".month3_emplvl_naics23', 'Numeric', 'Third month employment for NAICS 23 Construction', 'Employment level for the third month of a given quarter for NAICS 23 Construction', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (508, NULL, NULL, '"us.bls".lq_avg_wkly_wage_naics23', 'Numeric', 'Quarterly location quotient weekly wage for NAICS 23 Construction', 'Location quotient of the average weekly wage for a given quarter relative to the U.S. (Rounded to hundredths place) for NAICS 23 Construction', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (509, NULL, NULL, '"us.bls".lq_qtrly_estabs_naics23', 'Numeric', 'Location quotient for NAICS 23 Construction', 'Location quotient of the quarterly establishment count relative to the U.S. (Rounded to hundredths place) for NAICS 23 Construction', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (510, NULL, NULL, '"us.bls".lq_month3_emplvl_naics23', 'Numeric', 'Location quotient third month for NAICS 23 Construction', 'Location quotient of the employment level for the third month of a given quarter relative to the U.S. (Rounded to hundredths place)), for NAICS 23 Construction', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (511, NULL, NULL, '"us.bls".avg_wkly_wage_naics31_33', 'Numeric', 'Average weekly wage for NAICS 31-33 Manufacturing', 'Average weekly wage for a given quarter for NAICS 31-33 Manufacturing', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (512, NULL, NULL, '"us.bls".qtrly_estabs_naics31_33', 'Numeric', 'Establishment count for NAICS 31-33 Manufacturing', 'Count of establishments for a given quarter for NAICS 31-33 Manufacturing', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (513, NULL, NULL, '"us.bls".month3_emplvl_naics31_33', 'Numeric', 'Third month employment for NAICS 31-33 Manufacturing', 'Employment level for the third month of a given quarter for NAICS 31-33 Manufacturing', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (514, NULL, NULL, '"us.bls".lq_avg_wkly_wage_naics31_33', 'Numeric', 'Quarterly location quotient weekly wage for NAICS 31-33 Manufacturing', 'Location quotient of the average weekly wage for a given quarter relative to the U.S. (Rounded to hundredths place) for NAICS 31-33 Manufacturing', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (515, NULL, NULL, '"us.bls".lq_qtrly_estabs_naics31_33', 'Numeric', 'Location quotient for NAICS 31-33 Manufacturing', 'Location quotient of the quarterly establishment count relative to the U.S. (Rounded to hundredths place) for NAICS 31-33 Manufacturing', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (516, NULL, NULL, '"us.bls".lq_month3_emplvl_naics31_33', 'Numeric', 'Location quotient third month for NAICS 31-33 Manufacturing', 'Location quotient of the employment level for the third month of a given quarter relative to the U.S. (Rounded to hundredths place)), for NAICS 31-33 Manufacturing', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (517, NULL, NULL, '"us.bls".avg_wkly_wage_naics42', 'Numeric', 'Average weekly wage for NAICS 42 Wholesale trade', 'Average weekly wage for a given quarter for NAICS 42 Wholesale trade', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (518, NULL, NULL, '"us.bls".qtrly_estabs_naics42', 'Numeric', 'Establishment count for NAICS 42 Wholesale trade', 'Count of establishments for a given quarter for NAICS 42 Wholesale trade', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (519, NULL, NULL, '"us.bls".month3_emplvl_naics42', 'Numeric', 'Third month employment for NAICS 42 Wholesale trade', 'Employment level for the third month of a given quarter for NAICS 42 Wholesale trade', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (520, NULL, NULL, '"us.bls".lq_avg_wkly_wage_naics42', 'Numeric', 'Quarterly location quotient weekly wage for NAICS 42 Wholesale trade', 'Location quotient of the average weekly wage for a given quarter relative to the U.S. (Rounded to hundredths place) for NAICS 42 Wholesale trade', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (521, NULL, NULL, '"us.bls".lq_qtrly_estabs_naics42', 'Numeric', 'Location quotient for NAICS 42 Wholesale trade', 'Location quotient of the quarterly establishment count relative to the U.S. (Rounded to hundredths place) for NAICS 42 Wholesale trade', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (522, NULL, NULL, '"us.bls".lq_month3_emplvl_naics42', 'Numeric', 'Location quotient third month for NAICS 42 Wholesale trade', 'Location quotient of the employment level for the third month of a given quarter relative to the U.S. (Rounded to hundredths place)), for NAICS 42 Wholesale trade', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (523, NULL, NULL, '"us.bls".avg_wkly_wage_naics44_45', 'Numeric', 'Average weekly wage for NAICS 44-45 Retail trade', 'Average weekly wage for a given quarter for NAICS 44-45 Retail trade', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (524, NULL, NULL, '"us.bls".qtrly_estabs_naics44_45', 'Numeric', 'Establishment count for NAICS 44-45 Retail trade', 'Count of establishments for a given quarter for NAICS 44-45 Retail trade', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (525, NULL, NULL, '"us.bls".month3_emplvl_naics44_45', 'Numeric', 'Third month employment for NAICS 44-45 Retail trade', 'Employment level for the third month of a given quarter for NAICS 44-45 Retail trade', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (526, NULL, NULL, '"us.bls".lq_avg_wkly_wage_naics44_45', 'Numeric', 'Quarterly location quotient weekly wage for NAICS 44-45 Retail trade', 'Location quotient of the average weekly wage for a given quarter relative to the U.S. (Rounded to hundredths place) for NAICS 44-45 Retail trade', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (527, NULL, NULL, '"us.bls".lq_qtrly_estabs_naics44_45', 'Numeric', 'Location quotient for NAICS 44-45 Retail trade', 'Location quotient of the quarterly establishment count relative to the U.S. (Rounded to hundredths place) for NAICS 44-45 Retail trade', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (528, NULL, NULL, '"us.bls".lq_month3_emplvl_naics44_45', 'Numeric', 'Location quotient third month for NAICS 44-45 Retail trade', 'Location quotient of the employment level for the third month of a given quarter relative to the U.S. (Rounded to hundredths place)), for NAICS 44-45 Retail trade', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (529, NULL, NULL, '"us.bls".avg_wkly_wage_naics48_49', 'Numeric', 'Average weekly wage for NAICS 48-49 Transportation and warehousing', 'Average weekly wage for a given quarter for NAICS 48-49 Transportation and warehousing', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (530, NULL, NULL, '"us.bls".qtrly_estabs_naics48_49', 'Numeric', 'Establishment count for NAICS 48-49 Transportation and warehousing', 'Count of establishments for a given quarter for NAICS 48-49 Transportation and warehousing', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (531, NULL, NULL, '"us.bls".month3_emplvl_naics48_49', 'Numeric', 'Third month employment for NAICS 48-49 Transportation and warehousing', 'Employment level for the third month of a given quarter for NAICS 48-49 Transportation and warehousing', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (532, NULL, NULL, '"us.bls".month3_emplvl_naics55', 'Numeric', 'Third month employment for NAICS 55 Management of companies and enterprises', 'Employment level for the third month of a given quarter for NAICS 55 Management of companies and enterprises', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (533, NULL, NULL, '"us.bls".lq_avg_wkly_wage_naics48_49', 'Numeric', 'Quarterly location quotient weekly wage for NAICS 48-49 Transportation and warehousing', 'Location quotient of the average weekly wage for a given quarter relative to the U.S. (Rounded to hundredths place) for NAICS 48-49 Transportation and warehousing', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (534, NULL, NULL, '"us.bls".lq_qtrly_estabs_naics48_49', 'Numeric', 'Location quotient for NAICS 48-49 Transportation and warehousing', 'Location quotient of the quarterly establishment count relative to the U.S. (Rounded to hundredths place) for NAICS 48-49 Transportation and warehousing', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (535, NULL, NULL, '"us.bls".lq_month3_emplvl_naics48_49', 'Numeric', 'Location quotient third month for NAICS 48-49 Transportation and warehousing', 'Location quotient of the employment level for the third month of a given quarter relative to the U.S. (Rounded to hundredths place)), for NAICS 48-49 Transportation and warehousing', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (536, NULL, NULL, '"us.bls".avg_wkly_wage_naics51', 'Numeric', 'Average weekly wage for NAICS 51 Information', 'Average weekly wage for a given quarter for NAICS 51 Information', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (539, NULL, NULL, '"us.bls".lq_avg_wkly_wage_naics51', 'Numeric', 'Quarterly location quotient weekly wage for NAICS 51 Information', 'Location quotient of the average weekly wage for a given quarter relative to the U.S. (Rounded to hundredths place) for NAICS 51 Information', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (540, NULL, NULL, '"us.bls".lq_qtrly_estabs_naics51', 'Numeric', 'Location quotient for NAICS 51 Information', 'Location quotient of the quarterly establishment count relative to the U.S. (Rounded to hundredths place) for NAICS 51 Information', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (541, NULL, NULL, '"us.bls".lq_month3_emplvl_naics51', 'Numeric', 'Location quotient third month for NAICS 51 Information', 'Location quotient of the employment level for the third month of a given quarter relative to the U.S. (Rounded to hundredths place)), for NAICS 51 Information', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (542, NULL, NULL, '"us.bls".avg_wkly_wage_naics52', 'Numeric', 'Average weekly wage for NAICS 52 Finance and insurance', 'Average weekly wage for a given quarter for NAICS 52 Finance and insurance', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (543, NULL, NULL, '"us.bls".qtrly_estabs_naics52', 'Numeric', 'Establishment count for NAICS 52 Finance and insurance', 'Count of establishments for a given quarter for NAICS 52 Finance and insurance', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (544, NULL, NULL, '"us.bls".month3_emplvl_naics52', 'Numeric', 'Third month employment for NAICS 52 Finance and insurance', 'Employment level for the third month of a given quarter for NAICS 52 Finance and insurance', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (545, NULL, NULL, '"us.bls".lq_avg_wkly_wage_naics52', 'Numeric', 'Quarterly location quotient weekly wage for NAICS 52 Finance and insurance', 'Location quotient of the average weekly wage for a given quarter relative to the U.S. (Rounded to hundredths place) for NAICS 52 Finance and insurance', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (546, NULL, NULL, '"us.bls".lq_qtrly_estabs_naics52', 'Numeric', 'Location quotient for NAICS 52 Finance and insurance', 'Location quotient of the quarterly establishment count relative to the U.S. (Rounded to hundredths place) for NAICS 52 Finance and insurance', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (547, NULL, NULL, '"us.bls".lq_month3_emplvl_naics52', 'Numeric', 'Location quotient third month for NAICS 52 Finance and insurance', 'Location quotient of the employment level for the third month of a given quarter relative to the U.S. (Rounded to hundredths place)), for NAICS 52 Finance and insurance', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (548, NULL, NULL, '"us.bls".avg_wkly_wage_naics53', 'Numeric', 'Average weekly wage for NAICS 53 Real estate and rental and leasing', 'Average weekly wage for a given quarter for NAICS 53 Real estate and rental and leasing', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (549, NULL, NULL, '"us.bls".qtrly_estabs_naics53', 'Numeric', 'Establishment count for NAICS 53 Real estate and rental and leasing', 'Count of establishments for a given quarter for NAICS 53 Real estate and rental and leasing', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (550, NULL, NULL, '"us.bls".month3_emplvl_naics53', 'Numeric', 'Third month employment for NAICS 53 Real estate and rental and leasing', 'Employment level for the third month of a given quarter for NAICS 53 Real estate and rental and leasing', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (551, NULL, NULL, '"us.bls".lq_avg_wkly_wage_naics53', 'Numeric', 'Quarterly location quotient weekly wage for NAICS 53 Real estate and rental and leasing', 'Location quotient of the average weekly wage for a given quarter relative to the U.S. (Rounded to hundredths place) for NAICS 53 Real estate and rental and leasing', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (552, NULL, NULL, '"us.bls".lq_qtrly_estabs_naics53', 'Numeric', 'Location quotient for NAICS 53 Real estate and rental and leasing', 'Location quotient of the quarterly establishment count relative to the U.S. (Rounded to hundredths place) for NAICS 53 Real estate and rental and leasing', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (553, NULL, NULL, '"us.bls".lq_month3_emplvl_naics53', 'Numeric', 'Location quotient third month for NAICS 53 Real estate and rental and leasing', 'Location quotient of the employment level for the third month of a given quarter relative to the U.S. (Rounded to hundredths place)), for NAICS 53 Real estate and rental and leasing', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (554, NULL, NULL, '"us.bls".avg_wkly_wage_naics54', 'Numeric', 'Average weekly wage for NAICS 54 Professional and technical services', 'Average weekly wage for a given quarter for NAICS 54 Professional and technical services', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (555, NULL, NULL, '"us.bls".qtrly_estabs_naics54', 'Numeric', 'Establishment count for NAICS 54 Professional and technical services', 'Count of establishments for a given quarter for NAICS 54 Professional and technical services', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (556, NULL, NULL, '"us.bls".month3_emplvl_naics54', 'Numeric', 'Third month employment for NAICS 54 Professional and technical services', 'Employment level for the third month of a given quarter for NAICS 54 Professional and technical services', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (557, NULL, NULL, '"us.bls".lq_avg_wkly_wage_naics54', 'Numeric', 'Quarterly location quotient weekly wage for NAICS 54 Professional and technical services', 'Location quotient of the average weekly wage for a given quarter relative to the U.S. (Rounded to hundredths place) for NAICS 54 Professional and technical services', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (558, NULL, NULL, '"us.bls".lq_qtrly_estabs_naics54', 'Numeric', 'Location quotient for NAICS 54 Professional and technical services', 'Location quotient of the quarterly establishment count relative to the U.S. (Rounded to hundredths place) for NAICS 54 Professional and technical services', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (559, NULL, NULL, '"us.bls".lq_month3_emplvl_naics54', 'Numeric', 'Location quotient third month for NAICS 54 Professional and technical services', 'Location quotient of the employment level for the third month of a given quarter relative to the U.S. (Rounded to hundredths place)), for NAICS 54 Professional and technical services', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (560, NULL, NULL, '"us.bls".avg_wkly_wage_naics55', 'Numeric', 'Average weekly wage for NAICS 55 Management of companies and enterprises', 'Average weekly wage for a given quarter for NAICS 55 Management of companies and enterprises', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (561, NULL, NULL, '"us.bls".qtrly_estabs_naics55', 'Numeric', 'Establishment count for NAICS 55 Management of companies and enterprises', 'Count of establishments for a given quarter for NAICS 55 Management of companies and enterprises', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (617, NULL, NULL, '"us.census.acs".B03002002', 'Numeric', 'Population not Hispanic', 'The number of people not identifying as Hispanic or Latino in each geography.', 0, 'sum', 1, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (562, NULL, NULL, '"us.bls".lq_avg_wkly_wage_naics55', 'Numeric', 'Quarterly location quotient weekly wage for NAICS 55 Management of companies and enterprises', 'Location quotient of the average weekly wage for a given quarter relative to the U.S. (Rounded to hundredths place) for NAICS 55 Management of companies and enterprises', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (563, NULL, NULL, '"us.bls".lq_qtrly_estabs_naics55', 'Numeric', 'Location quotient for NAICS 55 Management of companies and enterprises', 'Location quotient of the quarterly establishment count relative to the U.S. (Rounded to hundredths place) for NAICS 55 Management of companies and enterprises', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (564, NULL, NULL, '"us.bls".lq_month3_emplvl_naics55', 'Numeric', 'Location quotient third month for NAICS 55 Management of companies and enterprises', 'Location quotient of the employment level for the third month of a given quarter relative to the U.S. (Rounded to hundredths place)), for NAICS 55 Management of companies and enterprises', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (565, NULL, NULL, '"us.bls".avg_wkly_wage_naics56', 'Numeric', 'Average weekly wage for NAICS 56 Administrative and waste services', 'Average weekly wage for a given quarter for NAICS 56 Administrative and waste services', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (566, NULL, NULL, '"us.bls".qtrly_estabs_naics56', 'Numeric', 'Establishment count for NAICS 56 Administrative and waste services', 'Count of establishments for a given quarter for NAICS 56 Administrative and waste services', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (567, NULL, NULL, '"us.bls".month3_emplvl_naics56', 'Numeric', 'Third month employment for NAICS 56 Administrative and waste services', 'Employment level for the third month of a given quarter for NAICS 56 Administrative and waste services', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (568, NULL, NULL, '"us.bls".lq_avg_wkly_wage_naics56', 'Numeric', 'Quarterly location quotient weekly wage for NAICS 56 Administrative and waste services', 'Location quotient of the average weekly wage for a given quarter relative to the U.S. (Rounded to hundredths place) for NAICS 56 Administrative and waste services', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (569, NULL, NULL, '"us.bls".lq_qtrly_estabs_naics56', 'Numeric', 'Location quotient for NAICS 56 Administrative and waste services', 'Location quotient of the quarterly establishment count relative to the U.S. (Rounded to hundredths place) for NAICS 56 Administrative and waste services', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (570, NULL, NULL, '"us.bls".lq_month3_emplvl_naics56', 'Numeric', 'Location quotient third month for NAICS 56 Administrative and waste services', 'Location quotient of the employment level for the third month of a given quarter relative to the U.S. (Rounded to hundredths place)), for NAICS 56 Administrative and waste services', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (571, NULL, NULL, '"us.bls".avg_wkly_wage_naics61', 'Numeric', 'Average weekly wage for NAICS 61 Educational services', 'Average weekly wage for a given quarter for NAICS 61 Educational services', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (572, NULL, NULL, '"us.bls".qtrly_estabs_naics61', 'Numeric', 'Establishment count for NAICS 61 Educational services', 'Count of establishments for a given quarter for NAICS 61 Educational services', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (573, NULL, NULL, '"us.bls".month3_emplvl_naics61', 'Numeric', 'Third month employment for NAICS 61 Educational services', 'Employment level for the third month of a given quarter for NAICS 61 Educational services', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (574, NULL, NULL, '"us.bls".lq_avg_wkly_wage_naics61', 'Numeric', 'Quarterly location quotient weekly wage for NAICS 61 Educational services', 'Location quotient of the average weekly wage for a given quarter relative to the U.S. (Rounded to hundredths place) for NAICS 61 Educational services', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (575, NULL, NULL, '"us.bls".lq_qtrly_estabs_naics61', 'Numeric', 'Location quotient for NAICS 61 Educational services', 'Location quotient of the quarterly establishment count relative to the U.S. (Rounded to hundredths place) for NAICS 61 Educational services', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (576, NULL, NULL, '"us.bls".lq_month3_emplvl_naics61', 'Numeric', 'Location quotient third month for NAICS 61 Educational services', 'Location quotient of the employment level for the third month of a given quarter relative to the U.S. (Rounded to hundredths place)), for NAICS 61 Educational services', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (577, NULL, NULL, '"us.bls".avg_wkly_wage_naics62', 'Numeric', 'Average weekly wage for NAICS 62 Health care and social assistance', 'Average weekly wage for a given quarter for NAICS 62 Health care and social assistance', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (578, NULL, NULL, '"us.bls".qtrly_estabs_naics62', 'Numeric', 'Establishment count for NAICS 62 Health care and social assistance', 'Count of establishments for a given quarter for NAICS 62 Health care and social assistance', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (579, NULL, NULL, '"us.bls".month3_emplvl_naics62', 'Numeric', 'Third month employment for NAICS 62 Health care and social assistance', 'Employment level for the third month of a given quarter for NAICS 62 Health care and social assistance', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (580, NULL, NULL, '"us.bls".lq_avg_wkly_wage_naics62', 'Numeric', 'Quarterly location quotient weekly wage for NAICS 62 Health care and social assistance', 'Location quotient of the average weekly wage for a given quarter relative to the U.S. (Rounded to hundredths place) for NAICS 62 Health care and social assistance', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (581, NULL, NULL, '"us.bls".lq_qtrly_estabs_naics62', 'Numeric', 'Location quotient for NAICS 62 Health care and social assistance', 'Location quotient of the quarterly establishment count relative to the U.S. (Rounded to hundredths place) for NAICS 62 Health care and social assistance', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (582, NULL, NULL, '"us.bls".lq_month3_emplvl_naics62', 'Numeric', 'Location quotient third month for NAICS 62 Health care and social assistance', 'Location quotient of the employment level for the third month of a given quarter relative to the U.S. (Rounded to hundredths place)), for NAICS 62 Health care and social assistance', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (583, NULL, NULL, '"us.bls".avg_wkly_wage_naics71', 'Numeric', 'Average weekly wage for NAICS 71 Arts, entertainment, and recreation', 'Average weekly wage for a given quarter for NAICS 71 Arts, entertainment, and recreation', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (584, NULL, NULL, '"us.bls".qtrly_estabs_naics71', 'Numeric', 'Establishment count for NAICS 71 Arts, entertainment, and recreation', 'Count of establishments for a given quarter for NAICS 71 Arts, entertainment, and recreation', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (585, NULL, NULL, '"us.bls".month3_emplvl_naics71', 'Numeric', 'Third month employment for NAICS 71 Arts, entertainment, and recreation', 'Employment level for the third month of a given quarter for NAICS 71 Arts, entertainment, and recreation', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (586, NULL, NULL, '"us.bls".lq_avg_wkly_wage_naics71', 'Numeric', 'Quarterly location quotient weekly wage for NAICS 71 Arts, entertainment, and recreation', 'Location quotient of the average weekly wage for a given quarter relative to the U.S. (Rounded to hundredths place) for NAICS 71 Arts, entertainment, and recreation', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (587, NULL, NULL, '"us.bls".lq_qtrly_estabs_naics71', 'Numeric', 'Location quotient for NAICS 71 Arts, entertainment, and recreation', 'Location quotient of the quarterly establishment count relative to the U.S. (Rounded to hundredths place) for NAICS 71 Arts, entertainment, and recreation', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (649, NULL, NULL, '"us.census.acs".B19001005', 'Numeric', 'Households with income of $20,000 To $24,999', 'The number of households in a geographic area whose annual income was between $20,000 and $24,999.', 2, NULL, 1, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (588, NULL, NULL, '"us.bls".lq_month3_emplvl_naics71', 'Numeric', 'Location quotient third month for NAICS 71 Arts, entertainment, and recreation', 'Location quotient of the employment level for the third month of a given quarter relative to the U.S. (Rounded to hundredths place)), for NAICS 71 Arts, entertainment, and recreation', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (589, NULL, NULL, '"us.bls".avg_wkly_wage_naics72', 'Numeric', 'Average weekly wage for NAICS 72 Accommodation and food services', 'Average weekly wage for a given quarter for NAICS 72 Accommodation and food services', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (591, NULL, NULL, '"us.bls".qtrly_estabs_naics72', 'Numeric', 'Establishment count for NAICS 72 Accommodation and food services', 'Count of establishments for a given quarter for NAICS 72 Accommodation and food services', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (654, NULL, NULL, '"us.census.acs".B19001010', 'Numeric', 'Households with income of $45,000 To $49,999', 'The number of households in a geographic area whose annual income was between $45,000 and $49,999.', 2, NULL, 1, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (592, NULL, NULL, '"us.bls".month3_emplvl_naics72', 'Numeric', 'Third month employment for NAICS 72 Accommodation and food services', 'Employment level for the third month of a given quarter for NAICS 72 Accommodation and food services', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (593, NULL, NULL, '"us.bls".lq_avg_wkly_wage_naics72', 'Numeric', 'Quarterly location quotient weekly wage for NAICS 72 Accommodation and food services', 'Location quotient of the average weekly wage for a given quarter relative to the U.S. (Rounded to hundredths place) for NAICS 72 Accommodation and food services', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (594, NULL, NULL, '"us.bls".lq_qtrly_estabs_naics72', 'Numeric', 'Location quotient for NAICS 72 Accommodation and food services', 'Location quotient of the quarterly establishment count relative to the U.S. (Rounded to hundredths place) for NAICS 72 Accommodation and food services', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (595, NULL, NULL, '"us.bls".lq_month3_emplvl_naics72', 'Numeric', 'Location quotient third month for NAICS 72 Accommodation and food services', 'Location quotient of the employment level for the third month of a given quarter relative to the U.S. (Rounded to hundredths place)), for NAICS 72 Accommodation and food services', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (596, NULL, NULL, '"us.bls".avg_wkly_wage_naics81', 'Numeric', 'Average weekly wage for NAICS 81 Other services, except public administration', 'Average weekly wage for a given quarter for NAICS 81 Other services, except public administration', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (597, NULL, NULL, '"us.bls".qtrly_estabs_naics81', 'Numeric', 'Establishment count for NAICS 81 Other services, except public administration', 'Count of establishments for a given quarter for NAICS 81 Other services, except public administration', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (598, NULL, NULL, '"us.bls".month3_emplvl_naics81', 'Numeric', 'Third month employment for NAICS 81 Other services, except public administration', 'Employment level for the third month of a given quarter for NAICS 81 Other services, except public administration', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (599, NULL, NULL, '"us.bls".lq_avg_wkly_wage_naics81', 'Numeric', 'Quarterly location quotient weekly wage for NAICS 81 Other services, except public administration', 'Location quotient of the average weekly wage for a given quarter relative to the U.S. (Rounded to hundredths place) for NAICS 81 Other services, except public administration', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (600, NULL, NULL, '"us.bls".lq_qtrly_estabs_naics81', 'Numeric', 'Location quotient for NAICS 81 Other services, except public administration', 'Location quotient of the quarterly establishment count relative to the U.S. (Rounded to hundredths place) for NAICS 81 Other services, except public administration', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (601, NULL, NULL, '"us.bls".lq_month3_emplvl_naics81', 'Numeric', 'Location quotient third month for NAICS 81 Other services, except public administration', 'Location quotient of the employment level for the third month of a given quarter relative to the U.S. (Rounded to hundredths place)), for NAICS 81 Other services, except public administration', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (602, NULL, NULL, '"us.bls".avg_wkly_wage_naics92', 'Numeric', 'Average weekly wage for NAICS 92 Public administration', 'Average weekly wage for a given quarter for NAICS 92 Public administration', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (603, NULL, NULL, '"us.bls".qtrly_estabs_naics92', 'Numeric', 'Establishment count for NAICS 92 Public administration', 'Count of establishments for a given quarter for NAICS 92 Public administration', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (604, NULL, NULL, '"us.bls".month3_emplvl_naics92', 'Numeric', 'Third month employment for NAICS 92 Public administration', 'Employment level for the third month of a given quarter for NAICS 92 Public administration', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (605, NULL, NULL, '"us.bls".lq_avg_wkly_wage_naics92', 'Numeric', 'Quarterly location quotient weekly wage for NAICS 92 Public administration', 'Location quotient of the average weekly wage for a given quarter relative to the U.S. (Rounded to hundredths place) for NAICS 92 Public administration', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (606, NULL, NULL, '"us.bls".lq_qtrly_estabs_naics92', 'Numeric', 'Location quotient for NAICS 92 Public administration', 'Location quotient of the quarterly establishment count relative to the U.S. (Rounded to hundredths place) for NAICS 92 Public administration', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (607, NULL, NULL, '"us.bls".lq_month3_emplvl_naics92', 'Numeric', 'Location quotient third month for NAICS 92 Public administration', 'Location quotient of the employment level for the third month of a given quarter relative to the U.S. (Rounded to hundredths place)), for NAICS 92 Public administration', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (608, NULL, NULL, '"us.bls".avg_wkly_wage_naics99', 'Numeric', 'Average weekly wage for NAICS 99 Unclassified', 'Average weekly wage for a given quarter for NAICS 99 Unclassified', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (609, NULL, NULL, '"us.bls".qtrly_estabs_naics99', 'Numeric', 'Establishment count for NAICS 99 Unclassified', 'Count of establishments for a given quarter for NAICS 99 Unclassified', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (610, NULL, NULL, '"us.bls".month3_emplvl_naics99', 'Numeric', 'Third month employment for NAICS 99 Unclassified', 'Employment level for the third month of a given quarter for NAICS 99 Unclassified', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (611, NULL, NULL, '"us.bls".lq_avg_wkly_wage_naics99', 'Numeric', 'Quarterly location quotient weekly wage for NAICS 99 Unclassified', 'Location quotient of the average weekly wage for a given quarter relative to the U.S. (Rounded to hundredths place) for NAICS 99 Unclassified', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (612, NULL, NULL, '"us.bls".lq_qtrly_estabs_naics99', 'Numeric', 'Location quotient for NAICS 99 Unclassified', 'Location quotient of the quarterly establishment count relative to the U.S. (Rounded to hundredths place) for NAICS 99 Unclassified', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (613, NULL, NULL, '"us.bls".lq_month3_emplvl_naics99', 'Numeric', 'Location quotient third month for NAICS 99 Unclassified', 'Location quotient of the employment level for the third month of a given quarter relative to the U.S. (Rounded to hundredths place)), for NAICS 99 Unclassified', 0, 'sum', 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (614, NULL, NULL, '"us.census.acs".B03002005', 'Numeric', 'American Indian and Alaska Native Population', 'The number of people identifying as American Indian or Alaska native in each geography.', 0, 'sum', 1, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (615, NULL, NULL, '"us.census.acs".B03002008', 'Numeric', 'Other Race population', 'The number of people identifying as another race in each geography', 0, 'sum', 1, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (616, NULL, NULL, '"us.census.acs".B03002009', 'Numeric', 'Two or more races population', 'The number of people identifying as two or more races in each geography', 0, 'sum', 1, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (618, NULL, NULL, '"us.census.acs".B08006001', 'Numeric', 'Workers over the Age of 16', 'The number of people in each geography who work. Workers include those employed at private for-profit companies, the self-employed, government workers and non-profit employees.', 5, 'sum', 1, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (619, NULL, NULL, '"us.census.acs".B08006002', 'Numeric', 'Commuters by Car, Truck, or Van', 'The number of workers age 16 years and over within a geographic area who primarily traveled to work by car, truck or van. This is the principal mode of travel or type of conveyance, by distance rather than time, that the worker usually used to get from home to work.', 4, 'sum', 1, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (655, NULL, NULL, '"us.census.acs".B19001011', 'Numeric', 'Households with income of $50,000 To $59,999', 'The number of households in a geographic area whose annual income was between $50,000 and $59,999.', 2, NULL, 1, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (620, NULL, NULL, '"us.census.acs".B08006004', 'Numeric', 'Commuters by Carpool', 'The number of workers age 16 years and over within a geographic area who primarily traveled to work by carpool. This is the principal mode of travel or type of conveyance, by distance rather than time, that the worker usually used to get from home to work.', 2, 'sum', 1, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (621, NULL, NULL, '"us.census.acs".B08006003', 'Numeric', 'Commuters who drove alone', 'The number of workers age 16 years and over within a geographic area who primarily traveled by car driving alone. This is the principal mode of travel or type of conveyance, by distance rather than time, that the worker usually used to get from home to work.', 2, 'sum', 1, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (622, NULL, NULL, '"us.census.acs".B11001001', 'Numeric', 'Households', 'A count of the number of households in each geography. A household consists of one or more people who live in the same dwelling and also share at meals or living accommodation, and may consist of a single family or some other grouping of people. ', 8, 'sum', 1, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (623, NULL, NULL, '"us.census.acs".B19001017', 'Numeric', 'Households with income of $200,000 Or More', 'The number of households in a geographic area whose annual income was more than $200,000.', 2, NULL, 1, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (624, NULL, NULL, '"us.census.acs".B15003019', 'Numeric', 'Population completed less than one year of college, no degree', 'The number of people in a geographic area over the age of 25 who attended college for less than one year and no further.', 4, 'sum', 1, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (625, NULL, NULL, '"us.census.acs".B15003020', 'Numeric', 'Population completed more than one year of college, no degree', 'The number of people in a geographic area over the age of 25 who attended college for more than one year but did not obtain a degree', 4, 'sum', 1, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (626, NULL, NULL, '"us.census.acs".B15003021', 'Numeric', 'Population Completed Associate''s Degree', 'The number of people in a geographic area over the age of 25 who obtained a associate''s degree, and did not complete a more advanced degree.', 4, 'sum', 1, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (627, NULL, NULL, '"us.census.acs".B23008010', 'Numeric', 'One-parent families, father in labor force, with young children (under 6 years of age)', '', 0, 'sum', 1, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (629, NULL, NULL, '"us.census.acs".B12005001', 'Numeric', 'Population 15 Years and Over', 'The number of people in a geographic area who are over the age of 15. This is used mostly as a denominator of marital status.', 2, 'sum', 1, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (630, NULL, NULL, '"us.census.acs".B12005015', 'Numeric', 'Divorced', 'The number of people in a geographic area who are divorced', 2, 'sum', 1, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (631, NULL, NULL, '"us.census.acs".B12005002', 'Numeric', 'Never Married', 'The number of people in a geographic area who have never been married.', 2, 'sum', 1, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (632, NULL, NULL, '"us.census.acs".B12005005', 'Numeric', 'Currently married', 'The number of people in a geographic area who are currently married', 2, 'sum', 1, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (633, NULL, NULL, '"us.census.acs".B12005008', 'Numeric', 'Married but separated', 'The number of people in a geographic area who are married but separated', 2, 'sum', 1, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (634, NULL, NULL, '"us.census.acs".B12005012', 'Numeric', 'Widowed', 'The number of people in a geographic area who are widowed', 2, 'sum', 1, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (635, NULL, NULL, '"us.census.acs".B08134001', 'Numeric', 'Workers age 16 and over who do not work from home', 'The number of workers over the age of 16 who do not work from home in a geographic area', 2, 'sum', 1, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (636, NULL, NULL, '"us.census.acs".B08135001', 'Numeric', 'Aggregate travel time to work', 'The total number of minutes every worker over the age of 16 who did not work from home spent spent commuting to work in one day in a geographic area', 2, 'sum', 1, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (637, NULL, NULL, '"us.census.acs".B08134002', 'Numeric', 'Number of workers with less than 10 minute commute', 'The number of workers over the age of 16 who do not work from home and commute in less than 10 minutes in a geographic area', 2, 'sum', 1, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (638, NULL, NULL, '"us.census.acs".B08134003', 'Numeric', 'Number of workers with a commute between 10 and 14 minutes', 'The number of workers over the age of 16 who do not work from home and commute in between 10 and 14 minutes in a geographic area', 2, 'sum', 1, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (639, NULL, NULL, '"us.census.acs".B08134004', 'Numeric', 'Number of workers with a commute between 15 and 19 minutes', 'The number of workers over the age of 16 who do not work from home and commute in between 15 and 19 minutes in a geographic area', 2, 'sum', 1, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (640, NULL, NULL, '"us.census.acs".B08134005', 'Numeric', 'Number of workers with a commute between 20 and 24 minutes', 'The number of workers over the age of 16 who do not work from home and commute in between 20 and 24 minutes in a geographic area', 2, 'sum', 1, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (641, NULL, NULL, '"us.census.acs".B08134006', 'Numeric', 'Number of workers with a commute between 25 and 29 minutes', 'The number of workers over the age of 16 who do not work from home and commute in between 25 and 29 minutes in a geographic area', 2, 'sum', 1, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (642, NULL, NULL, '"us.census.acs".B08134007', 'Numeric', 'Number of workers with a commute between 30 and 34 minutes', 'The number of workers over the age of 16 who do not work from home and commute in between 30 and 34 minutes in a geographic area', 2, 'sum', 1, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (643, NULL, NULL, '"us.census.acs".B08134008', 'Numeric', 'Number of workers with a commute between 35 and 44 minutes', 'The number of workers over the age of 16 who do not work from home and commute in between 35 and 44 minutes in a geographic area', 2, 'sum', 1, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (644, NULL, NULL, '"us.census.acs".B08134009', 'Numeric', 'Number of workers with a commute between 45 and 59 minutes', 'The number of workers over the age of 16 who do not work from home and commute in between 45 and 59 minutes in a geographic area', 2, 'sum', 1, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (645, NULL, NULL, '"us.census.acs".B08134010', 'Numeric', 'Number of workers with a commute of over 60 minutes', 'The number of workers over the age of 16 who do not work from home and commute in over 60 minutes in a geographic area', 2, 'sum', 1, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (646, NULL, NULL, '"us.census.acs".B19001002', 'Numeric', 'Households with income less than $10,000', 'The number of households in a geographic area whose annual income was less than $10,000.', 2, 'sum', 1, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (647, NULL, NULL, '"us.census.acs".B19001003', 'Numeric', 'Households with income of $10,000 to $14,999', 'The number of households in a geographic area whose annual income was between $10,000 and $14,999.', 2, NULL, 1, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (648, NULL, NULL, '"us.census.acs".B19001004', 'Numeric', 'Households with income of $15,000 to $19,999', 'The number of households in a geographic area whose annual income was between $15,000 and $19,999.', 2, NULL, 1, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (650, NULL, NULL, '"us.census.acs".B19001006', 'Numeric', 'Households with income of $25,000 To $29,999', 'The number of households in a geographic area whose annual income was between $20,000 and $24,999.', 2, NULL, 1, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (651, NULL, NULL, '"us.census.acs".B19001007', 'Numeric', 'Households with income of $30,000 To $34,999', 'The number of households in a geographic area whose annual income was between $30,000 and $34,999.', 2, NULL, 1, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (652, NULL, NULL, '"us.census.acs".B19001008', 'Numeric', 'Households with income of $35,000 To $39,999', 'The number of households in a geographic area whose annual income was between $35,000 and $39,999.', 2, NULL, 1, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (653, NULL, NULL, '"us.census.acs".B19001009', 'Numeric', 'Households with income of $40,000 To $44,999', 'The number of households in a geographic area whose annual income was between $40,000 and $44,999.', 2, NULL, 1, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (656, NULL, NULL, '"us.census.acs".B19001012', 'Numeric', 'Households with income of $60,000 To $74,999', 'The number of households in a geographic area whose annual income was between $60,000 and $74,999.', 2, NULL, 1, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (657, NULL, NULL, '"us.census.acs".B19001013', 'Numeric', 'Households with income of $75,000 To $99,999', 'The number of households in a geographic area whose annual income was between $75,000 and $99,999.', 2, NULL, 1, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (658, NULL, NULL, '"us.census.acs".B19001014', 'Numeric', 'Households with income of $100,000 To $124,999', 'The number of households in a geographic area whose annual income was between $100,000 and $124,999.', 2, NULL, 1, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (659, NULL, NULL, '"us.census.acs".B19001015', 'Numeric', 'Households with income of $125,000 To $149,999', 'The number of households in a geographic area whose annual income was between $125,000 and $149,999.', 2, NULL, 1, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (660, NULL, NULL, '"us.census.acs".B19001016', 'Numeric', 'Households with income of $150,000 To $199,999', 'The number of households in a geographic area whose annual income was between $150,000 and $1999,999.', 2, NULL, 1, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (662, NULL, NULL, '"us.ny.nyc.opendata".good_through_date', 'Date', 'Good Through Date', NULL, 0, NULL, 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (663, NULL, NULL, '"us.ny.nyc.opendata".record_type', 'Text', 'Record Type', NULL, 0, NULL, 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (664, NULL, NULL, '"us.ny.nyc.opendata"."us.ny.nyc.opendata".document_id', 'Text', 'Document ID', NULL, 0, NULL, 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (665, NULL, NULL, '"us.ny.nyc.opendata"."us.ny.nyc.opendata".record_type', 'Text', 'Record Type', NULL, 0, NULL, 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (666, NULL, NULL, '"us.ny.nyc.opendata".block', 'Integer', 'Block', NULL, 0, NULL, 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (667, NULL, NULL, '"us.ny.nyc.opendata".lot', 'Integer', 'Lot', NULL, 0, NULL, 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (668, NULL, NULL, '"us.ny.nyc.opendata".easement', 'Text', 'Easement', NULL, 0, NULL, 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (669, NULL, NULL, '"us.ny.nyc.opendata".partial_lot', 'Text', 'Partial Lot', NULL, 0, NULL, 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (670, NULL, NULL, '"us.ny.nyc.opendata".air_rights', 'Text', 'Air Rights', NULL, 0, NULL, 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (671, NULL, NULL, '"us.ny.nyc.opendata".subterranean_rights', 'Text', 'Subterranean Rights', NULL, 0, NULL, 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (672, NULL, NULL, '"us.ny.nyc.opendata".property_type', 'Text', 'Property Type', NULL, 0, NULL, 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (673, NULL, NULL, '"us.ny.nyc.opendata".street_number', 'Text', 'Street Number', NULL, 0, NULL, 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (674, NULL, NULL, '"us.ny.nyc.opendata".street_name', 'Text', 'Street Name', NULL, 0, NULL, 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (675, NULL, NULL, '"us.ny.nyc.opendata".unit', 'Text', 'Unit', NULL, 0, NULL, 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (676, NULL, NULL, '"us.ny.nyc.opendata"."us.ny.nyc.opendata".good_through_date', 'Date', 'Good Through Date', NULL, 0, NULL, 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (677, NULL, NULL, '"us.census.spielman_singleton_segments".X10', 'Text', 'SS_segment_10_clusters', 'Sociodemographic classes from Spielman and Singleton 2015, 10 clusters', 0, NULL, 3, '{"categories": {"Hispanic and Young": "Hispanic and Young description", "Wealthy Nuclear Families": "Wealthy Nuclear Families desc", "Middle Income, Single Family Home": "Middle Income, Single Family Home desc", "Native American": "Native American desc", "Wealthy, urban without Kids": "Wealthy, urban without Kids desc", "Low income and diverse": "Low income and diverse desc", "Wealthy Old Caucasion": "Wealthy Old Caucasion desc", "Low income, mix of minorities": "Low income, mix of minorities desc", "Low income, African American": "Low income, African American desc", "Residential Institutions": "Residential Institutions desc"}}');
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (678, NULL, NULL, '"us.census.spielman_singleton_segments".X2', 'Text', 'SS_segment_2_clusters', 'Sociodemographic classes from Spielman and Singleton 2015, 10 clusters', 0, NULL, 3, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (679, NULL, NULL, '"us.ny.nyc.opendata".crfn', 'Text', 'City Reel File Number', NULL, 0, NULL, 3, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (680, NULL, NULL, '"us.ny.nyc.opendata".borough', 'Text', 'borough', NULL, 0, NULL, 3, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (681, NULL, NULL, '"us.ny.nyc.opendata".doc_type', 'Text', 'Document Type', NULL, 0, NULL, 3, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (682, NULL, NULL, '"us.ny.nyc.opendata".doc_date', 'Text', 'Document Date', NULL, 0, NULL, 3, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (683, NULL, NULL, '"us.ny.nyc.opendata".doc_amt', 'Text', 'Document Amount', NULL, 0, NULL, 3, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (684, NULL, NULL, '"us.ny.nyc.opendata".recorded_filed', 'Text', 'Recorded / Filed', NULL, 0, NULL, 3, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (685, NULL, NULL, '"us.ny.nyc.opendata".modified_date', 'Date', 'Modified Date', NULL, 0, NULL, 3, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (686, NULL, NULL, '"us.ny.nyc.opendata".reel_year', 'Integer', 'Reel Year', NULL, 0, NULL, 3, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (687, NULL, NULL, '"us.ny.nyc.opendata".reel_nbr', 'Text', 'Reel Number', NULL, 0, NULL, 3, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (688, NULL, NULL, '"us.ny.nyc.opendata".reel_page', 'Text', 'Reel Pgae', NULL, 0, NULL, 3, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (689, NULL, NULL, '"us.ny.nyc.opendata".percent_transferred', 'Text', 'precent_transferred', NULL, 0, NULL, 3, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (690, NULL, NULL, '"us.ny.nyc.opendata".party_type', 'Integer', 'Party Type', NULL, 0, NULL, 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (691, NULL, NULL, '"us.ny.nyc.opendata".name', 'Text', 'Name', NULL, 0, NULL, 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (692, NULL, NULL, '"us.ny.nyc.opendata".address1', 'Text', 'Address 1', NULL, 0, NULL, 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (693, NULL, NULL, '"us.ny.nyc.opendata".address2', 'Text', 'Address 2', NULL, 0, NULL, 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (694, NULL, NULL, '"us.ny.nyc.opendata".country', 'Text', 'country', NULL, 0, NULL, 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (695, NULL, NULL, '"us.ny.nyc.opendata".city', 'Text', 'city', NULL, 0, NULL, 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (696, NULL, NULL, '"us.ny.nyc.opendata".state', 'Text', 'state', NULL, 0, NULL, 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (697, NULL, NULL, '"us.ny.nyc.opendata".zip', 'Text', 'zip', NULL, 0, NULL, 0, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (698, NULL, NULL, '"us.census.spielman_singleton_segments".X31', 'Text', 'SS_segment_31_clusters', 'Sociodemographic classes from Spielman and Singleton 2015, 10 clusters', 0, NULL, 3, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (699, NULL, NULL, '"us.census.spielman_singleton_segments".X55', 'Text', 'SS_segment_55_clusters', 'Sociodemographic classes from Spielman and Singleton 2015, 10 clusters', 0, NULL, 3, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (700, NULL, NULL, '"us.census.acs".B01001001_quantile', 'Numeric', 'Quantile:Total Population', 'The total number of all people living in a given geographic area. This is a very useful catch-all denominator when calculating rates.', 0, 'quantile', 3, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (702, NULL, NULL, '"us.census.acs".B01001026_quantile', 'Numeric', 'Quantile:Female Population', 'The number of people within each geography who are female.', 0, 'quantile', 3, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (703, NULL, NULL, '"us.census.acs".B01002001_quantile', 'Numeric', 'Quantile:Median Age', 'The median age of all people in a given geographic area.', 0, 'quantile', 3, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (704, NULL, NULL, '"us.census.acs".B03002003_quantile', 'Numeric', 'Quantile:White Population', 'The number of people identifying as white, non-Hispanic in each geography.', 0, 'quantile', 3, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (705, NULL, NULL, '"us.census.acs".B03002004_quantile', 'Numeric', 'Quantile:Black or African American Population', 'The number of people identifying as black or African American, non-Hispanic in each geography.', 0, 'quantile', 3, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (706, NULL, NULL, '"us.census.acs".B03002006_quantile', 'Numeric', 'Quantile:Asian Population', 'The number of people identifying as Asian, non-Hispanic in each geography.', 0, 'quantile', 3, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (707, NULL, NULL, '"us.census.acs".B03002012_quantile', 'Numeric', 'Quantile:Hispanic Population', 'The number of people identifying as Hispanic or Latino in each geography.', 0, 'quantile', 3, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (708, NULL, NULL, '"us.census.acs".B03002005_quantile', 'Numeric', 'Quantile:American Indian and Alaska Native Population', 'The number of people identifying as American Indian or Alaska native in each geography.', 0, 'quantile', 3, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (709, NULL, NULL, '"us.census.acs".B03002008_quantile', 'Numeric', 'Quantile:Other Race population', 'The number of people identifying as another race in each geography', 0, 'quantile', 3, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (710, NULL, NULL, '"us.census.acs".B03002009_quantile', 'Numeric', 'Quantile:Two or more races population', 'The number of people identifying as two or more races in each geography', 0, 'quantile', 3, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (711, NULL, NULL, '"us.census.acs".B03002002_quantile', 'Numeric', 'Quantile:Population not Hispanic', 'The number of people not identifying as Hispanic or Latino in each geography.', 0, 'quantile', 3, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (712, NULL, NULL, '"us.census.acs".B05001006_quantile', 'Numeric', 'Quantile:Not a U.S. Citizen Population', 'The number of people within each geography who indicated that they are not U.S. citizens.', 0, 'quantile', 3, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (713, NULL, NULL, '"us.census.acs".B08006001_quantile', 'Numeric', 'Quantile:Workers over the Age of 16', 'The number of people in each geography who work. Workers include those employed at private for-profit companies, the self-employed, government workers and non-profit employees.', 0, 'quantile', 3, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (714, NULL, NULL, '"us.census.acs".B08006002_quantile', 'Numeric', 'Quantile:Commuters by Car, Truck, or Van', 'The number of workers age 16 years and over within a geographic area who primarily traveled to work by car, truck or van. This is the principal mode of travel or type of conveyance, by distance rather than time, that the worker usually used to get from home to work.', 0, 'quantile', 3, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (715, NULL, NULL, '"us.census.acs".B08006003_quantile', 'Numeric', 'Quantile:Commuters who drove alone', 'The number of workers age 16 years and over within a geographic area who primarily traveled by car driving alone. This is the principal mode of travel or type of conveyance, by distance rather than time, that the worker usually used to get from home to work.', 0, 'quantile', 3, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (716, NULL, NULL, '"us.census.acs".B08006004_quantile', 'Numeric', 'Quantile:Commuters by Carpool', 'The number of workers age 16 years and over within a geographic area who primarily traveled to work by carpool. This is the principal mode of travel or type of conveyance, by distance rather than time, that the worker usually used to get from home to work.', 0, 'quantile', 3, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (717, NULL, NULL, '"us.census.acs".B08006008_quantile', 'Numeric', 'Quantile:Commuters by Public Transportation', 'The number of workers age 16 years and over within a geographic area who primarily traveled to work by public transportation. This is the principal mode of travel or type of conveyance, by distance rather than time, that the worker usually used to get from home to work.', 0, 'quantile', 3, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (718, NULL, NULL, '"us.census.acs".B08006009_quantile', 'Numeric', 'Quantile:Commuters by Bus', 'The number of workers age 16 years and over within a geographic area who primarily traveled to work by bus. This is the principal mode of travel or type of conveyance, by distance rather than time, that the worker usually used to get from home to work. This is a subset of workers who commuted by public transport.', 0, 'quantile', 3, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (719, NULL, NULL, '"us.census.acs".B08006011_quantile', 'Numeric', 'Quantile:Commuters by Subway or Elevated', 'The number of workers age 16 years and over within a geographic area who primarily traveled to work by subway or elevated train. This is the principal mode of travel or type of conveyance, by distance rather than time, that the worker usually used to get from home to work. This is a subset of workers who commuted by public transport.', 0, 'quantile', 3, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (720, NULL, NULL, '"us.census.acs".B08006015_quantile', 'Numeric', 'Quantile:Walked to Work', 'The number of workers age 16 years and over within a geographic area who primarily walked to work. This would mean that of any way of getting to work, they travelled the most distance walking.', 0, 'quantile', 3, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (721, NULL, NULL, '"us.census.acs".B08006017_quantile', 'Numeric', 'Quantile:Worked at Home', 'The count within a geographical area of workers over the age of 16 who worked at home.', 0, 'quantile', 3, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (722, NULL, NULL, '"us.census.acs".B09001001_quantile', 'Numeric', 'Quantile:children under 18 Years of Age', 'The number of people within each geography who are under 18 years of age.', 0, 'quantile', 3, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (723, NULL, NULL, '"us.census.acs".B11001001_quantile', 'Numeric', 'Quantile:Households', 'A count of the number of households in each geography. A household consists of one or more people who live in the same dwelling and also share at meals or living accommodation, and may consist of a single family or some other grouping of people. ', 0, 'quantile', 3, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (724, NULL, NULL, '"us.census.acs".B14001001_quantile', 'Numeric', 'Quantile:Population 3 Years and Over', 'The total number of people in each geography age 3 years and over. This denominator is mostly used to calculate rates of school enrollment.', 0, 'quantile', 3, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (725, NULL, NULL, '"us.census.acs".B14001002_quantile', 'Numeric', 'Quantile:Students Enrolled in School', 'The total number of people in each geography currently enrolled at any level of school, from nursery or pre-school to advanced post-graduate education. Only includes those over the age of 3.', 0, 'quantile', 3, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (726, NULL, NULL, '"us.census.acs".B14001005_quantile', 'Numeric', 'Quantile:Students Enrolled in Grades 1 to 4', 'The total number of people in each geography currently enrolled in grades 1 through 4 inclusive. This corresponds roughly to elementary school.', 0, 'quantile', 3, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (727, NULL, NULL, '"us.census.acs".B14001006_quantile', 'Numeric', 'Quantile:Students Enrolled in Grades 5 to 8', 'The total number of people in each geography currently enrolled in grades 5 through 8 inclusive. This corresponds roughly to middle school.', 0, 'quantile', 3, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (728, NULL, NULL, '"us.census.acs".B14001007_quantile', 'Numeric', 'Quantile:Students Enrolled in Grades 9 to 12', 'The total number of people in each geography currently enrolled in grades 9 through 12 inclusive. This corresponds roughly to high school.', 0, 'quantile', 3, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (729, NULL, NULL, '"us.census.acs".B14001008_quantile', 'Numeric', 'Quantile:Students Enrolled as Undergraduate in College', 'The number of people in a geographic area who are enrolled in college at the undergraduate level. Enrollment refers to being registered or listed as a student in an educational program leading to a college degree. This may be a public school or college, a private school or college.', 0, 'quantile', 3, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (730, NULL, NULL, '"us.census.acs".B15003001_quantile', 'Numeric', 'Quantile:Population 25 Years and Over', 'The number of people in a geographic area who are over the age of 25. This is used mostly as a denominator of educational attainment.', 0, 'quantile', 3, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (731, NULL, NULL, '"us.census.acs".B15003017_quantile', 'Numeric', 'Quantile:Population Completed High School', 'The number of people in a geographic area over the age of 25 who completed high school, and did not complete a more advanced degree.', 0, 'quantile', 3, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (732, NULL, NULL, '"us.census.acs".B15003019_quantile', 'Numeric', 'Quantile:Population completed less than one year of college, no degree', 'The number of people in a geographic area over the age of 25 who attended college for less than one year and no further.', 0, 'quantile', 3, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (733, NULL, NULL, '"us.census.acs".B15003020_quantile', 'Numeric', 'Quantile:Population completed more than one year of college, no degree', 'The number of people in a geographic area over the age of 25 who attended college for more than one year but did not obtain a degree', 0, 'quantile', 3, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (734, NULL, NULL, '"us.census.acs".B15003021_quantile', 'Numeric', 'Quantile:Population Completed Associate''s Degree', 'The number of people in a geographic area over the age of 25 who obtained a associate''s degree, and did not complete a more advanced degree.', 0, 'quantile', 3, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (735, NULL, NULL, '"us.census.acs".B15003022_quantile', 'Numeric', 'Quantile:Population Completed Bachelor''s Degree', 'The number of people in a geographic area over the age of 25 who obtained a bachelor''s degree, and did not complete a more advanced degree.', 0, 'quantile', 3, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (736, NULL, NULL, '"us.census.acs".B15003023_quantile', 'Numeric', 'Quantile:Population Completed Master''s Degree', 'The number of people in a geographic area over the age of 25 who obtained a master''s degree, but did not complete a more advanced degree.', 0, 'quantile', 3, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (737, NULL, NULL, '"us.census.acs".B16001001_quantile', 'Numeric', 'Quantile:Population 5 Years and Over', 'The number of people in a geographic area who are over the age of 5. This is primarily used as a denominator of measures of language spoken at home.', 0, 'quantile', 3, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (738, NULL, NULL, '"us.census.acs".B16001002_quantile', 'Numeric', 'Quantile:Speaks only English at Home', 'The number of people in a geographic area over age 5 who speak only English at home.', 0, 'quantile', 3, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (739, NULL, NULL, '"us.census.acs".B16001003_quantile', 'Numeric', 'Quantile:Speaks Spanish at Home', 'The number of people in a geographic area over age 5 who speak Spanish at home, possibly in addition to other languages.', 0, 'quantile', 3, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (740, NULL, NULL, '"us.census.acs".B17001001_quantile', 'Numeric', 'Quantile:Population for Whom Poverty Status Determined', 'The number of people in each geography who could be identified as either living in poverty or not. This should be used as the denominator when calculating poverty rates, as it excludes people for whom it was not possible to determine poverty.', 0, 'quantile', 3, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (741, NULL, NULL, '"us.census.acs".B17001002_quantile', 'Numeric', 'Quantile:Income In The Past 12 Months Below Poverty Level', 'The number of people in a geographic area who are part of a family (which could be just them as an individual) determined to be "in poverty" following the Office of Management and Budget''s Directive 14. (https://www.census.gov/hhes/povmeas/methodology/ombdir14.html)', 0, 'quantile', 3, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (742, NULL, NULL, '"us.census.acs".B19013001_quantile', 'Numeric', 'Quantile:Median Household Income in the past 12 Months', 'Within a geographic area, the median income received by every household on a regular basis before payments for personal income taxes, social security, union dues, medicare deductions, etc. It includes income received from wages, salary, commissions, bonuses, and tips; self-employment income from own nonfarm or farm businesses, including proprietorships and partnerships; interest, dividends, net rental income, royalty income, or income from estates and trusts; Social Security or Railroad Retirement income; Supplemental Security Income (SSI); any cash public assistance or welfare payments from the state or local welfare office; retirement, survivor, or disability benefits; and any other sources of income received regularly such as Veterans'' (VA) payments, unemployment and/or worker''s compensation, child support, and alimony.', 0, 'quantile', 3, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (743, NULL, NULL, '"us.census.acs".B19083001_quantile', 'Numeric', 'Quantile:Gini Index', '', 0, 'quantile', 3, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (744, NULL, NULL, '"us.census.acs".B19301001_quantile', 'Numeric', 'Quantile:Per Capita Income in the past 12 Months', '', 0, 'quantile', 3, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (745, NULL, NULL, '"us.census.acs".B25001001_quantile', 'Numeric', 'Quantile:Housing Units', 'A count of housing units in each geography. A housing unit is a house, an apartment, a mobile home or trailer, a group of rooms, or a single room occupied as separate living quarters, or if vacant, intended for occupancy as separate living quarters.', 0, 'quantile', 3, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (746, NULL, NULL, '"us.census.acs".B25002003_quantile', 'Numeric', 'Quantile:Vacant Housing Units', 'The count of vacant housing units in a geographic area. A housing unit is vacant if no one is living in it at the time of enumeration, unless its occupants are only temporarily absent. Units temporarily occupied at the time of enumeration entirely by people who have a usual residence elsewhere are also classified as vacant.', 0, 'quantile', 3, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (747, NULL, NULL, '"us.census.acs".B25004002_quantile', 'Numeric', 'Quantile:Vacant Housing Units for Rent', 'The count of vacant housing units in a geographic area that are for rent. A housing unit is vacant if no one is living in it at the time of enumeration, unless its occupants are only temporarily absent. Units temporarily occupied at the time of enumeration entirely by people who have a usual residence elsewhere are also classified as vacant.', 0, 'quantile', 3, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (748, NULL, NULL, '"us.census.acs".B25004004_quantile', 'Numeric', 'Quantile:Vacant Housing Units for Sale', 'The count of vacant housing units in a geographic area that are for sale. A housing unit is vacant if no one is living in it at the time of enumeration, unless its occupants are only temporarily absent. Units temporarily occupied at the time of enumeration entirely by people who have a usual residence elsewhere are also classified as vacant.', 0, 'quantile', 3, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (749, NULL, NULL, '"us.census.acs".B25058001_quantile', 'Numeric', 'Quantile:Median Rent', 'The median contract rent within a geographic area. The contract rent is the monthly rent agreed to or contracted for, regardless of any furnishings, utilities, fees, meals, or services that may be included. For vacant units, it is the monthly rent asked for the rental unit at the time of interview.', 0, 'quantile', 3, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (750, NULL, NULL, '"us.census.acs".B08134004_quantile', 'Numeric', 'Quantile:Number of workers with a commute between 15 and 19 minutes', 'The number of workers over the age of 16 who do not work from home and commute in between 15 and 19 minutes in a geographic area', 0, 'quantile', 3, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (751, NULL, NULL, '"us.census.acs".B25071001_quantile', 'Numeric', 'Quantile:Percent of Household Income Spent on Rent', 'Within a geographic area, the median percentage of household income which was spent on gross rent. Gross rent is the amount of the contract rent plus the estimated average monthly cost of utilities (electricity, gas, water, sewer etc.) and fuels (oil, coal, wood, etc.) if these are paid by the renter. Household income is the sum of the income of all people 15 years and older living in the household.', 0, 'quantile', 3, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (753, NULL, NULL, '"us.census.acs".B25075025_quantile', 'Numeric', 'Quantile:Owner-occupied Housing Units valued at $1,000,000 or more.', 'The count of owner occupied housing units in a geographic area that are valued at $1,000,000 or more. Value is the respondent''s estimate of how much the property (house and lot, mobile home and lot, or condominium unit) would sell for if it were for sale.', 0, 'quantile', 3, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (795, NULL, NULL, '"us.census.acs".B08134006_quantile', 'Numeric', 'Quantile:Number of workers with a commute between 25 and 29 minutes', 'The number of workers over the age of 16 who do not work from home and commute in between 25 and 29 minutes in a geographic area', 0, 'quantile', 3, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (754, NULL, NULL, '"us.census.acs".B25081002_quantile', 'Numeric', 'Quantile:Owner-occupied Housing Units with a Mortgage', 'The count of housing units within a geographic area that are mortagaged. "Mortgage" refers to all forms of debt where the property is pledged as security for repayment of the debt, including deeds of trust, trust deed, contracts to purchase, land contracts, junior mortgages, and home equity loans.', 0, 'quantile', 3, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (755, NULL, NULL, '"us.census.acs".B23008002_quantile', 'Numeric', 'Quantile:Families with young children (under 6 years of age)', '', 0, 'quantile', 3, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (756, NULL, NULL, '"us.census.acs".B23008003_quantile', 'Numeric', 'Quantile:Two-parent families with young children (under 6 years of age)', '', 0, 'quantile', 3, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (757, NULL, NULL, '"us.census.acs".B23008004_quantile', 'Numeric', 'Quantile:Two-parent families, both parents in labor force with young children (under 6 years of age)', '', 0, 'quantile', 3, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (758, NULL, NULL, '"us.census.acs".B23008005_quantile', 'Numeric', 'Quantile:Two-parent families, father only in labor force with young children (under 6 years of age)', '', 0, 'quantile', 3, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (759, NULL, NULL, '"us.census.acs".B23008006_quantile', 'Numeric', 'Quantile:Two-parent families, mother only in labor force with young children (under 6 years of age)', '', 0, 'quantile', 3, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (760, NULL, NULL, '"us.census.acs".B23008007_quantile', 'Numeric', 'Quantile:Two-parent families, neither parent in labor force with young children (under 6 years of age)', '', 0, 'quantile', 3, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (761, NULL, NULL, '"us.census.acs".B23008008_quantile', 'Numeric', 'Quantile:One-parent families with young children (under 6 years of age)', '', 0, 'quantile', 3, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (762, NULL, NULL, '"us.census.acs".B23008009_quantile', 'Numeric', 'Quantile:One-parent families, father, with young children (under 6 years of age)', '', 0, 'quantile', 3, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (763, NULL, NULL, '"us.census.acs".B15001027_quantile', 'Numeric', 'Quantile:Men age 45 to 64 ("middle aged")', '0', 0, 'quantile', 3, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (764, NULL, NULL, '"us.census.acs".B01001015_quantile', 'Numeric', 'Quantile:Men age 45 to 49', '', 0, 'quantile', 3, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (765, NULL, NULL, '"us.census.acs".B01001016_quantile', 'Numeric', 'Quantile:Men age 50 to 54', '', 0, 'quantile', 3, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (766, NULL, NULL, '"us.census.acs".B01001017_quantile', 'Numeric', 'Quantile:Men age 55 to 59', '', 0, 'quantile', 3, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (767, NULL, NULL, '"us.census.acs".B01001018_quantile', 'Numeric', 'Quantile:Men age 60 to 61', '', 0, 'quantile', 3, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (768, NULL, NULL, '"us.census.acs".B01001019_quantile', 'Numeric', 'Quantile:Men age 62 to 64', '', 0, 'quantile', 3, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (769, NULL, NULL, '"us.census.acs".B01001B012_quantile', 'Numeric', 'Quantile:Black Men age 45 to 54', '', 0, 'quantile', 3, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (770, NULL, NULL, '"us.census.acs".B01001B013_quantile', 'Numeric', 'Quantile:Black Men age 55 to 64', '', 0, 'quantile', 3, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (771, NULL, NULL, '"us.census.acs".B01001I012_quantile', 'Numeric', 'Quantile:Hispanic Men age 45 to 54', '', 0, 'quantile', 3, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (772, NULL, NULL, '"us.census.acs".B01001I013_quantile', 'Numeric', 'Quantile:Hispanic Men age 55 to 64', '', 0, 'quantile', 3, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (773, NULL, NULL, '"us.census.acs".B01001H012_quantile', 'Numeric', 'Quantile:White Men age 45 to 54', '', 0, 'quantile', 3, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (774, NULL, NULL, '"us.census.acs".B01001H013_quantile', 'Numeric', 'Quantile:White Men age 55 to 64', '', 0, 'quantile', 3, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (775, NULL, NULL, '"us.census.acs".B01001D012_quantile', 'Numeric', 'Quantile:Asian Men age 45 to 54', '', 0, 'quantile', 3, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (776, NULL, NULL, '"us.census.acs".B01001D013_quantile', 'Numeric', 'Quantile:Asian Men age 55 to 64', '', 0, 'quantile', 3, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (777, NULL, NULL, '"us.census.acs".B15001028_quantile', 'Numeric', 'Quantile:Men age 45 to 64 who attained less than a 9th grade education', '', 0, 'quantile', 3, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (778, NULL, NULL, '"us.census.acs".B15001029_quantile', 'Numeric', 'Quantile:Men age 45 to 64 who attained between 9th and 12th grade, no diploma', '', 0, 'quantile', 3, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (779, NULL, NULL, '"us.census.acs".B15001030_quantile', 'Numeric', 'Quantile:Men age 45 to 64 who completed high school or obtained GED', '', 0, 'quantile', 3, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (780, NULL, NULL, '"us.census.acs".B15001031_quantile', 'Numeric', 'Quantile:Men age 45 to 64 who completed some college, no degree', '', 0, 'quantile', 3, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (781, NULL, NULL, '"us.census.acs".B15001032_quantile', 'Numeric', 'Quantile:Men age 45 to 64 who obtained an associate''s degree', '', 0, 'quantile', 3, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (782, NULL, NULL, '"us.census.acs".B15001033_quantile', 'Numeric', 'Quantile:Men age 45 to 64 who obtained a bachelor''s degree', '', 0, 'quantile', 3, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (783, NULL, NULL, '"us.census.acs".B15001034_quantile', 'Numeric', 'Quantile:Men age 45 to 64 who obtained a graduate or professional degree', '', 0, 'quantile', 3, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (784, NULL, NULL, '"us.census.acs".B23008010_quantile', 'Numeric', 'Quantile:One-parent families, father in labor force, with young children (under 6 years of age)', '', 0, 'quantile', 3, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (785, NULL, NULL, '"us.census.acs".B12005001_quantile', 'Numeric', 'Quantile:Population 15 Years and Over', 'The number of people in a geographic area who are over the age of 15. This is used mostly as a denominator of marital status.', 0, 'quantile', 3, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (786, NULL, NULL, '"us.census.acs".B12005002_quantile', 'Numeric', 'Quantile:Never Married', 'The number of people in a geographic area who have never been married.', 0, 'quantile', 3, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (787, NULL, NULL, '"us.census.acs".B12005005_quantile', 'Numeric', 'Quantile:Currently married', 'The number of people in a geographic area who are currently married', 0, 'quantile', 3, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (788, NULL, NULL, '"us.census.acs".B12005008_quantile', 'Numeric', 'Quantile:Married but separated', 'The number of people in a geographic area who are married but separated', 0, 'quantile', 3, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (789, NULL, NULL, '"us.census.acs".B12005012_quantile', 'Numeric', 'Quantile:Widowed', 'The number of people in a geographic area who are widowed', 0, 'quantile', 3, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (790, NULL, NULL, '"us.census.acs".B12005015_quantile', 'Numeric', 'Quantile:Divorced', 'The number of people in a geographic area who are divorced', 0, 'quantile', 3, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (791, NULL, NULL, '"us.census.acs".B08134001_quantile', 'Numeric', 'Quantile:Workers age 16 and over who do not work from home', 'The number of workers over the age of 16 who do not work from home in a geographic area', 0, 'quantile', 3, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (792, NULL, NULL, '"us.census.acs".B08134002_quantile', 'Numeric', 'Quantile:Number of workers with less than 10 minute commute', 'The number of workers over the age of 16 who do not work from home and commute in less than 10 minutes in a geographic area', 0, 'quantile', 3, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (793, NULL, NULL, '"us.census.acs".B08134003_quantile', 'Numeric', 'Quantile:Number of workers with a commute between 10 and 14 minutes', 'The number of workers over the age of 16 who do not work from home and commute in between 10 and 14 minutes in a geographic area', 0, 'quantile', 3, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (794, NULL, NULL, '"us.census.acs".B08134005_quantile', 'Numeric', 'Quantile:Number of workers with a commute between 20 and 24 minutes', 'The number of workers over the age of 16 who do not work from home and commute in between 20 and 24 minutes in a geographic area', 0, 'quantile', 3, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (796, NULL, NULL, '"us.census.acs".B08134007_quantile', 'Numeric', 'Quantile:Number of workers with a commute between 30 and 34 minutes', 'The number of workers over the age of 16 who do not work from home and commute in between 30 and 34 minutes in a geographic area', 0, 'quantile', 3, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (797, NULL, NULL, '"us.census.acs".B08134008_quantile', 'Numeric', 'Quantile:Number of workers with a commute between 35 and 44 minutes', 'The number of workers over the age of 16 who do not work from home and commute in between 35 and 44 minutes in a geographic area', 0, 'quantile', 3, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (798, NULL, NULL, '"us.census.acs".B08134009_quantile', 'Numeric', 'Quantile:Number of workers with a commute between 45 and 59 minutes', 'The number of workers over the age of 16 who do not work from home and commute in between 45 and 59 minutes in a geographic area', 0, 'quantile', 3, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (799, NULL, NULL, '"us.census.acs".B08134010_quantile', 'Numeric', 'Quantile:Number of workers with a commute of over 60 minutes', 'The number of workers over the age of 16 who do not work from home and commute in over 60 minutes in a geographic area', 0, 'quantile', 3, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (800, NULL, NULL, '"us.census.acs".B08135001_quantile', 'Numeric', 'Quantile:Aggregate travel time to work', 'The total number of minutes every worker over the age of 16 who did not work from home spent spent commuting to work in one day in a geographic area', 0, 'quantile', 3, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (801, NULL, NULL, '"us.census.acs".B19001002_quantile', 'Numeric', 'Quantile:Households with income less than $10,000', 'The number of households in a geographic area whose annual income was less than $10,000.', 0, 'quantile', 3, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (802, NULL, NULL, '"us.census.acs".B19001003_quantile', 'Numeric', 'Quantile:Households with income of $10,000 to $14,999', 'The number of households in a geographic area whose annual income was between $10,000 and $14,999.', 0, 'quantile', 3, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (803, NULL, NULL, '"us.census.acs".B19001004_quantile', 'Numeric', 'Quantile:Households with income of $15,000 to $19,999', 'The number of households in a geographic area whose annual income was between $15,000 and $19,999.', 0, 'quantile', 3, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (804, NULL, NULL, '"us.census.acs".B19001005_quantile', 'Numeric', 'Quantile:Households with income of $20,000 To $24,999', 'The number of households in a geographic area whose annual income was between $20,000 and $24,999.', 0, 'quantile', 3, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (805, NULL, NULL, '"us.census.acs".B19001006_quantile', 'Numeric', 'Quantile:Households with income of $25,000 To $29,999', 'The number of households in a geographic area whose annual income was between $20,000 and $24,999.', 0, 'quantile', 3, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (806, NULL, NULL, '"us.census.acs".B19001007_quantile', 'Numeric', 'Quantile:Households with income of $30,000 To $34,999', 'The number of households in a geographic area whose annual income was between $30,000 and $34,999.', 0, 'quantile', 3, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (807, NULL, NULL, '"us.census.acs".B19001008_quantile', 'Numeric', 'Quantile:Households with income of $35,000 To $39,999', 'The number of households in a geographic area whose annual income was between $35,000 and $39,999.', 0, 'quantile', 3, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (808, NULL, NULL, '"us.census.acs".B19001009_quantile', 'Numeric', 'Quantile:Households with income of $40,000 To $44,999', 'The number of households in a geographic area whose annual income was between $40,000 and $44,999.', 0, 'quantile', 3, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (809, NULL, NULL, '"us.census.acs".B19001010_quantile', 'Numeric', 'Quantile:Households with income of $45,000 To $49,999', 'The number of households in a geographic area whose annual income was between $45,000 and $49,999.', 0, 'quantile', 3, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (810, NULL, NULL, '"us.census.acs".B19001011_quantile', 'Numeric', 'Quantile:Households with income of $50,000 To $59,999', 'The number of households in a geographic area whose annual income was between $50,000 and $59,999.', 0, 'quantile', 3, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (811, NULL, NULL, '"us.census.acs".B19001012_quantile', 'Numeric', 'Quantile:Households with income of $60,000 To $74,999', 'The number of households in a geographic area whose annual income was between $60,000 and $74,999.', 0, 'quantile', 3, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (812, NULL, NULL, '"us.census.acs".B19001013_quantile', 'Numeric', 'Quantile:Households with income of $75,000 To $99,999', 'The number of households in a geographic area whose annual income was between $75,000 and $99,999.', 0, 'quantile', 3, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (813, NULL, NULL, '"us.census.acs".B19001014_quantile', 'Numeric', 'Quantile:Households with income of $100,000 To $124,999', 'The number of households in a geographic area whose annual income was between $100,000 and $124,999.', 0, 'quantile', 3, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (814, NULL, NULL, '"us.census.acs".B19001015_quantile', 'Numeric', 'Quantile:Households with income of $125,000 To $149,999', 'The number of households in a geographic area whose annual income was between $125,000 and $149,999.', 0, 'quantile', 3, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (815, NULL, NULL, '"us.census.acs".B19001016_quantile', 'Numeric', 'Quantile:Households with income of $150,000 To $199,999', 'The number of households in a geographic area whose annual income was between $150,000 and $1999,999.', 0, 'quantile', 3, NULL);
INSERT INTO obs_column (cartodb_id, the_geom, the_geom_webmercator, id, type, name, description, weight, aggregate, version, extra) VALUES (816, NULL, NULL, '"us.census.acs".B19001017_quantile', 'Numeric', 'Quantile:Households with income of $200,000 Or More', 'The number of households in a geographic area whose annual income was more than $200,000.', 0, 'quantile', 3, NULL);
CREATE SCHEMA IF NOT EXISTS observatory;
ALTER TABLE obs_column SET SCHEMA observatory;

File diff suppressed because it is too large Load Diff

View File

@@ -1,294 +0,0 @@
CREATE TABLE obs_column_to_column(cartodb_id bigint, the_geom geometry, the_geom_webmercator geometry, source_id text, target_id text, reltype text);
INSERT INTO obs_column_to_column (cartodb_id, the_geom, the_geom_webmercator, source_id, target_id, reltype) VALUES (1, NULL, NULL, '"es.ine".pop_100_more', '"es.ine".total_pop', 'denominator');
INSERT INTO obs_column_to_column (cartodb_id, the_geom, the_geom_webmercator, source_id, target_id, reltype) VALUES (2, NULL, NULL, '"es.ine".pop_0_4', '"es.ine".total_pop', 'denominator');
INSERT INTO obs_column_to_column (cartodb_id, the_geom, the_geom_webmercator, source_id, target_id, reltype) VALUES (3, NULL, NULL, '"es.ine".pop_5_9', '"es.ine".total_pop', 'denominator');
INSERT INTO obs_column_to_column (cartodb_id, the_geom, the_geom_webmercator, source_id, target_id, reltype) VALUES (4, NULL, NULL, '"es.ine".pop_10_14', '"es.ine".total_pop', 'denominator');
INSERT INTO obs_column_to_column (cartodb_id, the_geom, the_geom_webmercator, source_id, target_id, reltype) VALUES (5, NULL, NULL, '"es.ine".pop_15_19', '"es.ine".total_pop', 'denominator');
INSERT INTO obs_column_to_column (cartodb_id, the_geom, the_geom_webmercator, source_id, target_id, reltype) VALUES (6, NULL, NULL, '"es.ine".pop_20_24', '"es.ine".total_pop', 'denominator');
INSERT INTO obs_column_to_column (cartodb_id, the_geom, the_geom_webmercator, source_id, target_id, reltype) VALUES (7, NULL, NULL, '"es.ine".pop_25_29', '"es.ine".total_pop', 'denominator');
INSERT INTO obs_column_to_column (cartodb_id, the_geom, the_geom_webmercator, source_id, target_id, reltype) VALUES (8, NULL, NULL, '"es.ine".pop_30_34', '"es.ine".total_pop', 'denominator');
INSERT INTO obs_column_to_column (cartodb_id, the_geom, the_geom_webmercator, source_id, target_id, reltype) VALUES (9, NULL, NULL, '"es.ine".pop_35_39', '"es.ine".total_pop', 'denominator');
INSERT INTO obs_column_to_column (cartodb_id, the_geom, the_geom_webmercator, source_id, target_id, reltype) VALUES (10, NULL, NULL, '"es.ine".pop_40_44', '"es.ine".total_pop', 'denominator');
INSERT INTO obs_column_to_column (cartodb_id, the_geom, the_geom_webmercator, source_id, target_id, reltype) VALUES (11, NULL, NULL, '"es.ine".pop_45_49', '"es.ine".total_pop', 'denominator');
INSERT INTO obs_column_to_column (cartodb_id, the_geom, the_geom_webmercator, source_id, target_id, reltype) VALUES (12, NULL, NULL, '"es.ine".pop_50_54', '"es.ine".total_pop', 'denominator');
INSERT INTO obs_column_to_column (cartodb_id, the_geom, the_geom_webmercator, source_id, target_id, reltype) VALUES (13, NULL, NULL, '"es.ine".pop_55_59', '"es.ine".total_pop', 'denominator');
INSERT INTO obs_column_to_column (cartodb_id, the_geom, the_geom_webmercator, source_id, target_id, reltype) VALUES (14, NULL, NULL, '"es.ine".pop_60_64', '"es.ine".total_pop', 'denominator');
INSERT INTO obs_column_to_column (cartodb_id, the_geom, the_geom_webmercator, source_id, target_id, reltype) VALUES (15, NULL, NULL, '"es.ine".pop_65_69', '"es.ine".total_pop', 'denominator');
INSERT INTO obs_column_to_column (cartodb_id, the_geom, the_geom_webmercator, source_id, target_id, reltype) VALUES (16, NULL, NULL, '"es.ine".pop_70_74', '"es.ine".total_pop', 'denominator');
INSERT INTO obs_column_to_column (cartodb_id, the_geom, the_geom_webmercator, source_id, target_id, reltype) VALUES (17, NULL, NULL, '"es.ine".pop_75_79', '"es.ine".total_pop', 'denominator');
INSERT INTO obs_column_to_column (cartodb_id, the_geom, the_geom_webmercator, source_id, target_id, reltype) VALUES (18, NULL, NULL, '"es.ine".pop_80_84', '"es.ine".total_pop', 'denominator');
INSERT INTO obs_column_to_column (cartodb_id, the_geom, the_geom_webmercator, source_id, target_id, reltype) VALUES (19, NULL, NULL, '"es.ine".pop_85_89', '"es.ine".total_pop', 'denominator');
INSERT INTO obs_column_to_column (cartodb_id, the_geom, the_geom_webmercator, source_id, target_id, reltype) VALUES (20, NULL, NULL, '"es.ine".pop_90_94', '"es.ine".total_pop', 'denominator');
INSERT INTO obs_column_to_column (cartodb_id, the_geom, the_geom_webmercator, source_id, target_id, reltype) VALUES (21, NULL, NULL, '"es.ine".pop_95_99', '"es.ine".total_pop', 'denominator');
INSERT INTO obs_column_to_column (cartodb_id, the_geom, the_geom_webmercator, source_id, target_id, reltype) VALUES (22, NULL, NULL, '"us.census.lodes".jobs_firm_age_500_more_employees', '"us.census.lodes".total_jobs', 'denominator');
INSERT INTO obs_column_to_column (cartodb_id, the_geom, the_geom_webmercator, source_id, target_id, reltype) VALUES (23, NULL, NULL, '"us.census.lodes".jobs_age_29_or_younger', '"us.census.lodes".total_jobs', 'denominator');
INSERT INTO obs_column_to_column (cartodb_id, the_geom, the_geom_webmercator, source_id, target_id, reltype) VALUES (24, NULL, NULL, '"us.census.lodes".jobs_age_30_to_54', '"us.census.lodes".total_jobs', 'denominator');
INSERT INTO obs_column_to_column (cartodb_id, the_geom, the_geom_webmercator, source_id, target_id, reltype) VALUES (25, NULL, NULL, '"us.census.lodes".jobs_age_55_or_older', '"us.census.lodes".total_jobs', 'denominator');
INSERT INTO obs_column_to_column (cartodb_id, the_geom, the_geom_webmercator, source_id, target_id, reltype) VALUES (26, NULL, NULL, '"us.census.lodes".jobs_earning_15000_or_less', '"us.census.lodes".total_jobs', 'denominator');
INSERT INTO obs_column_to_column (cartodb_id, the_geom, the_geom_webmercator, source_id, target_id, reltype) VALUES (27, NULL, NULL, '"us.census.lodes".jobs_earning_15001_to_40000', '"us.census.lodes".total_jobs', 'denominator');
INSERT INTO obs_column_to_column (cartodb_id, the_geom, the_geom_webmercator, source_id, target_id, reltype) VALUES (28, NULL, NULL, '"us.census.lodes".jobs_earning_40001_or_more', '"us.census.lodes".total_jobs', 'denominator');
INSERT INTO obs_column_to_column (cartodb_id, the_geom, the_geom_webmercator, source_id, target_id, reltype) VALUES (29, NULL, NULL, '"us.census.lodes".jobs_11_agriculture_forestry_fishing', '"us.census.lodes".total_jobs', 'denominator');
INSERT INTO obs_column_to_column (cartodb_id, the_geom, the_geom_webmercator, source_id, target_id, reltype) VALUES (30, NULL, NULL, '"us.census.lodes".jobs_21_mining_quarrying_oil_gas', '"us.census.lodes".total_jobs', 'denominator');
INSERT INTO obs_column_to_column (cartodb_id, the_geom, the_geom_webmercator, source_id, target_id, reltype) VALUES (31, NULL, NULL, '"us.census.lodes".jobs_22_utilities', '"us.census.lodes".total_jobs', 'denominator');
INSERT INTO obs_column_to_column (cartodb_id, the_geom, the_geom_webmercator, source_id, target_id, reltype) VALUES (32, NULL, NULL, '"us.census.lodes".jobs_23_construction', '"us.census.lodes".total_jobs', 'denominator');
INSERT INTO obs_column_to_column (cartodb_id, the_geom, the_geom_webmercator, source_id, target_id, reltype) VALUES (33, NULL, NULL, '"us.census.lodes".jobs_31_33_manufacturing', '"us.census.lodes".total_jobs', 'denominator');
INSERT INTO obs_column_to_column (cartodb_id, the_geom, the_geom_webmercator, source_id, target_id, reltype) VALUES (34, NULL, NULL, '"us.census.lodes".jobs_42_wholesale_trade', '"us.census.lodes".total_jobs', 'denominator');
INSERT INTO obs_column_to_column (cartodb_id, the_geom, the_geom_webmercator, source_id, target_id, reltype) VALUES (35, NULL, NULL, '"us.census.lodes".jobs_44_45_retail_trade', '"us.census.lodes".total_jobs', 'denominator');
INSERT INTO obs_column_to_column (cartodb_id, the_geom, the_geom_webmercator, source_id, target_id, reltype) VALUES (36, NULL, NULL, '"us.census.lodes".jobs_48_49_transport_warehousing', '"us.census.lodes".total_jobs', 'denominator');
INSERT INTO obs_column_to_column (cartodb_id, the_geom, the_geom_webmercator, source_id, target_id, reltype) VALUES (37, NULL, NULL, '"us.census.lodes".jobs_51_information', '"us.census.lodes".total_jobs', 'denominator');
INSERT INTO obs_column_to_column (cartodb_id, the_geom, the_geom_webmercator, source_id, target_id, reltype) VALUES (38, NULL, NULL, '"us.census.lodes".jobs_52_finance_and_insurance', '"us.census.lodes".total_jobs', 'denominator');
INSERT INTO obs_column_to_column (cartodb_id, the_geom, the_geom_webmercator, source_id, target_id, reltype) VALUES (39, NULL, NULL, '"us.census.lodes".jobs_53_real_estate_rental_leasing', '"us.census.lodes".total_jobs', 'denominator');
INSERT INTO obs_column_to_column (cartodb_id, the_geom, the_geom_webmercator, source_id, target_id, reltype) VALUES (40, NULL, NULL, '"us.census.lodes".jobs_54_professional_scientific_tech_services', '"us.census.lodes".total_jobs', 'denominator');
INSERT INTO obs_column_to_column (cartodb_id, the_geom, the_geom_webmercator, source_id, target_id, reltype) VALUES (41, NULL, NULL, '"us.census.lodes".jobs_55_management_of_companies_enterprises', '"us.census.lodes".total_jobs', 'denominator');
INSERT INTO obs_column_to_column (cartodb_id, the_geom, the_geom_webmercator, source_id, target_id, reltype) VALUES (42, NULL, NULL, '"us.census.lodes".jobs_56_admin_support_waste_management', '"us.census.lodes".total_jobs', 'denominator');
INSERT INTO obs_column_to_column (cartodb_id, the_geom, the_geom_webmercator, source_id, target_id, reltype) VALUES (43, NULL, NULL, '"us.census.lodes".jobs_61_educational_services', '"us.census.lodes".total_jobs', 'denominator');
INSERT INTO obs_column_to_column (cartodb_id, the_geom, the_geom_webmercator, source_id, target_id, reltype) VALUES (44, NULL, NULL, '"us.census.lodes".jobs_62_healthcare_social_assistance', '"us.census.lodes".total_jobs', 'denominator');
INSERT INTO obs_column_to_column (cartodb_id, the_geom, the_geom_webmercator, source_id, target_id, reltype) VALUES (45, NULL, NULL, '"us.census.lodes".jobs_71_arts_entertainment_recreation', '"us.census.lodes".total_jobs', 'denominator');
INSERT INTO obs_column_to_column (cartodb_id, the_geom, the_geom_webmercator, source_id, target_id, reltype) VALUES (46, NULL, NULL, '"us.census.lodes".jobs_72_accommodation_and_food', '"us.census.lodes".total_jobs', 'denominator');
INSERT INTO obs_column_to_column (cartodb_id, the_geom, the_geom_webmercator, source_id, target_id, reltype) VALUES (47, NULL, NULL, '"us.census.lodes".jobs_81_other_services_except_public_admin', '"us.census.lodes".total_jobs', 'denominator');
INSERT INTO obs_column_to_column (cartodb_id, the_geom, the_geom_webmercator, source_id, target_id, reltype) VALUES (48, NULL, NULL, '"us.census.lodes".jobs_92_public_administration', '"us.census.lodes".total_jobs', 'denominator');
INSERT INTO obs_column_to_column (cartodb_id, the_geom, the_geom_webmercator, source_id, target_id, reltype) VALUES (49, NULL, NULL, '"us.census.lodes".jobs_white', '"us.census.lodes".total_jobs', 'denominator');
INSERT INTO obs_column_to_column (cartodb_id, the_geom, the_geom_webmercator, source_id, target_id, reltype) VALUES (50, NULL, NULL, '"us.census.lodes".jobs_black', '"us.census.lodes".total_jobs', 'denominator');
INSERT INTO obs_column_to_column (cartodb_id, the_geom, the_geom_webmercator, source_id, target_id, reltype) VALUES (51, NULL, NULL, '"us.census.lodes".jobs_asian', '"us.census.lodes".total_jobs', 'denominator');
INSERT INTO obs_column_to_column (cartodb_id, the_geom, the_geom_webmercator, source_id, target_id, reltype) VALUES (52, NULL, NULL, '"us.census.lodes".jobs_hispanic', '"us.census.lodes".total_jobs', 'denominator');
INSERT INTO obs_column_to_column (cartodb_id, the_geom, the_geom_webmercator, source_id, target_id, reltype) VALUES (53, NULL, NULL, '"us.census.lodes".jobs_less_than_high_school', '"us.census.lodes".total_jobs', 'denominator');
INSERT INTO obs_column_to_column (cartodb_id, the_geom, the_geom_webmercator, source_id, target_id, reltype) VALUES (54, NULL, NULL, '"us.census.lodes".jobs_high_school', '"us.census.lodes".total_jobs', 'denominator');
INSERT INTO obs_column_to_column (cartodb_id, the_geom, the_geom_webmercator, source_id, target_id, reltype) VALUES (55, NULL, NULL, '"us.census.lodes".jobs_some_college', '"us.census.lodes".total_jobs', 'denominator');
INSERT INTO obs_column_to_column (cartodb_id, the_geom, the_geom_webmercator, source_id, target_id, reltype) VALUES (56, NULL, NULL, '"us.census.lodes".jobs_bachelors_or_advanced', '"us.census.lodes".total_jobs', 'denominator');
INSERT INTO obs_column_to_column (cartodb_id, the_geom, the_geom_webmercator, source_id, target_id, reltype) VALUES (57, NULL, NULL, '"us.census.lodes".jobs_male', '"us.census.lodes".total_jobs', 'denominator');
INSERT INTO obs_column_to_column (cartodb_id, the_geom, the_geom_webmercator, source_id, target_id, reltype) VALUES (58, NULL, NULL, '"us.census.lodes".jobs_female', '"us.census.lodes".total_jobs', 'denominator');
INSERT INTO obs_column_to_column (cartodb_id, the_geom, the_geom_webmercator, source_id, target_id, reltype) VALUES (59, NULL, NULL, '"us.census.lodes".jobs_firm_age_0_1_years', '"us.census.lodes".total_jobs', 'denominator');
INSERT INTO obs_column_to_column (cartodb_id, the_geom, the_geom_webmercator, source_id, target_id, reltype) VALUES (60, NULL, NULL, '"us.census.lodes".jobs_firm_age_2_3_years', '"us.census.lodes".total_jobs', 'denominator');
INSERT INTO obs_column_to_column (cartodb_id, the_geom, the_geom_webmercator, source_id, target_id, reltype) VALUES (61, NULL, NULL, '"us.census.lodes".jobs_firm_age_4_5_years', '"us.census.lodes".total_jobs', 'denominator');
INSERT INTO obs_column_to_column (cartodb_id, the_geom, the_geom_webmercator, source_id, target_id, reltype) VALUES (62, NULL, NULL, '"us.census.lodes".jobs_firm_age_6_10_years', '"us.census.lodes".total_jobs', 'denominator');
INSERT INTO obs_column_to_column (cartodb_id, the_geom, the_geom_webmercator, source_id, target_id, reltype) VALUES (63, NULL, NULL, '"us.census.lodes".jobs_firm_age_11_more_years', '"us.census.lodes".total_jobs', 'denominator');
INSERT INTO obs_column_to_column (cartodb_id, the_geom, the_geom_webmercator, source_id, target_id, reltype) VALUES (64, NULL, NULL, '"us.census.lodes".jobs_firm_age_0_19_employees', '"us.census.lodes".total_jobs', 'denominator');
INSERT INTO obs_column_to_column (cartodb_id, the_geom, the_geom_webmercator, source_id, target_id, reltype) VALUES (65, NULL, NULL, '"us.census.lodes".jobs_firm_age_20_49_employees', '"us.census.lodes".total_jobs', 'denominator');
INSERT INTO obs_column_to_column (cartodb_id, the_geom, the_geom_webmercator, source_id, target_id, reltype) VALUES (66, NULL, NULL, '"us.census.lodes".jobs_firm_age_50_249_employees', '"us.census.lodes".total_jobs', 'denominator');
INSERT INTO obs_column_to_column (cartodb_id, the_geom, the_geom_webmercator, source_id, target_id, reltype) VALUES (67, NULL, NULL, '"us.census.lodes".jobs_firm_age_250_499_employees', '"us.census.lodes".total_jobs', 'denominator');
INSERT INTO obs_column_to_column (cartodb_id, the_geom, the_geom_webmercator, source_id, target_id, reltype) VALUES (68, NULL, NULL, '"us.census.tiger".census_tract_geoid', '"us.census.tiger".census_tract', 'geom_ref');
INSERT INTO obs_column_to_column (cartodb_id, the_geom, the_geom_webmercator, source_id, target_id, reltype) VALUES (69, NULL, NULL, '"us.census.tiger".county_geoid', '"us.census.tiger".county', 'geom_ref');
INSERT INTO obs_column_to_column (cartodb_id, the_geom, the_geom_webmercator, source_id, target_id, reltype) VALUES (70, NULL, NULL, '"us.census.tiger".congressional_district_geoid', '"us.census.tiger".congressional_district', 'geom_ref');
INSERT INTO obs_column_to_column (cartodb_id, the_geom, the_geom_webmercator, source_id, target_id, reltype) VALUES (71, NULL, NULL, '"us.census.tiger".block_geoid', '"us.census.tiger".block', 'geom_ref');
INSERT INTO obs_column_to_column (cartodb_id, the_geom, the_geom_webmercator, source_id, target_id, reltype) VALUES (72, NULL, NULL, '"us.census.tiger".zcta5_geoid', '"us.census.tiger".zcta5', 'geom_ref');
INSERT INTO obs_column_to_column (cartodb_id, the_geom, the_geom_webmercator, source_id, target_id, reltype) VALUES (73, NULL, NULL, '"us.census.tiger".puma_geoid', '"us.census.tiger".puma', 'geom_ref');
INSERT INTO obs_column_to_column (cartodb_id, the_geom, the_geom_webmercator, source_id, target_id, reltype) VALUES (74, NULL, NULL, '"us.census.tiger".state_geoid', '"us.census.tiger".state', 'geom_ref');
INSERT INTO obs_column_to_column (cartodb_id, the_geom, the_geom_webmercator, source_id, target_id, reltype) VALUES (75, NULL, NULL, '"us.census.tiger".block_group_geoid', '"us.census.tiger".block_group', 'geom_ref');
INSERT INTO obs_column_to_column (cartodb_id, the_geom, the_geom_webmercator, source_id, target_id, reltype) VALUES (76, NULL, NULL, '"us.census.acs".B01001002', '"us.census.acs".B01001001', 'denominator');
INSERT INTO obs_column_to_column (cartodb_id, the_geom, the_geom_webmercator, source_id, target_id, reltype) VALUES (77, NULL, NULL, '"us.census.acs".B01001026', '"us.census.acs".B01001001', 'denominator');
INSERT INTO obs_column_to_column (cartodb_id, the_geom, the_geom_webmercator, source_id, target_id, reltype) VALUES (78, NULL, NULL, '"us.census.acs".B03002003', '"us.census.acs".B01001001', 'denominator');
INSERT INTO obs_column_to_column (cartodb_id, the_geom, the_geom_webmercator, source_id, target_id, reltype) VALUES (79, NULL, NULL, '"us.census.acs".B03002004', '"us.census.acs".B01001001', 'denominator');
INSERT INTO obs_column_to_column (cartodb_id, the_geom, the_geom_webmercator, source_id, target_id, reltype) VALUES (80, NULL, NULL, '"us.census.acs".B03002006', '"us.census.acs".B01001001', 'denominator');
INSERT INTO obs_column_to_column (cartodb_id, the_geom, the_geom_webmercator, source_id, target_id, reltype) VALUES (81, NULL, NULL, '"us.census.acs".B03002012', '"us.census.acs".B01001001', 'denominator');
INSERT INTO obs_column_to_column (cartodb_id, the_geom, the_geom_webmercator, source_id, target_id, reltype) VALUES (82, NULL, NULL, '"us.census.acs".B15001034', '"us.census.acs".B01001001', 'denominator');
INSERT INTO obs_column_to_column (cartodb_id, the_geom, the_geom_webmercator, source_id, target_id, reltype) VALUES (83, NULL, NULL, '"us.census.acs".B08006017', '"us.census.acs".B08006001', 'denominator');
INSERT INTO obs_column_to_column (cartodb_id, the_geom, the_geom_webmercator, source_id, target_id, reltype) VALUES (84, NULL, NULL, '"us.census.acs".B08006015', '"us.census.acs".B08006008', 'denominator');
INSERT INTO obs_column_to_column (cartodb_id, the_geom, the_geom_webmercator, source_id, target_id, reltype) VALUES (85, NULL, NULL, '"us.census.acs".B03002005', '"us.census.acs".B01001001', 'denominator');
INSERT INTO obs_column_to_column (cartodb_id, the_geom, the_geom_webmercator, source_id, target_id, reltype) VALUES (86, NULL, NULL, '"us.census.acs".B14001002', '"us.census.acs".B14001001', 'denominator');
INSERT INTO obs_column_to_column (cartodb_id, the_geom, the_geom_webmercator, source_id, target_id, reltype) VALUES (87, NULL, NULL, '"us.census.acs".B14001008', '"us.census.acs".B14001002', 'denominator');
INSERT INTO obs_column_to_column (cartodb_id, the_geom, the_geom_webmercator, source_id, target_id, reltype) VALUES (88, NULL, NULL, '"us.census.acs".B15003023', '"us.census.acs".B15003001', 'denominator');
INSERT INTO obs_column_to_column (cartodb_id, the_geom, the_geom_webmercator, source_id, target_id, reltype) VALUES (89, NULL, NULL, '"us.census.acs".B16001003', '"us.census.acs".B16001001', 'denominator');
INSERT INTO obs_column_to_column (cartodb_id, the_geom, the_geom_webmercator, source_id, target_id, reltype) VALUES (90, NULL, NULL, '"us.census.acs".B17001002', '"us.census.acs".B17001001', 'denominator');
INSERT INTO obs_column_to_column (cartodb_id, the_geom, the_geom_webmercator, source_id, target_id, reltype) VALUES (91, NULL, NULL, '"us.census.acs".B25075001', '"us.census.acs".B25001001', 'denominator');
INSERT INTO obs_column_to_column (cartodb_id, the_geom, the_geom_webmercator, source_id, target_id, reltype) VALUES (92, NULL, NULL, '"us.census.acs".B25081002', '"us.census.acs".B25075001', 'denominator');
INSERT INTO obs_column_to_column (cartodb_id, the_geom, the_geom_webmercator, source_id, target_id, reltype) VALUES (93, NULL, NULL, '"us.census.acs".B25004004', '"us.census.acs".B25002003', 'denominator');
INSERT INTO obs_column_to_column (cartodb_id, the_geom, the_geom_webmercator, source_id, target_id, reltype) VALUES (94, NULL, NULL, '"us.census.acs".B03002008', '"us.census.acs".B01001001', 'denominator');
INSERT INTO obs_column_to_column (cartodb_id, the_geom, the_geom_webmercator, source_id, target_id, reltype) VALUES (95, NULL, NULL, '"us.census.acs".B03002009', '"us.census.acs".B01001001', 'denominator');
INSERT INTO obs_column_to_column (cartodb_id, the_geom, the_geom_webmercator, source_id, target_id, reltype) VALUES (96, NULL, NULL, '"us.census.acs".B03002002', '"us.census.acs".B01001001', 'denominator');
INSERT INTO obs_column_to_column (cartodb_id, the_geom, the_geom_webmercator, source_id, target_id, reltype) VALUES (97, NULL, NULL, '"us.census.acs".B05001006', '"us.census.acs".B01001001', 'denominator');
INSERT INTO obs_column_to_column (cartodb_id, the_geom, the_geom_webmercator, source_id, target_id, reltype) VALUES (98, NULL, NULL, '"us.census.acs".B08006004', '"us.census.acs".B08006002', 'denominator');
INSERT INTO obs_column_to_column (cartodb_id, the_geom, the_geom_webmercator, source_id, target_id, reltype) VALUES (99, NULL, NULL, '"us.census.acs".B08006003', '"us.census.acs".B08006002', 'denominator');
INSERT INTO obs_column_to_column (cartodb_id, the_geom, the_geom_webmercator, source_id, target_id, reltype) VALUES (100, NULL, NULL, '"us.census.acs".B08006009', '"us.census.acs".B08006008', 'denominator');
INSERT INTO obs_column_to_column (cartodb_id, the_geom, the_geom_webmercator, source_id, target_id, reltype) VALUES (101, NULL, NULL, '"us.census.acs".B08006011', '"us.census.acs".B08006008', 'denominator');
INSERT INTO obs_column_to_column (cartodb_id, the_geom, the_geom_webmercator, source_id, target_id, reltype) VALUES (102, NULL, NULL, '"us.census.acs".B19001017', '"us.census.acs".B11001001', 'denominator');
INSERT INTO obs_column_to_column (cartodb_id, the_geom, the_geom_webmercator, source_id, target_id, reltype) VALUES (103, NULL, NULL, '"us.census.acs".B14001005', '"us.census.acs".B14001002', 'denominator');
INSERT INTO obs_column_to_column (cartodb_id, the_geom, the_geom_webmercator, source_id, target_id, reltype) VALUES (104, NULL, NULL, '"us.census.acs".B14001006', '"us.census.acs".B14001002', 'denominator');
INSERT INTO obs_column_to_column (cartodb_id, the_geom, the_geom_webmercator, source_id, target_id, reltype) VALUES (105, NULL, NULL, '"us.census.acs".B14001007', '"us.census.acs".B14001002', 'denominator');
INSERT INTO obs_column_to_column (cartodb_id, the_geom, the_geom_webmercator, source_id, target_id, reltype) VALUES (106, NULL, NULL, '"us.census.acs".B15003017', '"us.census.acs".B15003001', 'denominator');
INSERT INTO obs_column_to_column (cartodb_id, the_geom, the_geom_webmercator, source_id, target_id, reltype) VALUES (107, NULL, NULL, '"us.census.acs".B15003019', '"us.census.acs".B15003001', 'denominator');
INSERT INTO obs_column_to_column (cartodb_id, the_geom, the_geom_webmercator, source_id, target_id, reltype) VALUES (108, NULL, NULL, '"us.census.acs".B15003020', '"us.census.acs".B15003001', 'denominator');
INSERT INTO obs_column_to_column (cartodb_id, the_geom, the_geom_webmercator, source_id, target_id, reltype) VALUES (109, NULL, NULL, '"us.census.acs".B15003021', '"us.census.acs".B15003001', 'denominator');
INSERT INTO obs_column_to_column (cartodb_id, the_geom, the_geom_webmercator, source_id, target_id, reltype) VALUES (110, NULL, NULL, '"us.census.acs".B15003022', '"us.census.acs".B15003001', 'denominator');
INSERT INTO obs_column_to_column (cartodb_id, the_geom, the_geom_webmercator, source_id, target_id, reltype) VALUES (111, NULL, NULL, '"us.census.acs".B16001002', '"us.census.acs".B16001001', 'denominator');
INSERT INTO obs_column_to_column (cartodb_id, the_geom, the_geom_webmercator, source_id, target_id, reltype) VALUES (112, NULL, NULL, '"us.census.acs".B25004002', '"us.census.acs".B25002003', 'denominator');
INSERT INTO obs_column_to_column (cartodb_id, the_geom, the_geom_webmercator, source_id, target_id, reltype) VALUES (113, NULL, NULL, '"us.census.acs".B25075025', '"us.census.acs".B25075001', 'denominator');
INSERT INTO obs_column_to_column (cartodb_id, the_geom, the_geom_webmercator, source_id, target_id, reltype) VALUES (114, NULL, NULL, '"us.census.acs".B23008010', '"us.census.acs".B23008002', 'denominator');
INSERT INTO obs_column_to_column (cartodb_id, the_geom, the_geom_webmercator, source_id, target_id, reltype) VALUES (115, NULL, NULL, '"us.census.acs".B23008003', '"us.census.acs".B23008002', 'denominator');
INSERT INTO obs_column_to_column (cartodb_id, the_geom, the_geom_webmercator, source_id, target_id, reltype) VALUES (116, NULL, NULL, '"us.census.acs".B23008004', '"us.census.acs".B23008002', 'denominator');
INSERT INTO obs_column_to_column (cartodb_id, the_geom, the_geom_webmercator, source_id, target_id, reltype) VALUES (117, NULL, NULL, '"us.census.acs".B23008005', '"us.census.acs".B23008002', 'denominator');
INSERT INTO obs_column_to_column (cartodb_id, the_geom, the_geom_webmercator, source_id, target_id, reltype) VALUES (118, NULL, NULL, '"us.census.acs".B23008006', '"us.census.acs".B23008002', 'denominator');
INSERT INTO obs_column_to_column (cartodb_id, the_geom, the_geom_webmercator, source_id, target_id, reltype) VALUES (119, NULL, NULL, '"us.census.acs".B23008007', '"us.census.acs".B23008002', 'denominator');
INSERT INTO obs_column_to_column (cartodb_id, the_geom, the_geom_webmercator, source_id, target_id, reltype) VALUES (120, NULL, NULL, '"us.census.acs".B23008008', '"us.census.acs".B23008002', 'denominator');
INSERT INTO obs_column_to_column (cartodb_id, the_geom, the_geom_webmercator, source_id, target_id, reltype) VALUES (121, NULL, NULL, '"us.census.acs".B23008009', '"us.census.acs".B23008002', 'denominator');
INSERT INTO obs_column_to_column (cartodb_id, the_geom, the_geom_webmercator, source_id, target_id, reltype) VALUES (122, NULL, NULL, '"us.census.acs".B01001015', '"us.census.acs".B01001001', 'denominator');
INSERT INTO obs_column_to_column (cartodb_id, the_geom, the_geom_webmercator, source_id, target_id, reltype) VALUES (123, NULL, NULL, '"us.census.acs".B01001016', '"us.census.acs".B01001001', 'denominator');
INSERT INTO obs_column_to_column (cartodb_id, the_geom, the_geom_webmercator, source_id, target_id, reltype) VALUES (124, NULL, NULL, '"us.census.acs".B01001017', '"us.census.acs".B01001001', 'denominator');
INSERT INTO obs_column_to_column (cartodb_id, the_geom, the_geom_webmercator, source_id, target_id, reltype) VALUES (125, NULL, NULL, '"us.census.acs".B01001018', '"us.census.acs".B01001001', 'denominator');
INSERT INTO obs_column_to_column (cartodb_id, the_geom, the_geom_webmercator, source_id, target_id, reltype) VALUES (126, NULL, NULL, '"us.census.acs".B01001019', '"us.census.acs".B01001001', 'denominator');
INSERT INTO obs_column_to_column (cartodb_id, the_geom, the_geom_webmercator, source_id, target_id, reltype) VALUES (127, NULL, NULL, '"us.census.acs".B01001B012', '"us.census.acs".B01001001', 'denominator');
INSERT INTO obs_column_to_column (cartodb_id, the_geom, the_geom_webmercator, source_id, target_id, reltype) VALUES (128, NULL, NULL, '"us.census.acs".B01001B013', '"us.census.acs".B01001001', 'denominator');
INSERT INTO obs_column_to_column (cartodb_id, the_geom, the_geom_webmercator, source_id, target_id, reltype) VALUES (129, NULL, NULL, '"us.census.acs".B01001I012', '"us.census.acs".B01001001', 'denominator');
INSERT INTO obs_column_to_column (cartodb_id, the_geom, the_geom_webmercator, source_id, target_id, reltype) VALUES (130, NULL, NULL, '"us.census.acs".B01001I013', '"us.census.acs".B01001001', 'denominator');
INSERT INTO obs_column_to_column (cartodb_id, the_geom, the_geom_webmercator, source_id, target_id, reltype) VALUES (131, NULL, NULL, '"us.census.acs".B01001H012', '"us.census.acs".B01001001', 'denominator');
INSERT INTO obs_column_to_column (cartodb_id, the_geom, the_geom_webmercator, source_id, target_id, reltype) VALUES (132, NULL, NULL, '"us.census.acs".B01001H013', '"us.census.acs".B01001001', 'denominator');
INSERT INTO obs_column_to_column (cartodb_id, the_geom, the_geom_webmercator, source_id, target_id, reltype) VALUES (133, NULL, NULL, '"us.census.acs".B01001D012', '"us.census.acs".B01001001', 'denominator');
INSERT INTO obs_column_to_column (cartodb_id, the_geom, the_geom_webmercator, source_id, target_id, reltype) VALUES (134, NULL, NULL, '"us.census.acs".B01001D013', '"us.census.acs".B01001001', 'denominator');
INSERT INTO obs_column_to_column (cartodb_id, the_geom, the_geom_webmercator, source_id, target_id, reltype) VALUES (135, NULL, NULL, '"us.census.acs".B15001028', '"us.census.acs".B01001001', 'denominator');
INSERT INTO obs_column_to_column (cartodb_id, the_geom, the_geom_webmercator, source_id, target_id, reltype) VALUES (136, NULL, NULL, '"us.census.acs".B15001029', '"us.census.acs".B01001001', 'denominator');
INSERT INTO obs_column_to_column (cartodb_id, the_geom, the_geom_webmercator, source_id, target_id, reltype) VALUES (137, NULL, NULL, '"us.census.acs".B15001030', '"us.census.acs".B01001001', 'denominator');
INSERT INTO obs_column_to_column (cartodb_id, the_geom, the_geom_webmercator, source_id, target_id, reltype) VALUES (138, NULL, NULL, '"us.census.acs".B15001031', '"us.census.acs".B01001001', 'denominator');
INSERT INTO obs_column_to_column (cartodb_id, the_geom, the_geom_webmercator, source_id, target_id, reltype) VALUES (139, NULL, NULL, '"us.census.acs".B15001032', '"us.census.acs".B01001001', 'denominator');
INSERT INTO obs_column_to_column (cartodb_id, the_geom, the_geom_webmercator, source_id, target_id, reltype) VALUES (140, NULL, NULL, '"us.census.acs".B15001033', '"us.census.acs".B01001001', 'denominator');
INSERT INTO obs_column_to_column (cartodb_id, the_geom, the_geom_webmercator, source_id, target_id, reltype) VALUES (141, NULL, NULL, '"us.census.acs".B12005015', '"us.census.acs".B12005001', 'denominator');
INSERT INTO obs_column_to_column (cartodb_id, the_geom, the_geom_webmercator, source_id, target_id, reltype) VALUES (142, NULL, NULL, '"us.census.acs".B12005002', '"us.census.acs".B12005001', 'denominator');
INSERT INTO obs_column_to_column (cartodb_id, the_geom, the_geom_webmercator, source_id, target_id, reltype) VALUES (143, NULL, NULL, '"us.census.acs".B12005005', '"us.census.acs".B12005001', 'denominator');
INSERT INTO obs_column_to_column (cartodb_id, the_geom, the_geom_webmercator, source_id, target_id, reltype) VALUES (144, NULL, NULL, '"us.census.acs".B12005008', '"us.census.acs".B12005001', 'denominator');
INSERT INTO obs_column_to_column (cartodb_id, the_geom, the_geom_webmercator, source_id, target_id, reltype) VALUES (145, NULL, NULL, '"us.census.acs".B12005012', '"us.census.acs".B12005001', 'denominator');
INSERT INTO obs_column_to_column (cartodb_id, the_geom, the_geom_webmercator, source_id, target_id, reltype) VALUES (146, NULL, NULL, '"us.census.acs".B08135001', '"us.census.acs".B08134001', 'divisor');
INSERT INTO obs_column_to_column (cartodb_id, the_geom, the_geom_webmercator, source_id, target_id, reltype) VALUES (147, NULL, NULL, '"us.census.acs".B08134002', '"us.census.acs".B08134001', 'denominator');
INSERT INTO obs_column_to_column (cartodb_id, the_geom, the_geom_webmercator, source_id, target_id, reltype) VALUES (148, NULL, NULL, '"us.census.acs".B08134003', '"us.census.acs".B08134001', 'denominator');
INSERT INTO obs_column_to_column (cartodb_id, the_geom, the_geom_webmercator, source_id, target_id, reltype) VALUES (149, NULL, NULL, '"us.census.acs".B08134004', '"us.census.acs".B08134001', 'denominator');
INSERT INTO obs_column_to_column (cartodb_id, the_geom, the_geom_webmercator, source_id, target_id, reltype) VALUES (150, NULL, NULL, '"us.census.acs".B08134005', '"us.census.acs".B08134001', 'denominator');
INSERT INTO obs_column_to_column (cartodb_id, the_geom, the_geom_webmercator, source_id, target_id, reltype) VALUES (151, NULL, NULL, '"us.census.acs".B08134006', '"us.census.acs".B08134001', 'denominator');
INSERT INTO obs_column_to_column (cartodb_id, the_geom, the_geom_webmercator, source_id, target_id, reltype) VALUES (152, NULL, NULL, '"us.census.acs".B08134007', '"us.census.acs".B08134001', 'denominator');
INSERT INTO obs_column_to_column (cartodb_id, the_geom, the_geom_webmercator, source_id, target_id, reltype) VALUES (153, NULL, NULL, '"us.census.acs".B08134008', '"us.census.acs".B08134001', 'denominator');
INSERT INTO obs_column_to_column (cartodb_id, the_geom, the_geom_webmercator, source_id, target_id, reltype) VALUES (154, NULL, NULL, '"us.census.acs".B08134009', '"us.census.acs".B08134001', 'denominator');
INSERT INTO obs_column_to_column (cartodb_id, the_geom, the_geom_webmercator, source_id, target_id, reltype) VALUES (155, NULL, NULL, '"us.census.acs".B08134010', '"us.census.acs".B08134001', 'denominator');
INSERT INTO obs_column_to_column (cartodb_id, the_geom, the_geom_webmercator, source_id, target_id, reltype) VALUES (156, NULL, NULL, '"us.census.acs".B19001002', '"us.census.acs".B11001001', 'denominator');
INSERT INTO obs_column_to_column (cartodb_id, the_geom, the_geom_webmercator, source_id, target_id, reltype) VALUES (157, NULL, NULL, '"us.census.acs".B19001003', '"us.census.acs".B11001001', 'denominator');
INSERT INTO obs_column_to_column (cartodb_id, the_geom, the_geom_webmercator, source_id, target_id, reltype) VALUES (158, NULL, NULL, '"us.census.acs".B19001004', '"us.census.acs".B11001001', 'denominator');
INSERT INTO obs_column_to_column (cartodb_id, the_geom, the_geom_webmercator, source_id, target_id, reltype) VALUES (159, NULL, NULL, '"us.census.acs".B19001005', '"us.census.acs".B11001001', 'denominator');
INSERT INTO obs_column_to_column (cartodb_id, the_geom, the_geom_webmercator, source_id, target_id, reltype) VALUES (160, NULL, NULL, '"us.census.acs".B19001006', '"us.census.acs".B11001001', 'denominator');
INSERT INTO obs_column_to_column (cartodb_id, the_geom, the_geom_webmercator, source_id, target_id, reltype) VALUES (161, NULL, NULL, '"us.census.acs".B19001007', '"us.census.acs".B11001001', 'denominator');
INSERT INTO obs_column_to_column (cartodb_id, the_geom, the_geom_webmercator, source_id, target_id, reltype) VALUES (162, NULL, NULL, '"us.census.acs".B19001008', '"us.census.acs".B11001001', 'denominator');
INSERT INTO obs_column_to_column (cartodb_id, the_geom, the_geom_webmercator, source_id, target_id, reltype) VALUES (163, NULL, NULL, '"us.census.acs".B19001009', '"us.census.acs".B11001001', 'denominator');
INSERT INTO obs_column_to_column (cartodb_id, the_geom, the_geom_webmercator, source_id, target_id, reltype) VALUES (164, NULL, NULL, '"us.census.acs".B19001010', '"us.census.acs".B11001001', 'denominator');
INSERT INTO obs_column_to_column (cartodb_id, the_geom, the_geom_webmercator, source_id, target_id, reltype) VALUES (165, NULL, NULL, '"us.census.acs".B19001011', '"us.census.acs".B11001001', 'denominator');
INSERT INTO obs_column_to_column (cartodb_id, the_geom, the_geom_webmercator, source_id, target_id, reltype) VALUES (166, NULL, NULL, '"us.census.acs".B19001012', '"us.census.acs".B11001001', 'denominator');
INSERT INTO obs_column_to_column (cartodb_id, the_geom, the_geom_webmercator, source_id, target_id, reltype) VALUES (167, NULL, NULL, '"us.census.acs".B19001013', '"us.census.acs".B11001001', 'denominator');
INSERT INTO obs_column_to_column (cartodb_id, the_geom, the_geom_webmercator, source_id, target_id, reltype) VALUES (168, NULL, NULL, '"us.census.acs".B19001014', '"us.census.acs".B11001001', 'denominator');
INSERT INTO obs_column_to_column (cartodb_id, the_geom, the_geom_webmercator, source_id, target_id, reltype) VALUES (169, NULL, NULL, '"us.census.acs".B19001015', '"us.census.acs".B11001001', 'denominator');
INSERT INTO obs_column_to_column (cartodb_id, the_geom, the_geom_webmercator, source_id, target_id, reltype) VALUES (170, NULL, NULL, '"us.census.acs".B19001016', '"us.census.acs".B11001001', 'denominator');
INSERT INTO obs_column_to_column (cartodb_id, the_geom, the_geom_webmercator, source_id, target_id, reltype) VALUES (171, NULL, NULL, '"us.census.acs".B01001001_quantile', '"us.census.acs".B01001001', 'quantile_source');
INSERT INTO obs_column_to_column (cartodb_id, the_geom, the_geom_webmercator, source_id, target_id, reltype) VALUES (172, NULL, NULL, '"us.census.acs".B01001002_quantile', '"us.census.acs".B01001002', 'quantile_source');
INSERT INTO obs_column_to_column (cartodb_id, the_geom, the_geom_webmercator, source_id, target_id, reltype) VALUES (173, NULL, NULL, '"us.census.acs".B01001026_quantile', '"us.census.acs".B01001026', 'quantile_source');
INSERT INTO obs_column_to_column (cartodb_id, the_geom, the_geom_webmercator, source_id, target_id, reltype) VALUES (174, NULL, NULL, '"us.census.acs".B01002001_quantile', '"us.census.acs".B01002001', 'quantile_source');
INSERT INTO obs_column_to_column (cartodb_id, the_geom, the_geom_webmercator, source_id, target_id, reltype) VALUES (175, NULL, NULL, '"us.census.acs".B03002003_quantile', '"us.census.acs".B03002003', 'quantile_source');
INSERT INTO obs_column_to_column (cartodb_id, the_geom, the_geom_webmercator, source_id, target_id, reltype) VALUES (176, NULL, NULL, '"us.census.acs".B03002004_quantile', '"us.census.acs".B03002004', 'quantile_source');
INSERT INTO obs_column_to_column (cartodb_id, the_geom, the_geom_webmercator, source_id, target_id, reltype) VALUES (177, NULL, NULL, '"us.census.acs".B03002006_quantile', '"us.census.acs".B03002006', 'quantile_source');
INSERT INTO obs_column_to_column (cartodb_id, the_geom, the_geom_webmercator, source_id, target_id, reltype) VALUES (178, NULL, NULL, '"us.census.acs".B03002012_quantile', '"us.census.acs".B03002012', 'quantile_source');
INSERT INTO obs_column_to_column (cartodb_id, the_geom, the_geom_webmercator, source_id, target_id, reltype) VALUES (179, NULL, NULL, '"us.census.acs".B03002005_quantile', '"us.census.acs".B03002005', 'quantile_source');
INSERT INTO obs_column_to_column (cartodb_id, the_geom, the_geom_webmercator, source_id, target_id, reltype) VALUES (180, NULL, NULL, '"us.census.acs".B03002008_quantile', '"us.census.acs".B03002008', 'quantile_source');
INSERT INTO obs_column_to_column (cartodb_id, the_geom, the_geom_webmercator, source_id, target_id, reltype) VALUES (181, NULL, NULL, '"us.census.acs".B03002009_quantile', '"us.census.acs".B03002009', 'quantile_source');
INSERT INTO obs_column_to_column (cartodb_id, the_geom, the_geom_webmercator, source_id, target_id, reltype) VALUES (182, NULL, NULL, '"us.census.acs".B03002002_quantile', '"us.census.acs".B03002002', 'quantile_source');
INSERT INTO obs_column_to_column (cartodb_id, the_geom, the_geom_webmercator, source_id, target_id, reltype) VALUES (183, NULL, NULL, '"us.census.acs".B05001006_quantile', '"us.census.acs".B05001006', 'quantile_source');
INSERT INTO obs_column_to_column (cartodb_id, the_geom, the_geom_webmercator, source_id, target_id, reltype) VALUES (184, NULL, NULL, '"us.census.acs".B08006001_quantile', '"us.census.acs".B08006001', 'quantile_source');
INSERT INTO obs_column_to_column (cartodb_id, the_geom, the_geom_webmercator, source_id, target_id, reltype) VALUES (185, NULL, NULL, '"us.census.acs".B08006002_quantile', '"us.census.acs".B08006002', 'quantile_source');
INSERT INTO obs_column_to_column (cartodb_id, the_geom, the_geom_webmercator, source_id, target_id, reltype) VALUES (186, NULL, NULL, '"us.census.acs".B08006003_quantile', '"us.census.acs".B08006003', 'quantile_source');
INSERT INTO obs_column_to_column (cartodb_id, the_geom, the_geom_webmercator, source_id, target_id, reltype) VALUES (187, NULL, NULL, '"us.census.acs".B08006004_quantile', '"us.census.acs".B08006004', 'quantile_source');
INSERT INTO obs_column_to_column (cartodb_id, the_geom, the_geom_webmercator, source_id, target_id, reltype) VALUES (188, NULL, NULL, '"us.census.acs".B08006008_quantile', '"us.census.acs".B08006008', 'quantile_source');
INSERT INTO obs_column_to_column (cartodb_id, the_geom, the_geom_webmercator, source_id, target_id, reltype) VALUES (189, NULL, NULL, '"us.census.acs".B08006009_quantile', '"us.census.acs".B08006009', 'quantile_source');
INSERT INTO obs_column_to_column (cartodb_id, the_geom, the_geom_webmercator, source_id, target_id, reltype) VALUES (190, NULL, NULL, '"us.census.acs".B08006011_quantile', '"us.census.acs".B08006011', 'quantile_source');
INSERT INTO obs_column_to_column (cartodb_id, the_geom, the_geom_webmercator, source_id, target_id, reltype) VALUES (191, NULL, NULL, '"us.census.acs".B08006015_quantile', '"us.census.acs".B08006015', 'quantile_source');
INSERT INTO obs_column_to_column (cartodb_id, the_geom, the_geom_webmercator, source_id, target_id, reltype) VALUES (192, NULL, NULL, '"us.census.acs".B08006017_quantile', '"us.census.acs".B08006017', 'quantile_source');
INSERT INTO obs_column_to_column (cartodb_id, the_geom, the_geom_webmercator, source_id, target_id, reltype) VALUES (193, NULL, NULL, '"us.census.acs".B09001001_quantile', '"us.census.acs".B09001001', 'quantile_source');
INSERT INTO obs_column_to_column (cartodb_id, the_geom, the_geom_webmercator, source_id, target_id, reltype) VALUES (194, NULL, NULL, '"us.census.acs".B11001001_quantile', '"us.census.acs".B11001001', 'quantile_source');
INSERT INTO obs_column_to_column (cartodb_id, the_geom, the_geom_webmercator, source_id, target_id, reltype) VALUES (195, NULL, NULL, '"us.census.acs".B14001001_quantile', '"us.census.acs".B14001001', 'quantile_source');
INSERT INTO obs_column_to_column (cartodb_id, the_geom, the_geom_webmercator, source_id, target_id, reltype) VALUES (196, NULL, NULL, '"us.census.acs".B14001002_quantile', '"us.census.acs".B14001002', 'quantile_source');
INSERT INTO obs_column_to_column (cartodb_id, the_geom, the_geom_webmercator, source_id, target_id, reltype) VALUES (197, NULL, NULL, '"us.census.acs".B14001005_quantile', '"us.census.acs".B14001005', 'quantile_source');
INSERT INTO obs_column_to_column (cartodb_id, the_geom, the_geom_webmercator, source_id, target_id, reltype) VALUES (198, NULL, NULL, '"us.census.acs".B14001006_quantile', '"us.census.acs".B14001006', 'quantile_source');
INSERT INTO obs_column_to_column (cartodb_id, the_geom, the_geom_webmercator, source_id, target_id, reltype) VALUES (199, NULL, NULL, '"us.census.acs".B14001007_quantile', '"us.census.acs".B14001007', 'quantile_source');
INSERT INTO obs_column_to_column (cartodb_id, the_geom, the_geom_webmercator, source_id, target_id, reltype) VALUES (200, NULL, NULL, '"us.census.acs".B14001008_quantile', '"us.census.acs".B14001008', 'quantile_source');
INSERT INTO obs_column_to_column (cartodb_id, the_geom, the_geom_webmercator, source_id, target_id, reltype) VALUES (201, NULL, NULL, '"us.census.acs".B15003001_quantile', '"us.census.acs".B15003001', 'quantile_source');
INSERT INTO obs_column_to_column (cartodb_id, the_geom, the_geom_webmercator, source_id, target_id, reltype) VALUES (202, NULL, NULL, '"us.census.acs".B15003017_quantile', '"us.census.acs".B15003017', 'quantile_source');
INSERT INTO obs_column_to_column (cartodb_id, the_geom, the_geom_webmercator, source_id, target_id, reltype) VALUES (203, NULL, NULL, '"us.census.acs".B15003019_quantile', '"us.census.acs".B15003019', 'quantile_source');
INSERT INTO obs_column_to_column (cartodb_id, the_geom, the_geom_webmercator, source_id, target_id, reltype) VALUES (204, NULL, NULL, '"us.census.acs".B15003020_quantile', '"us.census.acs".B15003020', 'quantile_source');
INSERT INTO obs_column_to_column (cartodb_id, the_geom, the_geom_webmercator, source_id, target_id, reltype) VALUES (205, NULL, NULL, '"us.census.acs".B15003021_quantile', '"us.census.acs".B15003021', 'quantile_source');
INSERT INTO obs_column_to_column (cartodb_id, the_geom, the_geom_webmercator, source_id, target_id, reltype) VALUES (206, NULL, NULL, '"us.census.acs".B15003022_quantile', '"us.census.acs".B15003022', 'quantile_source');
INSERT INTO obs_column_to_column (cartodb_id, the_geom, the_geom_webmercator, source_id, target_id, reltype) VALUES (207, NULL, NULL, '"us.census.acs".B15003023_quantile', '"us.census.acs".B15003023', 'quantile_source');
INSERT INTO obs_column_to_column (cartodb_id, the_geom, the_geom_webmercator, source_id, target_id, reltype) VALUES (208, NULL, NULL, '"us.census.acs".B16001001_quantile', '"us.census.acs".B16001001', 'quantile_source');
INSERT INTO obs_column_to_column (cartodb_id, the_geom, the_geom_webmercator, source_id, target_id, reltype) VALUES (209, NULL, NULL, '"us.census.acs".B16001002_quantile', '"us.census.acs".B16001002', 'quantile_source');
INSERT INTO obs_column_to_column (cartodb_id, the_geom, the_geom_webmercator, source_id, target_id, reltype) VALUES (210, NULL, NULL, '"us.census.acs".B16001003_quantile', '"us.census.acs".B16001003', 'quantile_source');
INSERT INTO obs_column_to_column (cartodb_id, the_geom, the_geom_webmercator, source_id, target_id, reltype) VALUES (211, NULL, NULL, '"us.census.acs".B17001001_quantile', '"us.census.acs".B17001001', 'quantile_source');
INSERT INTO obs_column_to_column (cartodb_id, the_geom, the_geom_webmercator, source_id, target_id, reltype) VALUES (212, NULL, NULL, '"us.census.acs".B17001002_quantile', '"us.census.acs".B17001002', 'quantile_source');
INSERT INTO obs_column_to_column (cartodb_id, the_geom, the_geom_webmercator, source_id, target_id, reltype) VALUES (213, NULL, NULL, '"us.census.acs".B19013001_quantile', '"us.census.acs".B19013001', 'quantile_source');
INSERT INTO obs_column_to_column (cartodb_id, the_geom, the_geom_webmercator, source_id, target_id, reltype) VALUES (214, NULL, NULL, '"us.census.acs".B19083001_quantile', '"us.census.acs".B19083001', 'quantile_source');
INSERT INTO obs_column_to_column (cartodb_id, the_geom, the_geom_webmercator, source_id, target_id, reltype) VALUES (215, NULL, NULL, '"us.census.acs".B19301001_quantile', '"us.census.acs".B19301001', 'quantile_source');
INSERT INTO obs_column_to_column (cartodb_id, the_geom, the_geom_webmercator, source_id, target_id, reltype) VALUES (216, NULL, NULL, '"us.census.acs".B25001001_quantile', '"us.census.acs".B25001001', 'quantile_source');
INSERT INTO obs_column_to_column (cartodb_id, the_geom, the_geom_webmercator, source_id, target_id, reltype) VALUES (217, NULL, NULL, '"us.census.acs".B25002003_quantile', '"us.census.acs".B25002003', 'quantile_source');
INSERT INTO obs_column_to_column (cartodb_id, the_geom, the_geom_webmercator, source_id, target_id, reltype) VALUES (218, NULL, NULL, '"us.census.acs".B25004002_quantile', '"us.census.acs".B25004002', 'quantile_source');
INSERT INTO obs_column_to_column (cartodb_id, the_geom, the_geom_webmercator, source_id, target_id, reltype) VALUES (219, NULL, NULL, '"us.census.acs".B25004004_quantile', '"us.census.acs".B25004004', 'quantile_source');
INSERT INTO obs_column_to_column (cartodb_id, the_geom, the_geom_webmercator, source_id, target_id, reltype) VALUES (220, NULL, NULL, '"us.census.acs".B25058001_quantile', '"us.census.acs".B25058001', 'quantile_source');
INSERT INTO obs_column_to_column (cartodb_id, the_geom, the_geom_webmercator, source_id, target_id, reltype) VALUES (221, NULL, NULL, '"us.census.acs".B25071001_quantile', '"us.census.acs".B25071001', 'quantile_source');
INSERT INTO obs_column_to_column (cartodb_id, the_geom, the_geom_webmercator, source_id, target_id, reltype) VALUES (222, NULL, NULL, '"us.census.acs".B25075001_quantile', '"us.census.acs".B25075001', 'quantile_source');
INSERT INTO obs_column_to_column (cartodb_id, the_geom, the_geom_webmercator, source_id, target_id, reltype) VALUES (223, NULL, NULL, '"us.census.acs".B25075025_quantile', '"us.census.acs".B25075025', 'quantile_source');
INSERT INTO obs_column_to_column (cartodb_id, the_geom, the_geom_webmercator, source_id, target_id, reltype) VALUES (224, NULL, NULL, '"us.census.acs".B25081002_quantile', '"us.census.acs".B25081002', 'quantile_source');
INSERT INTO obs_column_to_column (cartodb_id, the_geom, the_geom_webmercator, source_id, target_id, reltype) VALUES (225, NULL, NULL, '"us.census.acs".B23008002_quantile', '"us.census.acs".B23008002', 'quantile_source');
INSERT INTO obs_column_to_column (cartodb_id, the_geom, the_geom_webmercator, source_id, target_id, reltype) VALUES (226, NULL, NULL, '"us.census.acs".B23008003_quantile', '"us.census.acs".B23008003', 'quantile_source');
INSERT INTO obs_column_to_column (cartodb_id, the_geom, the_geom_webmercator, source_id, target_id, reltype) VALUES (227, NULL, NULL, '"us.census.acs".B23008004_quantile', '"us.census.acs".B23008004', 'quantile_source');
INSERT INTO obs_column_to_column (cartodb_id, the_geom, the_geom_webmercator, source_id, target_id, reltype) VALUES (228, NULL, NULL, '"us.census.acs".B23008005_quantile', '"us.census.acs".B23008005', 'quantile_source');
INSERT INTO obs_column_to_column (cartodb_id, the_geom, the_geom_webmercator, source_id, target_id, reltype) VALUES (229, NULL, NULL, '"us.census.acs".B23008006_quantile', '"us.census.acs".B23008006', 'quantile_source');
INSERT INTO obs_column_to_column (cartodb_id, the_geom, the_geom_webmercator, source_id, target_id, reltype) VALUES (230, NULL, NULL, '"us.census.acs".B23008007_quantile', '"us.census.acs".B23008007', 'quantile_source');
INSERT INTO obs_column_to_column (cartodb_id, the_geom, the_geom_webmercator, source_id, target_id, reltype) VALUES (231, NULL, NULL, '"us.census.acs".B23008008_quantile', '"us.census.acs".B23008008', 'quantile_source');
INSERT INTO obs_column_to_column (cartodb_id, the_geom, the_geom_webmercator, source_id, target_id, reltype) VALUES (232, NULL, NULL, '"us.census.acs".B23008009_quantile', '"us.census.acs".B23008009', 'quantile_source');
INSERT INTO obs_column_to_column (cartodb_id, the_geom, the_geom_webmercator, source_id, target_id, reltype) VALUES (233, NULL, NULL, '"us.census.acs".B15001027_quantile', '"us.census.acs".B15001027', 'quantile_source');
INSERT INTO obs_column_to_column (cartodb_id, the_geom, the_geom_webmercator, source_id, target_id, reltype) VALUES (234, NULL, NULL, '"us.census.acs".B01001015_quantile', '"us.census.acs".B01001015', 'quantile_source');
INSERT INTO obs_column_to_column (cartodb_id, the_geom, the_geom_webmercator, source_id, target_id, reltype) VALUES (235, NULL, NULL, '"us.census.acs".B01001016_quantile', '"us.census.acs".B01001016', 'quantile_source');
INSERT INTO obs_column_to_column (cartodb_id, the_geom, the_geom_webmercator, source_id, target_id, reltype) VALUES (236, NULL, NULL, '"us.census.acs".B01001017_quantile', '"us.census.acs".B01001017', 'quantile_source');
INSERT INTO obs_column_to_column (cartodb_id, the_geom, the_geom_webmercator, source_id, target_id, reltype) VALUES (237, NULL, NULL, '"us.census.acs".B01001018_quantile', '"us.census.acs".B01001018', 'quantile_source');
INSERT INTO obs_column_to_column (cartodb_id, the_geom, the_geom_webmercator, source_id, target_id, reltype) VALUES (238, NULL, NULL, '"us.census.acs".B01001019_quantile', '"us.census.acs".B01001019', 'quantile_source');
INSERT INTO obs_column_to_column (cartodb_id, the_geom, the_geom_webmercator, source_id, target_id, reltype) VALUES (239, NULL, NULL, '"us.census.acs".B01001B012_quantile', '"us.census.acs".B01001B012', 'quantile_source');
INSERT INTO obs_column_to_column (cartodb_id, the_geom, the_geom_webmercator, source_id, target_id, reltype) VALUES (240, NULL, NULL, '"us.census.acs".B01001B013_quantile', '"us.census.acs".B01001B013', 'quantile_source');
INSERT INTO obs_column_to_column (cartodb_id, the_geom, the_geom_webmercator, source_id, target_id, reltype) VALUES (241, NULL, NULL, '"us.census.acs".B01001I012_quantile', '"us.census.acs".B01001I012', 'quantile_source');
INSERT INTO obs_column_to_column (cartodb_id, the_geom, the_geom_webmercator, source_id, target_id, reltype) VALUES (242, NULL, NULL, '"us.census.acs".B01001I013_quantile', '"us.census.acs".B01001I013', 'quantile_source');
INSERT INTO obs_column_to_column (cartodb_id, the_geom, the_geom_webmercator, source_id, target_id, reltype) VALUES (243, NULL, NULL, '"us.census.acs".B01001H012_quantile', '"us.census.acs".B01001H012', 'quantile_source');
INSERT INTO obs_column_to_column (cartodb_id, the_geom, the_geom_webmercator, source_id, target_id, reltype) VALUES (244, NULL, NULL, '"us.census.acs".B01001H013_quantile', '"us.census.acs".B01001H013', 'quantile_source');
INSERT INTO obs_column_to_column (cartodb_id, the_geom, the_geom_webmercator, source_id, target_id, reltype) VALUES (245, NULL, NULL, '"us.census.acs".B01001D012_quantile', '"us.census.acs".B01001D012', 'quantile_source');
INSERT INTO obs_column_to_column (cartodb_id, the_geom, the_geom_webmercator, source_id, target_id, reltype) VALUES (246, NULL, NULL, '"us.census.acs".B01001D013_quantile', '"us.census.acs".B01001D013', 'quantile_source');
INSERT INTO obs_column_to_column (cartodb_id, the_geom, the_geom_webmercator, source_id, target_id, reltype) VALUES (247, NULL, NULL, '"us.census.acs".B15001028_quantile', '"us.census.acs".B15001028', 'quantile_source');
INSERT INTO obs_column_to_column (cartodb_id, the_geom, the_geom_webmercator, source_id, target_id, reltype) VALUES (248, NULL, NULL, '"us.census.acs".B15001029_quantile', '"us.census.acs".B15001029', 'quantile_source');
INSERT INTO obs_column_to_column (cartodb_id, the_geom, the_geom_webmercator, source_id, target_id, reltype) VALUES (249, NULL, NULL, '"us.census.acs".B15001030_quantile', '"us.census.acs".B15001030', 'quantile_source');
INSERT INTO obs_column_to_column (cartodb_id, the_geom, the_geom_webmercator, source_id, target_id, reltype) VALUES (250, NULL, NULL, '"us.census.acs".B15001031_quantile', '"us.census.acs".B15001031', 'quantile_source');
INSERT INTO obs_column_to_column (cartodb_id, the_geom, the_geom_webmercator, source_id, target_id, reltype) VALUES (251, NULL, NULL, '"us.census.acs".B15001032_quantile', '"us.census.acs".B15001032', 'quantile_source');
INSERT INTO obs_column_to_column (cartodb_id, the_geom, the_geom_webmercator, source_id, target_id, reltype) VALUES (252, NULL, NULL, '"us.census.acs".B15001033_quantile', '"us.census.acs".B15001033', 'quantile_source');
INSERT INTO obs_column_to_column (cartodb_id, the_geom, the_geom_webmercator, source_id, target_id, reltype) VALUES (253, NULL, NULL, '"us.census.acs".B15001034_quantile', '"us.census.acs".B15001034', 'quantile_source');
INSERT INTO obs_column_to_column (cartodb_id, the_geom, the_geom_webmercator, source_id, target_id, reltype) VALUES (254, NULL, NULL, '"us.census.acs".B23008010_quantile', '"us.census.acs".B23008010', 'quantile_source');
INSERT INTO obs_column_to_column (cartodb_id, the_geom, the_geom_webmercator, source_id, target_id, reltype) VALUES (255, NULL, NULL, '"us.census.acs".B12005001_quantile', '"us.census.acs".B12005001', 'quantile_source');
INSERT INTO obs_column_to_column (cartodb_id, the_geom, the_geom_webmercator, source_id, target_id, reltype) VALUES (256, NULL, NULL, '"us.census.acs".B12005002_quantile', '"us.census.acs".B12005002', 'quantile_source');
INSERT INTO obs_column_to_column (cartodb_id, the_geom, the_geom_webmercator, source_id, target_id, reltype) VALUES (257, NULL, NULL, '"us.census.acs".B12005005_quantile', '"us.census.acs".B12005005', 'quantile_source');
INSERT INTO obs_column_to_column (cartodb_id, the_geom, the_geom_webmercator, source_id, target_id, reltype) VALUES (258, NULL, NULL, '"us.census.acs".B12005008_quantile', '"us.census.acs".B12005008', 'quantile_source');
INSERT INTO obs_column_to_column (cartodb_id, the_geom, the_geom_webmercator, source_id, target_id, reltype) VALUES (259, NULL, NULL, '"us.census.acs".B12005012_quantile', '"us.census.acs".B12005012', 'quantile_source');
INSERT INTO obs_column_to_column (cartodb_id, the_geom, the_geom_webmercator, source_id, target_id, reltype) VALUES (260, NULL, NULL, '"us.census.acs".B12005015_quantile', '"us.census.acs".B12005015', 'quantile_source');
INSERT INTO obs_column_to_column (cartodb_id, the_geom, the_geom_webmercator, source_id, target_id, reltype) VALUES (261, NULL, NULL, '"us.census.acs".B08134001_quantile', '"us.census.acs".B08134001', 'quantile_source');
INSERT INTO obs_column_to_column (cartodb_id, the_geom, the_geom_webmercator, source_id, target_id, reltype) VALUES (262, NULL, NULL, '"us.census.acs".B08134002_quantile', '"us.census.acs".B08134002', 'quantile_source');
INSERT INTO obs_column_to_column (cartodb_id, the_geom, the_geom_webmercator, source_id, target_id, reltype) VALUES (263, NULL, NULL, '"us.census.acs".B08134003_quantile', '"us.census.acs".B08134003', 'quantile_source');
INSERT INTO obs_column_to_column (cartodb_id, the_geom, the_geom_webmercator, source_id, target_id, reltype) VALUES (264, NULL, NULL, '"us.census.acs".B08134004_quantile', '"us.census.acs".B08134004', 'quantile_source');
INSERT INTO obs_column_to_column (cartodb_id, the_geom, the_geom_webmercator, source_id, target_id, reltype) VALUES (265, NULL, NULL, '"us.census.acs".B08134005_quantile', '"us.census.acs".B08134005', 'quantile_source');
INSERT INTO obs_column_to_column (cartodb_id, the_geom, the_geom_webmercator, source_id, target_id, reltype) VALUES (266, NULL, NULL, '"us.census.acs".B08134006_quantile', '"us.census.acs".B08134006', 'quantile_source');
INSERT INTO obs_column_to_column (cartodb_id, the_geom, the_geom_webmercator, source_id, target_id, reltype) VALUES (267, NULL, NULL, '"us.census.acs".B08134007_quantile', '"us.census.acs".B08134007', 'quantile_source');
INSERT INTO obs_column_to_column (cartodb_id, the_geom, the_geom_webmercator, source_id, target_id, reltype) VALUES (268, NULL, NULL, '"us.census.acs".B08134008_quantile', '"us.census.acs".B08134008', 'quantile_source');
INSERT INTO obs_column_to_column (cartodb_id, the_geom, the_geom_webmercator, source_id, target_id, reltype) VALUES (269, NULL, NULL, '"us.census.acs".B08134009_quantile', '"us.census.acs".B08134009', 'quantile_source');
INSERT INTO obs_column_to_column (cartodb_id, the_geom, the_geom_webmercator, source_id, target_id, reltype) VALUES (270, NULL, NULL, '"us.census.acs".B08134010_quantile', '"us.census.acs".B08134010', 'quantile_source');
INSERT INTO obs_column_to_column (cartodb_id, the_geom, the_geom_webmercator, source_id, target_id, reltype) VALUES (271, NULL, NULL, '"us.census.acs".B08135001_quantile', '"us.census.acs".B08135001', 'quantile_source');
INSERT INTO obs_column_to_column (cartodb_id, the_geom, the_geom_webmercator, source_id, target_id, reltype) VALUES (272, NULL, NULL, '"us.census.acs".B19001002_quantile', '"us.census.acs".B19001002', 'quantile_source');
INSERT INTO obs_column_to_column (cartodb_id, the_geom, the_geom_webmercator, source_id, target_id, reltype) VALUES (273, NULL, NULL, '"us.census.acs".B19001003_quantile', '"us.census.acs".B19001003', 'quantile_source');
INSERT INTO obs_column_to_column (cartodb_id, the_geom, the_geom_webmercator, source_id, target_id, reltype) VALUES (274, NULL, NULL, '"us.census.acs".B19001004_quantile', '"us.census.acs".B19001004', 'quantile_source');
INSERT INTO obs_column_to_column (cartodb_id, the_geom, the_geom_webmercator, source_id, target_id, reltype) VALUES (275, NULL, NULL, '"us.census.acs".B19001005_quantile', '"us.census.acs".B19001005', 'quantile_source');
INSERT INTO obs_column_to_column (cartodb_id, the_geom, the_geom_webmercator, source_id, target_id, reltype) VALUES (276, NULL, NULL, '"us.census.acs".B19001006_quantile', '"us.census.acs".B19001006', 'quantile_source');
INSERT INTO obs_column_to_column (cartodb_id, the_geom, the_geom_webmercator, source_id, target_id, reltype) VALUES (277, NULL, NULL, '"us.census.acs".B19001007_quantile', '"us.census.acs".B19001007', 'quantile_source');
INSERT INTO obs_column_to_column (cartodb_id, the_geom, the_geom_webmercator, source_id, target_id, reltype) VALUES (278, NULL, NULL, '"us.census.acs".B19001008_quantile', '"us.census.acs".B19001008', 'quantile_source');
INSERT INTO obs_column_to_column (cartodb_id, the_geom, the_geom_webmercator, source_id, target_id, reltype) VALUES (279, NULL, NULL, '"us.census.acs".B19001009_quantile', '"us.census.acs".B19001009', 'quantile_source');
INSERT INTO obs_column_to_column (cartodb_id, the_geom, the_geom_webmercator, source_id, target_id, reltype) VALUES (280, NULL, NULL, '"us.census.acs".B19001010_quantile', '"us.census.acs".B19001010', 'quantile_source');
INSERT INTO obs_column_to_column (cartodb_id, the_geom, the_geom_webmercator, source_id, target_id, reltype) VALUES (281, NULL, NULL, '"us.census.acs".B19001011_quantile', '"us.census.acs".B19001011', 'quantile_source');
INSERT INTO obs_column_to_column (cartodb_id, the_geom, the_geom_webmercator, source_id, target_id, reltype) VALUES (282, NULL, NULL, '"us.census.acs".B19001012_quantile', '"us.census.acs".B19001012', 'quantile_source');
INSERT INTO obs_column_to_column (cartodb_id, the_geom, the_geom_webmercator, source_id, target_id, reltype) VALUES (283, NULL, NULL, '"us.census.acs".B19001013_quantile', '"us.census.acs".B19001013', 'quantile_source');
INSERT INTO obs_column_to_column (cartodb_id, the_geom, the_geom_webmercator, source_id, target_id, reltype) VALUES (284, NULL, NULL, '"us.census.acs".B19001014_quantile', '"us.census.acs".B19001014', 'quantile_source');
INSERT INTO obs_column_to_column (cartodb_id, the_geom, the_geom_webmercator, source_id, target_id, reltype) VALUES (285, NULL, NULL, '"us.census.acs".B19001015_quantile', '"us.census.acs".B19001015', 'quantile_source');
INSERT INTO obs_column_to_column (cartodb_id, the_geom, the_geom_webmercator, source_id, target_id, reltype) VALUES (286, NULL, NULL, '"us.census.acs".B19001016_quantile', '"us.census.acs".B19001016', 'quantile_source');
INSERT INTO obs_column_to_column (cartodb_id, the_geom, the_geom_webmercator, source_id, target_id, reltype) VALUES (287, NULL, NULL, '"us.census.acs".B19001017_quantile', '"us.census.acs".B19001017', 'quantile_source');
CREATE SCHEMA IF NOT EXISTS observatory;
ALTER TABLE obs_column_to_column SET SCHEMA observatory;

File diff suppressed because one or more lines are too long

View File

@@ -1,39 +0,0 @@
CREATE TABLE obs_table(cartodb_id bigint, the_geom geometry, the_geom_webmercator geometry, id text, tablename text, timespan text, bounds text, description text, version text);
-- Commented out until somebody actually adds that fixture
--INSERT INTO obs_table (cartodb_id, the_geom, the_geom_webmercator, id, tablename, timespan, bounds, description, version) VALUES (1, NULL, NULL, '"us.census.spielman_singleton_segments".spielman_singleton_table_99914b932b', 'obs_65f29658e096ca1485bf683f65fdbc9f05ec3c5d', '2009 - 2013', 'BOX(0 0,0 0)', NULL, 5);
INSERT INTO obs_table (cartodb_id, the_geom, the_geom_webmercator, id, tablename, timespan, bounds, description, version) VALUES (2, NULL, NULL, '"us.census.acs".extract_block_group_5yr_2013_69b156927c', 'obs_3e7cc9cfd403b912c57b42d5f9195af9ce2f3cdb', '2009 - 2013', 'BOX(-179.231086 -14.601813,179.859681 71.441059)', NULL, 1);
INSERT INTO obs_table (cartodb_id, the_geom, the_geom_webmercator, id, tablename, timespan, bounds, description, version) VALUES (3, NULL, NULL, '"us.census.tiger".sum_level_false_block_group_2013_5c764f39d2', 'obs_85328201013baa14e8e8a4a57a01e6f6fbc5f9b1', '2013', 'BOX(-179.231086 -14.601813,179.859681 71.441059)', NULL, 4);
INSERT INTO obs_table (cartodb_id, the_geom, the_geom_webmercator, id, tablename, timespan, bounds, description, version) VALUES (4, NULL, NULL, '"us.census.tiger".sum_level_false_census_tract_2013_c489085a44', 'obs_a92e1111ad3177676471d66bb8036e6d057f271b', '2013', 'BOX(-179.231086 -14.601813,179.859681 71.441059)', NULL, 4);
INSERT INTO obs_table (cartodb_id, the_geom, the_geom_webmercator, id, tablename, timespan, bounds, description, version) VALUES (5, NULL, NULL, '"us.ny.nyc.opendata".acris_master_99914b932b', 'obs_811c938d1307530a3db53fc69f11a2499174d224', '1966 - present', 'BOX(0 0,0 0)', NULL, 0);
INSERT INTO obs_table (cartodb_id, the_geom, the_geom_webmercator, id, tablename, timespan, bounds, description, version) VALUES (6, NULL, NULL, '"us.census.tiger".sum_level_false_county_2013_66804ade17', 'obs_b0ef6dd68d5faddbf231fd7f02916b3d00ec43c4', '2013', 'BOX(-179.231086 -14.601813,179.859681 71.441059)', NULL, 4);
INSERT INTO obs_table (cartodb_id, the_geom, the_geom_webmercator, id, tablename, timespan, bounds, description, version) VALUES (7, NULL, NULL, '"us.census.tiger".sum_level_false_puma_2013_4a11a4ba96', 'obs_0008b162b516c295d7204c9ba043ab5dbc67c59c', '2013', 'BOX(-179.231086 13.182335,179.859681 71.441059)', NULL, 4);
INSERT INTO obs_table (cartodb_id, the_geom, the_geom_webmercator, id, tablename, timespan, bounds, description, version) VALUES (8, NULL, NULL, '"us.census.tiger".sum_level_true_state_2013_f1ab8fce27', 'obs_a20f5260b618a2fe2eb95fc1e23febe0db7db096', '2013', 'BOX(-179.231086 -14.601813,179.859681 71.441059)', NULL, 4);
INSERT INTO obs_table (cartodb_id, the_geom, the_geom_webmercator, id, tablename, timespan, bounds, description, version) VALUES (9, NULL, NULL, '"us.census.tiger".sum_level_true_county_2013_39133ea7a1', 'obs_23da37d4e66e9de2f525572967f8618bde99a8c0', '2013', 'BOX(-179.231086 -14.601813,179.859681 71.441059)', NULL, 4);
INSERT INTO obs_table (cartodb_id, the_geom, the_geom_webmercator, id, tablename, timespan, bounds, description, version) VALUES (10, NULL, NULL, '"us.census.tiger".sum_level_false_zcta5_2013_bf420fa8c1', 'obs_d483723c5cc76c107d9e0af279d1e7056df3c2be', '2013', 'BOX(-176.684744 -14.373765,145.830505 71.341324)', NULL, 4);
INSERT INTO obs_table (cartodb_id, the_geom, the_geom_webmercator, id, tablename, timespan, bounds, description, version) VALUES (11, NULL, NULL, '"us.census.tiger".sum_level_true_census_tract_2013_6a2cf9dee9', 'obs_d125aeef87aaa23287a40b454519ece22ee25acf', '2013', 'BOX(-179.231086 -14.601813,179.859681 71.441059)', NULL, 4);
INSERT INTO obs_table (cartodb_id, the_geom, the_geom_webmercator, id, tablename, timespan, bounds, description, version) VALUES (12, NULL, NULL, '"us.census.tiger".sum_level_true_block_group_2013_5ecb940395', 'obs_d610cb3225f282693b8d4dcd98d2c2e2078354c6', '2013', 'BOX(-179.231086 -14.601813,179.859681 71.441059)', NULL, 4);
INSERT INTO obs_table (cartodb_id, the_geom, the_geom_webmercator, id, tablename, timespan, bounds, description, version) VALUES (13, NULL, NULL, '"us.census.acs".extract_state_5yr_2013_c6cc7dd346', 'obs_92bdae84ae8d41fabca52500e4e1f55c394b696e', '2009 - 2013', 'BOX(-179.231086 -14.601813,179.859681 71.441059)', NULL, 1);
INSERT INTO obs_table (cartodb_id, the_geom, the_geom_webmercator, id, tablename, timespan, bounds, description, version) VALUES (14, NULL, NULL, '"us.census.acs".extract_puma_5yr_2013_e9f0d7bc6c', 'obs_a875390344c7e36b72a8d6a3d25ae0f2bb41eaee', '2009 - 2013', 'BOX(-179.231086 13.182335,179.859681 71.441059)', NULL, 1);
INSERT INTO obs_table (cartodb_id, the_geom, the_geom_webmercator, id, tablename, timespan, bounds, description, version) VALUES (15, NULL, NULL, '"us.census.acs".extract_county_5yr_2013_5d7844896c', 'obs_75edf4ed5271a95f13755e9d06b80740b2fde0ba', '2009 - 2013', 'BOX(-179.231086 -14.601813,179.859681 71.441059)', NULL, 1);
INSERT INTO obs_table (cartodb_id, the_geom, the_geom_webmercator, id, tablename, timespan, bounds, description, version) VALUES (16, NULL, NULL, '"us.census.acs".extract_zcta5_5yr_2013_dc39ebe0d5', 'obs_e99034a8fff4654142aed05d887f745a32cedc9f', '2009 - 2013', 'BOX(-176.684744 -14.373765,145.830505 71.341324)', NULL, 1);
INSERT INTO obs_table (cartodb_id, the_geom, the_geom_webmercator, id, tablename, timespan, bounds, description, version) VALUES (17, NULL, NULL, '"us.census.acs".extract_census_tract_5yr_2013_a0eee6bf1a', 'obs_ab038198aaab3f3cb055758638ee4de28ad70146', '2009 - 2013', 'BOX(-179.231086 -14.601813,179.859681 71.441059)', NULL, 1);
INSERT INTO obs_table (cartodb_id, the_geom, the_geom_webmercator, id, tablename, timespan, bounds, description, version) VALUES (18, NULL, NULL, '"us.bls".raw_qcew_2013_dd20d99063', 'obs_530081a407e8793b7fef6666ebc46db0fcc9db2c', '2013', 'BOX(0 0,0 0)', NULL, 0);
INSERT INTO obs_table (cartodb_id, the_geom, the_geom_webmercator, id, tablename, timespan, bounds, description, version) VALUES (19, NULL, NULL, '"us.bls".naics_99914b932b', 'obs_609c848c80950261032da680294bb1e3ddcf43b6', NULL, 'BOX(0 0,0 0)', NULL, 0);
INSERT INTO obs_table (cartodb_id, the_geom, the_geom_webmercator, id, tablename, timespan, bounds, description, version) VALUES (20, NULL, NULL, '"us.bls".simple_qcew_4_2013_94c2fc9ef1', 'obs_4560238b6b0050979ad151becc37c6eecfb7e6ad', '2013Q4', 'BOX(0 0,0 0)', NULL, 1);
INSERT INTO obs_table (cartodb_id, the_geom, the_geom_webmercator, id, tablename, timespan, bounds, description, version) VALUES (21, NULL, NULL, '"us.census.lodes".workplace_area_characteristics_2013_dd20d99063', 'obs_5bc83d67ea2863b1712078813a730eee753cf316', '2013', 'BOX(0 0,0 0)', NULL, 0);
INSERT INTO obs_table (cartodb_id, the_geom, the_geom_webmercator, id, tablename, timespan, bounds, description, version) VALUES (22, NULL, NULL, '"us.bls".qcew_4_2013_94c2fc9ef1', 'obs_5ed30fab78289e09c30cfd16981b8143ca8fdaa4', '2013Q4', 'BOX(0 0,0 0)', NULL, 1);
INSERT INTO obs_table (cartodb_id, the_geom, the_geom_webmercator, id, tablename, timespan, bounds, description, version) VALUES (23, NULL, NULL, '"us.ny.nyc.opendata".acris_legals_99914b932b', 'obs_fd0a697088f5ffcbe4641fb62ad6e2c74eed55d5', '', 'BOX(0 0,0 0)', NULL, 0);
INSERT INTO obs_table (cartodb_id, the_geom, the_geom_webmercator, id, tablename, timespan, bounds, description, version) VALUES (24, NULL, NULL, '"us.census.spielman_singleton_segments".create_spielman_singleton_table_99914b932b', 'obs_11ee8b82c877c073438bc935a91d3dfccef875d1', '2009 - 2013', 'BOX(0 0,0 0)', NULL, 3);
INSERT INTO obs_table (cartodb_id, the_geom, the_geom_webmercator, id, tablename, timespan, bounds, description, version) VALUES (25, NULL, NULL, '"us.census.acs".quantiles_block_group_5yr_2013_69b156927c', 'obs_0932dc0392ca14a6b43e6e131943de9af2ee46b2', '2009 - 2013', 'BOX(0 0,0 0)', NULL, 5);
INSERT INTO obs_table (cartodb_id, the_geom, the_geom_webmercator, id, tablename, timespan, bounds, description, version) VALUES (26, NULL, NULL, '"us.census.acs".quantiles_puma_5yr_2013_e9f0d7bc6c', 'obs_032792417d754aa7708d6ba716eb446904f12c46', '2009 - 2013', 'BOX(0 0,0 0)', NULL, 5);
INSERT INTO obs_table (cartodb_id, the_geom, the_geom_webmercator, id, tablename, timespan, bounds, description, version) VALUES (27, NULL, NULL, '"us.census.acs".quantiles_census_tract_5yr_2013_a0eee6bf1a', 'obs_d34555209878e8c4b37cf0b2b3d072ff129ec470', '2009 - 2013', 'BOX(0 0,0 0)', NULL, 5);
INSERT INTO obs_table (cartodb_id, the_geom, the_geom_webmercator, id, tablename, timespan, bounds, description, version) VALUES (28, NULL, NULL, '"us.census.tiger".sum_level_false_state_2013_0b919d8984', 'obs_f3f0912fe24bc0c976e837b5a116d0c803cc01ce', '2013', 'BOX(-179.231086 -14.601813,179.859681 71.441059)', NULL, 4);
INSERT INTO obs_table (cartodb_id, the_geom, the_geom_webmercator, id, tablename, timespan, bounds, description, version) VALUES (29, NULL, NULL, '"us.census.acs".quantiles_zcta5_5yr_2013_dc39ebe0d5', 'obs_a31255ed256a27d69a9ea777621ad218f6f1f030', '2009 - 2013', 'BOX(0 0,0 0)', NULL, 5);
INSERT INTO obs_table (cartodb_id, the_geom, the_geom_webmercator, id, tablename, timespan, bounds, description, version) VALUES (30, NULL, NULL, '"us.census.acs".quantiles_state_5yr_2013_c6cc7dd346', 'obs_90e9293f578fab0bf2dabf5e387a57d9a2739a08', '2009 - 2013', 'BOX(0 0,0 0)', NULL, 5);
INSERT INTO obs_table (cartodb_id, the_geom, the_geom_webmercator, id, tablename, timespan, bounds, description, version) VALUES (31, NULL, NULL, '"us.census.acs".quantiles_county_5yr_2013_5d7844896c', 'obs_98cefd377c2ff17a2d60b9a6fe090af629073ec4', '2009 - 2013', 'BOX(0 0,0 0)', NULL, 5);
CREATE SCHEMA IF NOT EXISTS observatory;
ALTER TABLE obs_table SET SCHEMA observatory;

View File

@@ -1,7 +1,6 @@
-- Install dependencies
CREATE EXTENSION postgis;
CREATE EXTENSION plpythonu;
CREATE EXTENSION cartodb;
CREATE EXTENSION postgres_fdw;
-- Install the extension
CREATE EXTENSION observatory VERSION 'dev';

View File

@@ -1,78 +1,49 @@
\i test/sql/load_fixtures.sql
\pset format unaligned
\set ECHO all
\i test/fixtures/load_fixtures.sql
SET client_min_messages TO WARNING;
\set ECHO none
-- OBS_GeomTable
-- get table with known geometry_id
-- should give back a table like obs_{hex hash}
SELECT
cdb_observatory._OBS_GeomTable(
CDB_LatLng(40.7128,-74.0059),
'"us.census.tiger".census_tract'
);
ST_SetSRID(ST_Point(-74.0059, 40.7128), 4326),
'us.census.tiger.census_tract',
'2014'
) = 'obs_fc050f0b8673cfe3c6aa1040f749eb40975691b7' As _obs_geomtable_with_returned_table;
-- get null for unknown geometry_id
-- should give back null
SELECT
cdb_observatory._OBS_GeomTable(
CDB_LatLng(40.7128,-74.0059),
'"us.census.tiger".nonexistant_id' -- not in catalog
);
ST_SetSRID(ST_Point(-74.0059, 40.7128), 4326),
'us.census.tiger.nonexistant_id' -- not in catalog
) IS NULL _obs_geomtable_with_null_response;
-- future test: give back nulls when geometry doesn't intersect
-- SELECT
-- cdb_observatory._OBS_GeomTable(
-- CDB_LatLng(0,0), -- should give back null since it's in the ocean?
-- '"us.census.tiger".census_tract'
-- ST_SetSRID(ST_Point(0,0)), -- should give back null since it's in the ocean?
-- 'us.census.tiger.census_tract'
-- );
-- OBS_GetColumnData
-- should give back:
-- colname | tablename | aggregate
-- -----------|-----------------|-----------
-- geoid | obs_{hex table} | null
-- total_pop | obs_{hex table} | sum
SELECT
(unnest(cdb_observatory._OBS_GetColumnData(
'"us.census.tiger".census_tract',
Array['"us.census.tiger".census_tract_geoid', '"us.census.acs".B01001001'],
'2009 - 2013'
))).*
ORDER BY colname, tablename ASC;
-- should be null-valued
SELECT
(unnest(cdb_observatory._OBS_GetColumnData(
'"us.census.tiger".census_tract',
Array['"us.census.tiger".baloney'], -- entry not in catalog
'2009 - 2013'
))).*
ORDER BY 1 ASC;
-- OBS_LookupCensusHuman
-- should give back: {"\"us.census.acs\".B19083001"}
SELECT
cdb_observatory._OBS_LookupCensusHuman(
Array['gini_index']
);
-- should be empty array
SELECT
cdb_observatory._OBS_LookupCensusHuman(
Array['cookies']
);
-- OBS_BuildSnapshotQuery
-- Should give back: SELECT vals[1] As total_pop, vals[2] As male_pop, vals[3] As female_pop, vals[4] As median_age
SELECT
cdb_observatory._OBS_BuildSnapshotQuery(
Array['total_pop','male_pop','female_pop','median_age']
);
) = 'SELECT vals[1] As total_pop, vals[2] As male_pop, vals[3] As female_pop, vals[4] As median_age' As _OBS_BuildSnapshotQuery_test_1;
-- should give back: SELECT vals[1] As mandarin_orange
SELECT
cdb_observatory._OBS_BuildSnapshotQuery(
Array['mandarin_orange']
);
) = 'SELECT vals[1] As mandarin_orange' As _OBS_BuildSnapshotQuery_test_2;
\i test/sql/drop_fixtures.sql
-- should give back a standardized measure name
SELECT cdb_observatory._OBS_StandardizeMeasureName('test 343 %% 2 qqq }}{{}}') = 'test_343_2_qqq' As _OBS_StandardizeMeasureName_test;
SELECT cdb_observatory.OBS_DumpVersion()
IS NOT NULL AS OBS_DumpVersion_notnull;

View File

@@ -1,82 +1,76 @@
\i test/sql/load_fixtures.sql
--
SELECT * FROM
cdb_observatory._OBS_GetDemographicSnapshot(
cdb_observatory._TestPoint(),
'2009 - 2013',
'"us.census.tiger".block_group'
) As snapshot;
\pset format unaligned
\set ECHO none
SET client_min_messages TO WARNING;
--
-- dimension | dimension_value
-- ----------|----------------
-- total_pop | 9516.27915900609
-- male_pop | 6152.51885204623
WITH result as(
Select count(coalesce(OBS_GetDemographicSnapshot->>'value', 'foo')) expected_columns
FROM cdb_observatory.OBS_GetDemographicSnapshot(cdb_observatory._TestPoint())
) select expected_columns = 52 as OBS_GetDemographicSnapshot_test_no_returns
FROM result;
SELECT *
FROM
cdb_observatory._OBS_GetCensus(
cdb_observatory._TestPoint(),
Array['total_pop','male_pop']::text[]
);
-- what happens on null island?
-- expect nulls back: {female_pop, male_pop} | {NULL, NULL}
SELECT *
FROM
cdb_observatory._OBS_GetCensus(
ST_Buffer(CDB_LatLng(0, 0)::geography, 5000)::geometry,
Array['female_pop','male_pop']::text[]
);
-- expect nulls back {female_pop, male_pop} | {NULL, NULL}
SELECT *
FROM
cdb_observatory._OBS_GetCensus(
CDB_LatLng(0, 0),
Array['female_pop', 'male_pop']::text[]
);
--
-- names | vals
-- -----------|-------
-- gini_index | 0.3494
SELECT * FROM
WITH result as (
SELECT _OBS_Get::text as expected FROM
cdb_observatory._OBS_Get(
cdb_observatory._TestPoint(),
Array['"us.census.acs".B19083001']::text[],
'2009 - 2013',
'"us.census.tiger".block_group'
);
Array['us.census.acs.B19013001']::text[],
'2010 - 2014',
'us.census.tiger.block_group'
)
) SELECT expected = '{"value":79292,"name":"Median Household Income in the past 12 Months","tablename":"obs_1a098da56badf5f32e336002b0a81708c40d29cd","aggregate":"median","type":"Numeric","description":"Within a geographic area, the median income received by every household on a regular basis before payments for personal income taxes, social security, union dues, medicare deductions, etc. It includes income received from wages, salary, commissions, bonuses, and tips; self-employment income from own nonfarm or farm businesses, including proprietorships and partnerships; interest, dividends, net rental income, royalty income, or income from estates and trusts; Social Security or Railroad Retirement income; Supplemental Security Income (SSI); any cash public assistance or welfare payments from the state or local welfare office; retirement, survivor, or disability benefits; and any other sources of income received regularly such as Veterans'' (VA) payments, unemployment and/or worker''s compensation, child support, and alimony."}'
As OBS_Get_median_income_at_test_point
FROM result;
-- gini index at null island
SELECT * FROM
-- median income at null island
WITH result as (
SELECT count(_OBS_Get) as expected FROM
cdb_observatory._OBS_Get(
CDB_LatLng(0, 0),
Array['"us.census.acs".B19083001']::text[],
'2009 - 2013',
'"us.census.tiger".block_group'
);
ST_SetSRID(ST_Point(0, 0), 4326),
Array['us.census.acs.B19013001']::text[],
'2010 - 2014',
'us.census.tiger.block_group'
)
) select expected = 0 as OBS_Get_median_income_at_null_island
from result;
-- OBS_GetPoints
-- obs_getpoints
-- --------------------
-- {4809.33511352425}
-- SELECT
-- (cdb_observatory._OBS_GetPoints(
-- cdb_observatory._TestPoint(),
-- 'obs_c6fb99c47d61289fbb8e561ff7773799d3fcc308'::text, -- block groups (see _obs_geomtable)
-- (Array['{"colname":"total_pop","tablename":"obs_1a098da56badf5f32e336002b0a81708c40d29cd","aggregate":"sum","name":"Total Population","type":"Numeric","description":"The total number of all people living in a given geographic area. This is a very useful catch-all denominator when calculating rates."}'::json])
-- ))[1]::text = '{"value":10923.093200390833950,"name":"Total Population","tablename":"obs_1a098da56badf5f32e336002b0a81708c40d29cd","aggregate":"sum","type":"Numeric","description":"The total number of all people living in a given geographic area. This is a very useful catch-all denominator when calculating rates."}'
-- as OBS_GetPoints_for_test_point;
WITH cte As (
SELECT
cdb_observatory._OBS_GetPoints(
(cdb_observatory._OBS_GetPoints(
cdb_observatory._TestPoint(),
'obs_a92e1111ad3177676471d66bb8036e6d057f271b'::text, -- see example in obs_geomtable
Array[('total_pop','obs_ab038198aaab3f3cb055758638ee4de28ad70146','sum')::cdb_observatory.OBS_ColumnData]
);
'obs_c6fb99c47d61289fbb8e561ff7773799d3fcc308'::text, -- block groups (see _obs_geomtable)
(Array['{"colname":"total_pop","tablename":"obs_1a098da56badf5f32e336002b0a81708c40d29cd","aggregate":"sum","name":"Total Population","type":"Numeric","description":"The total number of all people living in a given geographic area. This is a very useful catch-all denominator when calculating rates."}'::json])
))[1]
as OBS_GetPoints_for_test_point)
SELECT
(abs((OBS_GetPoints_for_test_point ->> 'value')::numeric - 10923.093200390833950) / 10923.093200390833950) < 0.001 As OBS_GetPoints_for_test_point_value,
(OBS_GetPoints_for_test_point ->> 'name') = 'Total Population' As OBS_GetPoints_for_test_point_name,
(OBS_GetPoints_for_test_point ->> 'tablename') = 'obs_1a098da56badf5f32e336002b0a81708c40d29cd' As OBS_GetPoints_for_test_point_tablename,
(OBS_GetPoints_for_test_point ->> 'aggregate') = 'sum' As OBS_GetPoints_for_test_point_aggregate,
(OBS_GetPoints_for_test_point ->> 'type') = 'Numeric' As OBS_GetPoints_for_test_point_type,
(OBS_GetPoints_for_test_point ->> 'description') = 'The total number of all people living in a given geographic area. This is a very useful catch-all denominator when calculating rates.' As OBS_GetPoints_for_test_point_description
FROM cte;
-- what happens at null island
SELECT
cdb_observatory._OBS_GetPoints(
CDB_LatLng(0, 0),
'obs_a92e1111ad3177676471d66bb8036e6d057f271b'::text, -- see example in obs_geomtable
Array[('total_pop','obs_ab038198aaab3f3cb055758638ee4de28ad70146','sum')::cdb_observatory.OBS_ColumnData]
);
(cdb_observatory._OBS_GetPoints(
ST_SetSRID(ST_Point(0, 0), 4326),
'obs_c6fb99c47d61289fbb8e561ff7773799d3fcc308'::text, -- see example in obs_geomtable
(Array['{"colname":"total_pop","tablename":"obs_1a098da56badf5f32e336002b0a81708c40d29cd","aggregate":"sum","name":"Total Population","type":"Numeric","description":"The total number of all people living in a given geographic area. This is a very useful catch-all denominator when calculating rates."}'::json])
))[1]::text is null
as OBS_GetPoints_for_null_island;
-- OBS_GetPolygons
-- obs_getpolygons
@@ -84,45 +78,243 @@ SELECT
-- {12996.8172420752}
SELECT
cdb_observatory._OBS_GetPolygons(
(cdb_observatory._OBS_GetPolygons(
cdb_observatory._TestArea(),
'obs_a92e1111ad3177676471d66bb8036e6d057f271b'::text, -- see example in obs_geomtable
Array[('total_pop','obs_ab038198aaab3f3cb055758638ee4de28ad70146','sum')::cdb_observatory.OBS_ColumnData]
);
'obs_c6fb99c47d61289fbb8e561ff7773799d3fcc308'::text, -- see example in obs_geomtable
Array['{"colname":"total_pop","tablename":"obs_1a098da56badf5f32e336002b0a81708c40d29cd","aggregate":"sum","name":"Total Population","type":"Numeric","description":"The total number of all people living in a given geographic area. This is a very useful catch-all denominator when calculating rates."}'::json]
))[1]::text = '{"value":12327.3133495107,"name":"Total Population","tablename":"obs_1a098da56badf5f32e336002b0a81708c40d29cd","aggregate":"sum","type":"Numeric","description":"The total number of all people living in a given geographic area. This is a very useful catch-all denominator when calculating rates."}'
as OBS_GetPolygons_for_test_point;
-- see what happens around null island
SELECT
cdb_observatory._OBS_GetPolygons(
ST_Buffer(CDB_LatLng(0, 0)::geography, 500)::geometry,
'obs_a92e1111ad3177676471d66bb8036e6d057f271b'::text, -- see example in obs_geomtable
Array[('total_pop','obs_ab038198aaab3f3cb055758638ee4de28ad70146','sum')::cdb_observatory.OBS_ColumnData]
);
((cdb_observatory._OBS_GetPolygons(
ST_Buffer(ST_SetSRID(ST_Point(0, 0), 4326)::geography, 500)::geometry,
'obs_c6fb99c47d61289fbb8e561ff7773799d3fcc308'::text, -- see example in obs_geomtable
Array['{"colname":"total_pop","tablename":"obs_1a098da56badf5f32e336002b0a81708c40d29cd","aggregate":"sum","name":"Total Population","type":"Numeric","description":"The total number of all people living in a given geographic area. This is a very useful catch-all denominator when calculating rates."}'::json])
)[1]->>'value') is null
as OBS_GetPolygons_for_null_island;
SELECT * FROM
cdb_observatory._OBS_GetSegmentSnapshot(
SELECT cdb_observatory.OBS_GetSegmentSnapshot(
cdb_observatory._TestPoint(),
'"us.census.tiger".census_tract'
);
'us.census.tiger.census_tract'
)::text =
'{"x10_segment":"Wealthy, urban without Kids","x55_segment":"Wealthy transplants displacing long-term local residents","us.census.acs.B01003001_quantile":"0.3235","us.census.acs.B01001002_quantile":"0.494716216216216","us.census.acs.B01001026_quantile":"0.183756756756757","us.census.acs.B01002001_quantile":"0.0752837837837838","us.census.acs.B03002003_quantile":"0.293162162162162","us.census.acs.B03002004_quantile":"0.455527027027027","us.census.acs.B03002006_quantile":"0.656405405405405","us.census.acs.B03002012_quantile":"0.840081081081081","us.census.acs.B05001006_quantile":"0.727135135135135","us.census.acs.B08006001_quantile":"0.688635135135135","us.census.acs.B08006002_quantile":"0.0204459459459459","us.census.acs.B08006008_quantile":"0.679324324324324","us.census.acs.B08006009_quantile":"0.996716216216216","us.census.acs.B08006011_quantile":"0.967418918918919","us.census.acs.B08006015_quantile":"0.512945945945946","us.census.acs.B08006017_quantile":"0.0504864864864865","us.census.acs.B09001001_quantile":"0.192405405405405","us.census.acs.B11001001_quantile":"0.331702702702703","us.census.acs.B14001001_quantile":"0.296283783783784","us.census.acs.B14001002_quantile":"0.045472972972973","us.census.acs.B14001005_quantile":"0.0442702702702703","us.census.acs.B14001006_quantile":"0.0829054054054054","us.census.acs.B14001007_quantile":"0.701135135135135","us.census.acs.B14001008_quantile":"0.404527027027027","us.census.acs.B15003001_quantile":"0.191824324324324","us.census.acs.B15003017_quantile":"0.864162162162162","us.census.acs.B15003022_quantile":"0.754297297297297","us.census.acs.B15003023_quantile":"0.350054054054054","us.census.acs.B16001001_quantile":"0.217635135135135","us.census.acs.B16001002_quantile":"0.85972972972973","us.census.acs.B16001003_quantile":"0.342851351351351","us.census.acs.B17001001_quantile":"0.51204054054054","us.census.acs.B17001002_quantile":"0.813540540540541","us.census.acs.B19013001_quantile":"0.0948648648648649","us.census.acs.B19083001_quantile":"0.678351351351351","us.census.acs.B19301001_quantile":"0.146108108108108","us.census.acs.B25001001_quantile":"0.149067567567568","us.census.acs.B25002003_quantile":"0","us.census.acs.B25004002_quantile":"0","us.census.acs.B25004004_quantile":"0.944554054054054","us.census.acs.B25058001_quantile":"0.398040540540541","us.census.acs.B25071001_quantile":"0.0596081081081081","us.census.acs.B25075001_quantile":"0","us.census.acs.B25075025_quantile":null}' as test_point_segmentation;
-- segmentation around null island
SELECT * FROM
cdb_observatory._OBS_GetSegmentSnapshot(
CDB_LatLng(0, 0),
'"us.census.tiger".census_tract'
);
SELECT cdb_observatory.OBS_GetSegmentSnapshot(
ST_SetSRID(ST_Point(0, 0), 4326),
'us.census.tiger.census_tract'
)::text = '{"x10_segment":null,"x55_segment":null,"us.census.acs.B01003001_quantile":null,"us.census.acs.B01001002_quantile":null,"us.census.acs.B01001026_quantile":null,"us.census.acs.B01002001_quantile":null,"us.census.acs.B03002003_quantile":null,"us.census.acs.B03002004_quantile":null,"us.census.acs.B03002006_quantile":null,"us.census.acs.B03002012_quantile":null,"us.census.acs.B05001006_quantile":null,"us.census.acs.B08006001_quantile":null,"us.census.acs.B08006002_quantile":null,"us.census.acs.B08006008_quantile":null,"us.census.acs.B08006009_quantile":null,"us.census.acs.B08006011_quantile":null,"us.census.acs.B08006015_quantile":null,"us.census.acs.B08006017_quantile":null,"us.census.acs.B09001001_quantile":null,"us.census.acs.B11001001_quantile":null,"us.census.acs.B14001001_quantile":null,"us.census.acs.B14001002_quantile":null,"us.census.acs.B14001005_quantile":null,"us.census.acs.B14001006_quantile":null,"us.census.acs.B14001007_quantile":null,"us.census.acs.B14001008_quantile":null,"us.census.acs.B15003001_quantile":null,"us.census.acs.B15003017_quantile":null,"us.census.acs.B15003022_quantile":null,"us.census.acs.B15003023_quantile":null,"us.census.acs.B16001001_quantile":null,"us.census.acs.B16001002_quantile":null,"us.census.acs.B16001003_quantile":null,"us.census.acs.B17001001_quantile":null,"us.census.acs.B17001002_quantile":null,"us.census.acs.B19013001_quantile":null,"us.census.acs.B19083001_quantile":null,"us.census.acs.B19301001_quantile":null,"us.census.acs.B25001001_quantile":null,"us.census.acs.B25002003_quantile":null,"us.census.acs.B25004002_quantile":null,"us.census.acs.B25004004_quantile":null,"us.census.acs.B25058001_quantile":null,"us.census.acs.B25071001_quantile":null,"us.census.acs.B25075001_quantile":null,"us.census.acs.B25075025_quantile":null}' as null_island_segmentation;
SELECT * FROM
cdb_observatory._OBS_GetCategories(
WITH result as (
SELECT array_agg(_OBS_GetCategories) as expected FROM
cdb_observatory._OBS_GetCategories(
cdb_observatory._TestPoint(),
Array['us.census.spielman_singleton_segments.X10'],
'us.census.tiger.census_tract'
)
)
select (expected)[1]::text = '{"category":"Wealthy, urban without Kids","name":"Spielman-Singleton Segments: 10 Clusters","tablename":"obs_65f29658e096ca1485bf683f65fdbc9f05ec3c5d","aggregate":null,"type":"Text","description":"Sociodemographic classes from Spielman and Singleton 2015, 10 clusters"}' as GetCategories_at_test_point_1
from result;
WITH result as (
SELECT array_agg(_OBS_GetCategories) as expected FROM
cdb_observatory._OBS_GetCategories(
ST_SetSRID(ST_Point(0,0), 4326),
Array['us.census.spielman_singleton_segments.X10'],
'us.census.tiger.census_tract'
)
)
select expected[0] is NULL as GetCategories_at_null_island
from result;
-- Point-based OBS_GetMeasure with zillow
SELECT abs(OBS_GetMeasure_zhvi_point - 597900) / 597900 < 5.0 AS OBS_GetMeasure_zhvi_point_test FROM cdb_observatory.OBS_GetMeasure(
ST_SetSRID(ST_Point(-73.94602417945862, 40.6768220087458), 4326),
'us.zillow.AllHomes_Zhvi', null, 'us.census.tiger.zcta5', '2014-01'
) As t(OBS_GetMeasure_zhvi_point);
-- Point-based OBS_GetMeasure with later measure
SELECT abs(OBS_GetMeasure_zhvi_point_default_latest - 995400) / 995400 < 5.0 AS OBS_GetMeasure_zhvi_point_default_latest_test FROM cdb_observatory.OBS_GetMeasure(
ST_SetSRID(ST_Point(-73.94602417945862, 40.6768220087458), 4326),
'us.zillow.AllHomes_Zhvi', null, 'us.census.tiger.zcta5', '2016-06'
) As t(OBS_GetMeasure_zhvi_point_default_latest);
-- Point-based OBS_GetMeasure, default normalization (area)
-- is result within 0.1% of expected
SELECT abs(OBS_GetMeasure_total_pop_point - 10923.093200390833950) / 10923.093200390833950 < 0.001 As OBS_GetMeasure_total_pop_point_test FROM
cdb_observatory.OBS_GetMeasure(
cdb_observatory._TestPoint(),
Array['"us.census.spielman_singleton_segments".X10'],
'"us.census.tiger".census_tract'
);
'us.census.acs.B01003001'
) As t(OBS_GetMeasure_total_pop_point);
SELECT * FROM
cdb_observatory._OBS_GetCategories(
CDB_LatLng(0, 0),
Array['"us.census.spielman_singleton_segments".X10'],
'"us.census.tiger".census_tract'
);
-- Point-based OBS_GetMeasure, default normalization by NULL (area)
-- is result within 0.1% of expected
SELECT abs(OBS_GetMeasure_total_pop_point_null_normalization - 10923.093200390833950) / 10923.093200390833950 < 0.001 As OBS_GetMeasure_total_pop_point_null_normalization_test FROM
cdb_observatory.OBS_GetMeasure(
cdb_observatory._TestPoint(),
'us.census.acs.B01003001', NULL
) As t(OBS_GetMeasure_total_pop_point_null_normalization);
\i test/sql/drop_fixtures.sql
-- Point-based OBS_GetMeasure, explicit area normalization area
-- is result within 0.1% of expected
SELECT abs(OBS_GetMeasure_total_pop_point_area - 10923.093200390833950) / 10923.093200390833950 < 0.001 As OBS_GetMeasure_total_pop_point_area_test FROM
cdb_observatory.OBS_GetMeasure(
cdb_observatory._TestPoint(),
'us.census.acs.B01003001', 'area'
) As t(OBS_GetMeasure_total_pop_point_area);
-- Poly-based OBS_GetMeasure, default normalization (none)
-- is result within 0.1% of expected
SELECT abs(OBS_GetMeasure_total_pop_polygon - 12327.3133495107) / 12327.3133495107 < 0.001 As OBS_GetMeasure_total_pop_polygon_test FROM
cdb_observatory.OBS_GetMeasure(
cdb_observatory._TestArea(),
'us.census.acs.B01003001'
) As t(OBS_GetMeasure_total_pop_polygon);
-- Poly-based OBS_GetMeasure, default normalization by NULL (none)
-- is result within 0.1% of expected
SELECT abs(OBS_GetMeasure_total_pop_polygon_null_normalization - 12327.3133495107) / 12327.3133495107 < 0.001 As OBS_GetMeasure_total_pop_polygon_null_normalization_test FROM
cdb_observatory.OBS_GetMeasure(
cdb_observatory._TestArea(),
'us.census.acs.B01003001', NULL
) As t(OBS_GetMeasure_total_pop_polygon_null_normalization);
-- Poly-based OBS_GetMeasure, explicit area normalization
-- is result within 0.1% of expected
SELECT abs(OBS_GetMeasure_total_pop_polygon_area - 15787.4325563538) / 15787.4325563538 < 0.001 As OBS_GetMeasure_total_pop_polygon_area_test FROM
cdb_observatory.OBS_GetMeasure(
cdb_observatory._TestArea(),
'us.census.acs.B01003001', 'area'
) As t(OBS_GetMeasure_total_pop_polygon_area);
-- Point-based OBS_GetMeasure with denominator normalization
SELECT (abs(cdb_observatory.OBS_GetMeasure(
cdb_observatory._TestPoint(),
'us.census.acs.B01001002', 'denominator') - 0.62157894736842105263) / 0.62157894736842105263) < 0.001 As OBS_GetMeasure_total_male_point_denominator;
-- Poly-based OBS_GetMeasure with denominator normalization
SELECT abs(cdb_observatory.OBS_GetMeasure(
cdb_observatory._TestArea(),
'us.census.acs.B01001002', 'denominator') - 0.49026340444793965457) / 0.49026340444793965457 < 0.001 As OBS_GetMeasure_total_male_poly_denominator;
-- Poly-based OBS_GetMeasure with one very bad geom
SELECT abs(cdb_observatory.OBS_GetMeasure(
cdb_observatory._ProblemTestArea(),
'us.census.acs.B01003001') - 96230.2929825897) / 96230.2929825897 < 0.001 As OBS_GetMeasure_bad_geometry;
-- OBS_GetMeasure with NULL Input
SELECT cdb_observatory.OBS_GetMeasure(
NULL,
'us.census.acs.B01003001') IS NULL As OBS_GetMeasure_null;
-- Point-based OBS_GetCategory
SELECT cdb_observatory.OBS_GetCategory(
cdb_observatory._TestPoint(), 'us.census.spielman_singleton_segments.X10') = 'Wealthy, urban without Kids' As OBS_GetCategory_point;
-- Poly-based OBS_GetCategory
SELECT cdb_observatory.OBS_GetCategory(
cdb_observatory._TestArea(), 'us.census.spielman_singleton_segments.X10') = 'Wealthy, urban without Kids' As obs_getcategory_polygon;
-- NULL Input OBS_GetCategory
SELECT cdb_observatory.OBS_GetCategory(
NULL, 'us.census.spielman_singleton_segments.X10') IS NULL As obs_getcategory_null;
-- Point-based OBS_GetPopulation, default normalization (area)
SELECT (abs(OBS_GetPopulation - 10923.093200390833950) / 10923.093200390833950) < 0.001 As OBS_GetPopulation FROM
cdb_observatory.OBS_GetPopulation(
cdb_observatory._TestPoint()
) As m(OBS_GetPopulation);
-- Poly-based OBS_GetPopulation, default normalization (none)
SELECT (abs(obs_getpopulation_polygon - 12327.3133495107) / 12327.3133495107) < 0.001 As obs_getpopulation_polygon_test
FROM
cdb_observatory.OBS_GetPopulation(
cdb_observatory._TestArea()
) As m(obs_getpopulation_polygon);
-- Poly-based OBS_GetPopulation, default normalization (none) specified as NULL
SELECT (abs(obs_getpopulation_polygon_null - 12327.3133495107) / 12327.3133495107) < 0.001 As obs_getpopulation_polygon_null_test
FROM
cdb_observatory.OBS_GetPopulation(
cdb_observatory._TestArea(), NULL
) As m(obs_getpopulation_polygon_null);
-- Null input OBS_GetPopulation
SELECT obs_getpopulation_polygon_null_geom IS NULL As obs_getpopulation_polygon_null_geom_test
FROM
cdb_observatory.OBS_GetPopulation(
NULL, NULL
) As m(obs_getpopulation_polygon_null_geom);
-- Point-based OBS_GetUSCensusMeasure, default normalization (area)
SELECT (abs(cdb_observatory.obs_getuscensusmeasure(
cdb_observatory._testpoint(), 'male population') - 6789.5647735060920500) / 6789.5647735060920500) < 0.001 As obs_getuscensusmeasure_point_male_pop;
-- Poly-based OBS_GetUSCensusMeasure, default normalization (none)
SELECT (abs(cdb_observatory.obs_getuscensusmeasure(
cdb_observatory._testarea(), 'male population') - 6043.63061042765) / 6043.63061042765) < 0.001 As obs_getuscensusmeasure;
-- Poly-based OBS_GetUSCensusMeasure, default normalization (none) specified
-- with NULL
SELECT (abs(cdb_observatory.obs_getuscensusmeasure(
cdb_observatory._testarea(), 'male population', NULL) - 6043.63061042765) / 6043.63061042765) < 0.001 As obs_getuscensusmeasure_null;
-- Poly-based OBS_GetUSCensusMeasure, Null input geom
SELECT cdb_observatory.obs_getuscensusmeasure(
NULL, 'male population', NULL) IS NULL As obs_getuscensusmeasure_null_geom;
-- Point-based OBS_GetUSCensusCategory
SELECT cdb_observatory.OBS_GetUSCensusCategory(
cdb_observatory._testpoint(), 'Spielman-Singleton Segments: 10 Clusters') = 'Wealthy, urban without Kids' As OBS_GetUSCensusCategory_point;
-- Area-based OBS_GetUSCensusCategory
SELECT cdb_observatory.OBS_GetUSCensusCategory(
cdb_observatory._testarea(), 'Spielman-Singleton Segments: 10 Clusters') = 'Wealthy, urban without Kids' As OBS_GetUSCensusCategory_polygon;
-- Null-input OBS_GetUSCensusCategory
SELECT cdb_observatory.OBS_GetUSCensusCategory(
NULL, 'Spielman-Singleton Segments: 10 Clusters') IS NULL As OBS_GetUSCensusCategory_null;
-- OBS_GetMeasureById tests
-- typical query
SELECT (cdb_observatory.OBS_GetMeasureById(
'36047048500',
'us.census.acs.B01003001',
'us.census.tiger.census_tract',
'2010 - 2014'
) - 3241) / 3241 < 0.0001 As OBS_GetMeasureById_cartodb_census_tract;
-- no boundary_id should give null
SELECT cdb_observatory.OBS_GetMeasureById(
'36047048500',
'us.census.acs.B01003001',
NULL,
NULL
) IS NULL As OBS_GetMeasureById_null_boundary_null_timespan;
-- query at block_group level
SELECT (cdb_observatory.OBS_GetMeasureById(
'360470485002',
'us.census.acs.B01003001',
'us.census.tiger.block_group',
'2010 - 2014'
) - 1900) / 1900 < 0.0001 As OBS_GetMeasureById_cartodb_block_group;
-- geom ref / boundary mismatch
SELECT cdb_observatory.OBS_GetMeasureById(
'36047048500',
'us.census.acs.B01003001',
'us.census.tiger.block_group',
'2010 - 2014'
) IS NULL As OBS_GetMeasureById_nulls;
-- NULL input id
SELECT cdb_observatory.OBS_GetMeasureById(
NULL,
'us.census.acs.B01003001',
'us.census.tiger.block_group',
'2010 - 2014'
) IS NULL As OBS_GetMeasureById_null_id;

View File

@@ -0,0 +1,496 @@
\pset format unaligned
\set ECHO none
SET client_min_messages TO WARNING;
-- set up variables for use in testing
\set cartodb_census_tract_geometry ''
\set cartodb_county_geometry ''
-- _OBS_SearchTables tests
SELECT
t.table_name = 'obs_1babf5a26a1ecda5fb74963e88408f71d0364b81' As _OBS_SearchTables_tables_match,
t.timespan = '2014' As _OBS_SearchTables_timespan_matches
FROM cdb_observatory._OBS_SearchTables(
'us.census.tiger.county',
'2014'
) As t(table_name, timespan);
-- _OBS_SearchTables tests
-- should not return tables for year that does not match
SELECT count(*) = 0 As _OBS_SearchTables_timespan_does_not_match
FROM cdb_observatory._OBS_SearchTables(
'us.census.tiger.county',
'1988' -- year before first tiger data was collected
) As t(table_name, timespan);
SELECT COUNT(*) > 0 AS _OBS_SearchTotalPop
FROM cdb_observatory.OBS_Search('total_pop')
AS t(id, description, name, aggregate, source);
SELECT COUNT(*) > 0 AS _OBS_GetAvailableBoundariesExist
FROM cdb_observatory.OBS_GetAvailableBoundaries(
cdb_observatory._TestPoint()
) AS t(boundary_id, description, time_span, tablename);
--
-- OBS_GetAvailableNumerators tests
--
SELECT 'us.census.acs.B01003001' IN (SELECT numer_id
FROM cdb_observatory.OBS_GetAvailableNumerators())
AS _obs_getavailablenumerators_usa_pop_in_all;
SELECT 'us.census.acs.B01003001' IN (SELECT numer_id
FROM cdb_observatory.OBS_GetAvailableNumerators(
ST_SetSRID(ST_MakePoint(-73.9, 40.7), 4326),
NULL, NULL, NULL, NULL
)) AS _obs_getavailablenumerators_usa_pop_in_nyc_point;
SELECT 'us.census.acs.B01003001' IN (SELECT numer_id
FROM cdb_observatory.OBS_GetAvailableNumerators(
ST_SetSRID(ST_MakeEnvelope(
-169.8046875, 21.289374355860424,
-47.4609375, 72.0739114882038
), 4326),
NULL, NULL, NULL, NULL
)) AS _obs_getavailablenumerators_usa_pop_in_usa_extents;
SELECT 'us.census.acs.B01003001' NOT IN (SELECT numer_id
FROM cdb_observatory.OBS_GetAvailableNumerators(
ST_SetSRID(ST_MakePoint(0, 0), 4326),
NULL, NULL, NULL, NULL
)) AS _obs_getavailablenumerators_no_usa_pop_not_in_zero_point;
SELECT 'us.census.acs.B01003001' IN (SELECT numer_id
FROM cdb_observatory.OBS_GetAvailableNumerators(
ST_SetSRID(ST_MakePoint(-73.9, 40.7), 4326),
ARRAY['subsection/tags.age_gender']
))
AS _obs_getavailablenumerators_usa_pop_in_age_gender_subsection;
SELECT 'us.census.acs.B01003001' NOT IN (SELECT numer_id
FROM cdb_observatory.OBS_GetAvailableNumerators(
ST_SetSRID(ST_MakePoint(-73.9, 40.7), 4326),
ARRAY['subsection/tags.income']
))
AS _obs_getavailablenumerators_no_pop_in_income_subsection;
SELECT 'us.census.acs.B01001002' IN (SELECT numer_id
FROM cdb_observatory.OBS_GetAvailableNumerators(
ST_SetSRID(ST_MakePoint(-73.9, 40.7), 4326),
NULL, 'us.census.acs.B01003001'
) WHERE valid_denom = True)
AS _obs_getavailablenumerators_male_pop_denom_by_total_pop;
SELECT 'us.census.acs.B19013001' NOT IN (SELECT numer_id
FROM cdb_observatory.OBS_GetAvailableNumerators(
ST_SetSRID(ST_MakePoint(-73.9, 40.7), 4326),
NULL, 'us.census.acs.B01003001'
) WHERE valid_denom = True)
AS _obs_getavailablenumerators_no_income_denom_by_total_pop;
SELECT 'us.zillow.AllHomes_Zhvi' IN (SELECT numer_id
FROM cdb_observatory.OBS_GetAvailableNumerators(
ST_SetSRID(ST_MakePoint(-73.9, 40.7), 4326),
NULL, NULL, 'us.census.tiger.zcta5'
) WHERE valid_geom = True)
AS _obs_getavailablenumerators_zillow_at_zcta5;
SELECT 'us.zillow.AllHomes_Zhvi' NOT IN (SELECT numer_id
FROM cdb_observatory.OBS_GetAvailableNumerators(
ST_SetSRID(ST_MakePoint(-73.9, 40.7), 4326),
NULL, NULL, 'us.census.tiger.block_group'
) WHERE valid_geom = True)
AS _obs_getavailablenumerators_no_zillow_at_block_group;
SELECT 'us.census.acs.B01003001' IN (SELECT numer_id
FROM cdb_observatory.OBS_GetAvailableNumerators(
ST_SetSRID(ST_MakePoint(-73.9, 40.7), 4326),
NULL, NULL, NULL, '2010 - 2014'
) WHERE valid_timespan = True)
AS _obs_getavailablenumerators_total_pop_2010_2014;
SELECT 'us.census.acs.B01003001' NOT IN (SELECT numer_id
FROM cdb_observatory.OBS_GetAvailableNumerators(
ST_SetSRID(ST_MakePoint(-73.9, 40.7), 4326),
NULL, NULL, NULL, '1996'
) WHERE valid_timespan = True)
AS _obs_getavailablenumerators_no_total_pop_1996;
--
-- OBS_GetAvailableDenominators tests
--
SELECT 'us.census.acs.B01003001' IN (SELECT denom_id
FROM cdb_observatory.OBS_GetAvailableDenominators())
AS _obs_getavailabledenominators_usa_pop_in_all;
SELECT 'us.census.acs.B01003001' IN (SELECT denom_id
FROM cdb_observatory.OBS_GetAvailableDenominators(
ST_SetSRID(ST_MakePoint(-73.9, 40.7), 4326),
NULL, NULL, NULL, NULL
)) AS _obs_getavailabledenominators_usa_pop_in_nyc_point;
SELECT 'us.census.acs.B01003001' IN (SELECT denom_id
FROM cdb_observatory.OBS_GetAvailableDenominators(
ST_SetSRID(ST_MakeEnvelope(
-169.8046875, 21.289374355860424,
-47.4609375, 72.0739114882038
), 4326),
NULL, NULL, NULL, NULL
)) AS _obs_getavailabledenominators_usa_pop_in_usa_extents;
SELECT 'us.census.acs.B01003001' NOT IN (SELECT denom_id
FROM cdb_observatory.OBS_GetAvailableDenominators(
ST_SetSRID(ST_MakePoint(0, 0), 4326),
NULL, NULL, NULL, NULL
)) AS _obs_getavailabledenominators_no_usa_pop_not_in_zero_point;
SELECT 'us.census.acs.B01003001' IN (SELECT denom_id
FROM cdb_observatory.OBS_GetAvailableDenominators(
ST_SetSRID(ST_MakePoint(-73.9, 40.7), 4326),
ARRAY['subsection/tags.age_gender']
))
AS _obs_getavailabledenominators_usa_pop_in_age_gender_subsection;
SELECT 'us.census.acs.B01003001' NOT IN (SELECT denom_id
FROM cdb_observatory.OBS_GetAvailableDenominators(
ST_SetSRID(ST_MakePoint(-73.9, 40.7), 4326),
ARRAY['subsection/tags.income']
))
AS _obs_getavailabledenominators_no_pop_in_income_subsection;
SELECT 'us.census.acs.B01003001' IN (SELECT denom_id
FROM cdb_observatory.OBS_GetAvailableDenominators(
ST_SetSRID(ST_MakePoint(-73.9, 40.7), 4326),
NULL, 'us.census.acs.B01001002'
) WHERE valid_numer = True)
AS _obs_getavailabledenominators_male_pop_denom_by_total_pop;
SELECT 'us.census.acs.B01003001' NOT IN (SELECT denom_id
FROM cdb_observatory.OBS_GetAvailableDenominators(
ST_SetSRID(ST_MakePoint(-73.9, 40.7), 4326),
NULL, 'us.census.acs.B19013001'
) WHERE valid_numer = True)
AS _obs_getavailabledenominators_no_income_denom_by_total_pop;
SELECT 'us.census.acs.B01003001' IN (SELECT denom_id
FROM cdb_observatory.OBS_GetAvailableDenominators(
ST_SetSRID(ST_MakePoint(-73.9, 40.7), 4326),
NULL, NULL, 'us.census.tiger.zcta5'
) WHERE valid_geom = True)
AS _obs_getavailabledenominators_at_zcta5;
SELECT 'us.census.acs.B01003001' NOT IN (SELECT denom_id
FROM cdb_observatory.OBS_GetAvailableDenominators(
ST_SetSRID(ST_MakePoint(-73.9, 40.7), 4326),
NULL, NULL, 'es.ine.the_geom'
) WHERE valid_geom = True)
AS _obs_getavailabledenominators_none_spanish_geom;
SELECT 'us.census.acs.B01003001' IN (SELECT denom_id
FROM cdb_observatory.OBS_GetAvailableDenominators(
ST_SetSRID(ST_MakePoint(-73.9, 40.7), 4326),
NULL, NULL, NULL, '2010 - 2014'
) WHERE valid_timespan = True)
AS _obs_getavailabledenominators_total_pop_2010_2014;
SELECT 'us.census.acs.B01003001' NOT IN (SELECT denom_id
FROM cdb_observatory.OBS_GetAvailableDenominators(
ST_SetSRID(ST_MakePoint(-73.9, 40.7), 4326),
NULL, NULL, NULL, '1996'
) WHERE valid_timespan = True)
AS _obs_getavailabledenominators_no_total_pop_1996;
--
-- OBS_GetAvailableGeometries tests
--
SELECT 'us.census.tiger.block_group' IN (SELECT geom_id
FROM cdb_observatory.OBS_GetAvailableGeometries())
AS _obs_getavailablegeometries_usa_bg_in_all;
SELECT 'us.census.tiger.block_group' IN (SELECT geom_id
FROM cdb_observatory.OBS_GetAvailableGeometries(
ST_SetSRID(ST_MakePoint(-73.9, 40.7), 4326),
NULL, NULL, NULL, NULL
)) AS _obs_getavailablegeometries_usa_bg_in_nyc_point;
SELECT 'us.census.tiger.block_group' IN (SELECT geom_id
FROM cdb_observatory.OBS_GetAvailableGeometries(
ST_SetSRID(ST_MakeEnvelope(
-169.8046875, 21.289374355860424,
-47.4609375, 72.0739114882038
), 4326),
NULL, NULL, NULL, NULL
)) AS _obs_getavailablegeometries_usa_bg_in_usa_extents;
SELECT 'us.census.tiger.block_group' NOT IN (SELECT geom_id
FROM cdb_observatory.OBS_GetAvailableGeometries(
ST_SetSRID(ST_MakePoint(0, 0), 4326),
NULL, NULL, NULL, NULL
)) AS _obs_getavailablegeometries_no_usa_bg_not_in_zero_point;
SELECT 'us.census.tiger.block_group' IN (SELECT geom_id
FROM cdb_observatory.OBS_GetAvailableGeometries(
ST_SetSRID(ST_MakePoint(-73.9, 40.7), 4326),
ARRAY['subsection/tags.boundary']
))
AS _obs_getavailablegeometries_usa_bg_in_boundary_subsection;
SELECT 'us.census.tiger.block_group' NOT IN (SELECT geom_id
FROM cdb_observatory.OBS_GetAvailableGeometries(
ST_SetSRID(ST_MakePoint(-73.9, 40.7), 4326),
ARRAY['section/tags.uk']
))
AS _obs_getavailablegeometries_no_bg_in_uk_section;
SELECT 'us.census.tiger.block_group' IN (SELECT geom_id
FROM cdb_observatory.OBS_GetAvailableGeometries(
ST_SetSRID(ST_MakePoint(-73.9, 40.7), 4326),
NULL, 'us.census.acs.B01003001'
) WHERE valid_numer = True)
AS _obs_getavailablegeometries_total_pop_in_usa_bg;
SELECT 'us.census.tiger.block_group' NOT IN (SELECT geom_id
FROM cdb_observatory.OBS_GetAvailableGeometries(
ST_SetSRID(ST_MakePoint(-73.9, 40.7), 4326),
NULL, 'foo.bar.baz'
) WHERE valid_numer = True)
AS _obs_getavailablegeometries_foobarbaz_not_in_usa_bg;
SELECT 'us.census.tiger.block_group' IN (SELECT geom_id
FROM cdb_observatory.OBS_GetAvailableGeometries(
ST_SetSRID(ST_MakePoint(-73.9, 40.7), 4326),
NULL, NULL, 'us.census.acs.B01003001'
) WHERE valid_denom = True)
AS _obs_getavailablegeometries_total_pop_denom_in_usa_bg;
SELECT 'us.census.tiger.block_group' NOT IN (SELECT geom_id
FROM cdb_observatory.OBS_GetAvailableGeometries(
ST_SetSRID(ST_MakePoint(-73.9, 40.7), 4326),
NULL, NULL, 'foo.bar.baz'
) WHERE valid_denom = True)
AS _obs_getavailablegeometries_foobarbaz_denom_not_in_usa_bg;
SELECT 'us.census.tiger.block_group' IN (SELECT geom_id
FROM cdb_observatory.OBS_GetAvailableGeometries(
ST_SetSRID(ST_MakePoint(-73.9, 40.7), 4326),
NULL, NULL, NULL, '2014'
) WHERE valid_timespan = True)
AS _obs_getavailablegeometries_bg_2014;
SELECT 'us.census.tiger.block_group' NOT IN (SELECT geom_id
FROM cdb_observatory.OBS_GetAvailableGeometries(
ST_SetSRID(ST_MakePoint(-73.9, 40.7), 4326),
NULL, NULL, NULL, '1996'
) WHERE valid_timespan = True)
AS _obs_getavailablegeometries_bg_not_1996;
--
-- OBS_GetAvailableTimespans tests
--
SELECT '2010 - 2014' IN (SELECT timespan_id
FROM cdb_observatory.OBS_GetAvailableTimespans())
AS _obs_getavailabletimespans_2010_2014_in_all;
SELECT '2010 - 2014' IN (SELECT timespan_id
FROM cdb_observatory.OBS_GetAvailableTimespans(
ST_SetSRID(ST_MakePoint(-73.9, 40.7), 4326),
NULL, NULL, NULL, NULL
)) AS _obs_getavailabletimespans_2010_2014_in_nyc_point;
SELECT '2010 - 2014' IN (SELECT timespan_id
FROM cdb_observatory.OBS_GetAvailableTimespans(
ST_SetSRID(ST_MakeEnvelope(
-169.8046875, 21.289374355860424,
-47.4609375, 72.0739114882038
), 4326),
NULL, NULL, NULL, NULL
)) AS _obs_getavailabletimespans_2010_2014_in_usa_extents;
SELECT '2010 - 2014' NOT IN (SELECT timespan_id
FROM cdb_observatory.OBS_GetAvailableTimespans(
ST_SetSRID(ST_MakePoint(0, 0), 4326),
NULL, NULL, NULL, NULL
)) AS _obs_getavailabletimespans_no_usa_bg_not_in_zero_point;
SELECT '2010 - 2014' IN (SELECT timespan_id
FROM cdb_observatory.OBS_GetAvailableTimespans(
ST_SetSRID(ST_MakePoint(-73.9, 40.7), 4326),
NULL, 'us.census.acs.B01003001'
) WHERE valid_numer = True)
AS _obs_getavailabletimespans_total_pop_in_2010_2014;
SELECT '2010 - 2014' NOT IN (SELECT timespan_id
FROM cdb_observatory.OBS_GetAvailableTimespans(
ST_SetSRID(ST_MakePoint(-73.9, 40.7), 4326),
NULL, 'foo.bar.baz'
) WHERE valid_numer = True)
AS _obs_getavailabletimespans_foobarbaz_not_in_2010_2014;
SELECT '2010 - 2014' IN (SELECT timespan_id
FROM cdb_observatory.OBS_GetAvailableTimespans(
ST_SetSRID(ST_MakePoint(-73.9, 40.7), 4326),
NULL, NULL, 'us.census.acs.B01003001'
) WHERE valid_denom = True)
AS _obs_getavailablegeometries_total_pop_denom_in_2010_2014;
SELECT '2010 - 2014' NOT IN (SELECT timespan_id
FROM cdb_observatory.OBS_GetAvailableTimespans(
ST_SetSRID(ST_MakePoint(-73.9, 40.7), 4326),
NULL, NULL, 'foo.bar.baz'
) WHERE valid_denom = True)
AS _obs_getavailablegeometries_foobarbaz_denom_not_in_2010_2014;
--
-- _OBS_GetGeometryScores tests
--
SELECT ARRAY_AGG(geom_id ORDER BY score DESC) =
ARRAY['us.census.tiger.block_group', 'us.census.tiger.census_tract',
'us.census.tiger.zcta5', 'us.census.tiger.county']
AS _obs_geometryscores_500m_buffer
FROM cdb_observatory._OBS_GetGeometryScores(
ST_Buffer(ST_SetSRID(ST_MakePoint(-73.9, 40.7), 4326)::Geography, 500)::Geometry(Geometry, 4326),
ARRAY['us.census.tiger.block_group', 'us.census.tiger.census_tract',
'us.census.tiger.zcta5', 'us.census.tiger.county']);
SELECT ARRAY_AGG(geom_id ORDER BY score DESC) =
ARRAY['us.census.tiger.block_group', 'us.census.tiger.census_tract',
'us.census.tiger.zcta5', 'us.census.tiger.county']
AS _obs_geometryscores_5km_buffer
FROM cdb_observatory._OBS_GetGeometryScores(
ST_Buffer(ST_SetSRID(ST_MakePoint(-73.9, 40.7), 4326)::Geography, 5000)::Geometry(Geometry, 4326),
ARRAY['us.census.tiger.block_group', 'us.census.tiger.census_tract',
'us.census.tiger.zcta5', 'us.census.tiger.county']);
SELECT ARRAY_AGG(geom_id ORDER BY score DESC) =
ARRAY['us.census.tiger.census_tract', 'us.census.tiger.zcta5',
'us.census.tiger.county', 'us.census.tiger.block_group']
AS _obs_geometryscores_50km_buffer
FROM cdb_observatory._OBS_GetGeometryScores(
ST_Buffer(ST_SetSRID(ST_MakePoint(-73.9, 40.7), 4326)::Geography, 50000)::Geometry(Geometry, 4326),
ARRAY['us.census.tiger.block_group', 'us.census.tiger.census_tract',
'us.census.tiger.zcta5', 'us.census.tiger.county']);
SELECT ARRAY_AGG(geom_id ORDER BY score DESC) =
ARRAY[ 'us.census.tiger.county', 'us.census.tiger.zcta5',
'us.census.tiger.census_tract', 'us.census.tiger.block_group']
AS _obs_geometryscores_500km_buffer
FROM cdb_observatory._OBS_GetGeometryScores(
ST_Buffer(ST_SetSRID(ST_MakePoint(-73.9, 40.7), 4326)::Geography, 500000)::Geometry(Geometry, 4326),
ARRAY['us.census.tiger.block_group', 'us.census.tiger.census_tract',
'us.census.tiger.zcta5', 'us.census.tiger.county']);
SELECT ARRAY_AGG(geom_id ORDER BY score DESC) =
ARRAY['us.census.tiger.county', 'us.census.tiger.zcta5',
'us.census.tiger.census_tract', 'us.census.tiger.block_group']
AS _obs_geometryscores_2500km_buffer
FROM cdb_observatory._OBS_GetGeometryScores(
ST_Buffer(ST_SetSRID(ST_MakePoint(-73.9, 40.7), 4326)::Geography, 2500000)::Geometry(Geometry, 4326),
ARRAY['us.census.tiger.block_group', 'us.census.tiger.census_tract',
'us.census.tiger.zcta5', 'us.census.tiger.county']);
SELECT JSON_Object_Agg(geom_id, numgeoms::int ORDER BY numgeoms DESC)::Text
= '{ "us.census.tiger.block_group" : 9, "us.census.tiger.census_tract" : 3, "us.census.tiger.zcta5" : 0, "us.census.tiger.county" : 0 }'
AS _obs_geometryscores_numgeoms_500m_buffer
FROM cdb_observatory._OBS_GetGeometryScores(
ST_Buffer(ST_SetSRID(ST_MakePoint(-73.9, 40.7), 4326)::Geography, 500)::Geometry(Geometry, 4326),
ARRAY['us.census.tiger.block_group', 'us.census.tiger.census_tract',
'us.census.tiger.zcta5', 'us.census.tiger.county']);
SELECT JSON_Object_Agg(geom_id, numgeoms::int ORDER BY numgeoms DESC)::Text =
'{ "us.census.tiger.block_group" : 899, "us.census.tiger.census_tract" : 328, "us.census.tiger.zcta5" : 45, "us.census.tiger.county" : 1 }'
AS _obs_geometryscores_numgeoms_5km_buffer
FROM cdb_observatory._OBS_GetGeometryScores(
ST_Buffer(ST_SetSRID(ST_MakePoint(-73.9, 40.7), 4326)::Geography, 5000)::Geometry(Geometry, 4326),
ARRAY['us.census.tiger.block_group', 'us.census.tiger.census_tract',
'us.census.tiger.zcta5', 'us.census.tiger.county']);
SELECT JSON_Object_Agg(geom_id, numgeoms::int ORDER BY numgeoms DESC)::Text =
'{ "us.census.tiger.block_group" : 12112, "us.census.tiger.census_tract" : 3792, "us.census.tiger.zcta5" : 550, "us.census.tiger.county" : 13 }'
AS _obs_geometryscores_numgeoms_50km_buffer
FROM cdb_observatory._OBS_GetGeometryScores(
ST_Buffer(ST_SetSRID(ST_MakePoint(-73.9, 40.7), 4326)::Geography, 50000)::Geometry(Geometry, 4326),
ARRAY['us.census.tiger.block_group', 'us.census.tiger.census_tract',
'us.census.tiger.zcta5', 'us.census.tiger.county']);
SELECT JSON_Object_Agg(geom_id, numgeoms::int ORDER BY numgeoms DESC)::Text =
'{ "us.census.tiger.block_group" : 48415, "us.census.tiger.census_tract" : 15776, "us.census.tiger.zcta5" : 6534, "us.census.tiger.county" : 295 }'
AS _obs_geometryscores_numgeoms_500km_buffer
FROM cdb_observatory._OBS_GetGeometryScores(
ST_Buffer(ST_SetSRID(ST_MakePoint(-73.9, 40.7), 4326)::Geography, 500000)::Geometry(Geometry, 4326),
ARRAY['us.census.tiger.block_group', 'us.census.tiger.census_tract',
'us.census.tiger.zcta5', 'us.census.tiger.county']);
SELECT JSON_Object_Agg(geom_id, numgeoms::int ORDER BY numgeoms DESC)::Text =
'{ "us.census.tiger.block_group" : 165489, "us.census.tiger.census_tract" : 55152, "us.census.tiger.zcta5" : 26500, "us.census.tiger.county" : 2551 }'
AS _obs_geometryscores_numgeoms_2500km_buffer
FROM cdb_observatory._OBS_GetGeometryScores(
ST_Buffer(ST_SetSRID(ST_MakePoint(-73.9, 40.7), 4326)::Geography, 2500000)::Geometry(Geometry, 4326),
ARRAY['us.census.tiger.block_group', 'us.census.tiger.census_tract',
'us.census.tiger.zcta5', 'us.census.tiger.county']);
SELECT ARRAY_AGG(geom_id ORDER BY score DESC) =
ARRAY['us.census.tiger.county', 'us.census.tiger.zcta5',
'us.census.tiger.census_tract', 'us.census.tiger.block_group']
AS _obs_geometryscores_500km_buffer_50_geoms
FROM cdb_observatory._OBS_GetGeometryScores(
ST_Buffer(ST_SetSRID(ST_MakePoint(-73.9, 40.7), 4326)::Geography, 50000)::Geometry(Geometry, 4326),
ARRAY['us.census.tiger.block_group', 'us.census.tiger.census_tract',
'us.census.tiger.zcta5', 'us.census.tiger.county'], 50);
SELECT ARRAY_AGG(geom_id ORDER BY score DESC)
= ARRAY['us.census.tiger.zcta5', 'us.census.tiger.county',
'us.census.tiger.census_tract', 'us.census.tiger.block_group']
AS _obs_geometryscores_500km_buffer_500_geoms
FROM cdb_observatory._OBS_GetGeometryScores(
ST_Buffer(ST_SetSRID(ST_MakePoint(-73.9, 40.7), 4326)::Geography, 50000)::Geometry(Geometry, 4326),
ARRAY['us.census.tiger.block_group', 'us.census.tiger.census_tract',
'us.census.tiger.zcta5', 'us.census.tiger.county'], 500);
SELECT ARRAY_AGG(geom_id ORDER BY score DESC) =
ARRAY['us.census.tiger.census_tract', 'us.census.tiger.zcta5',
'us.census.tiger.county', 'us.census.tiger.block_group']
AS _obs_geometryscores_500km_buffer_2500_geoms
FROM cdb_observatory._OBS_GetGeometryScores(
ST_Buffer(ST_SetSRID(ST_MakePoint(-73.9, 40.7), 4326)::Geography, 50000)::Geometry(Geometry, 4326),
ARRAY['us.census.tiger.block_group', 'us.census.tiger.census_tract',
'us.census.tiger.zcta5', 'us.census.tiger.county'], 2500);
SELECT ARRAY_AGG(geom_id ORDER BY score DESC) =
ARRAY['us.census.tiger.block_group', 'us.census.tiger.census_tract',
'us.census.tiger.zcta5', 'us.census.tiger.county']
AS _obs_geometryscores_500km_buffer_25000_geoms
FROM cdb_observatory._OBS_GetGeometryScores(
ST_Buffer(ST_SetSRID(ST_MakePoint(-73.9, 40.7), 4326)::Geography, 50000)::Geometry(Geometry, 4326),
ARRAY['us.census.tiger.block_group', 'us.census.tiger.census_tract',
'us.census.tiger.zcta5', 'us.census.tiger.county'], 25000);
--
-- OBS_LegacyBuilderMetadata tests
--
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()
) AS _total_pop_in_legacy_builder_metadata;
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()
) AS _median_income_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
(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;

File diff suppressed because one or more lines are too long

View File

@@ -1,46 +0,0 @@
SET client_min_messages TO NOTICE;
\set ECHO none
-- metadata
\echo Dropping obs_table.sql fixture table...
DROP TABLE observatory.obs_table;
\echo Done.
\echo Dropping obs_column.sql fixture table...
DROP TABLE observatory.obs_column;
\echo Done.
\echo Dropping obs_column_table.sql fixture table...
DROP TABLE observatory.obs_column_table;
\echo Done.
\echo Dropping obs_column_to_column.sql fixture table...
DROP TABLE observatory.obs_column_to_column;
\echo Done.
-- data
\echo Dropping obs_85328201013baa14e8e8a4a57a01e6f6fbc5f9b1 fixture table...
DROP TABLE observatory.obs_85328201013baa14e8e8a4a57a01e6f6fbc5f9b1;
\echo Done.
\echo Dropping obs_3e7cc9cfd403b912c57b42d5f9195af9ce2f3cdb fixture table...
DROP TABLE observatory.obs_3e7cc9cfd403b912c57b42d5f9195af9ce2f3cdb;
\echo Done.
\echo Dropping obs_ab038198aaab3f3cb055758638ee4de28ad70146 fixture table...
DROP TABLE observatory.obs_ab038198aaab3f3cb055758638ee4de28ad70146;
\echo Done.
\echo Dropping obs_a92e1111ad3177676471d66bb8036e6d057f271b fixture table...
DROP TABLE observatory.obs_a92e1111ad3177676471d66bb8036e6d057f271b;
\echo Done.
\echo Dropping obs_11ee8b82c877c073438bc935a91d3dfccef875d1 fixture table...
DROP TABLE observatory.obs_11ee8b82c877c073438bc935a91d3dfccef875d1;
\echo Done.
\echo Dropping obs_d34555209878e8c4b37cf0b2b3d072ff129ec470 fixture table...
DROP TABLE observatory.obs_d34555209878e8c4b37cf0b2b3d072ff129ec470;
\echo Done.
\unset ECHO

View File

@@ -1,46 +0,0 @@
SET client_min_messages TO WARNING;
\set ECHO none
-- metadata
\echo Loading obs_table.sql fixture file...
\i test/fixtures/obs_table.sql
\echo Done.
\echo Loading obs_column.sql fixture file...
\i test/fixtures/obs_column.sql
\echo Done.
\echo Loading obs_column_table.sql fixture file...
\i test/fixtures/obs_column_table.sql
\echo Done.
\echo Loading obs_column_to_column.sql fixture file...
\i test/fixtures/obs_column_to_column.sql
\echo Done.
-- data
\echo Loading obs_85328201013baa14e8e8a4a57a01e6f6fbc5f9b1.sql fixture file...
\i test/fixtures/obs_85328201013baa14e8e8a4a57a01e6f6fbc5f9b1.sql
\echo Done.
\echo Loading obs_3e7cc9cfd403b912c57b42d5f9195af9ce2f3cdb.sql fixture file...
\i test/fixtures/obs_3e7cc9cfd403b912c57b42d5f9195af9ce2f3cdb.sql
\echo Done.
\echo Loading obs_ab038198aaab3f3cb055758638ee4de28ad70146.sql fixture file...
\i test/fixtures/obs_ab038198aaab3f3cb055758638ee4de28ad70146.sql
\echo Done.
\echo Loading obs_a92e1111ad3177676471d66bb8036e6d057f271b.sql fixture file...
\i test/fixtures/obs_a92e1111ad3177676471d66bb8036e6d057f271b.sql
\echo Done.
\echo Loading obs_11ee8b82c877c073438bc935a91d3dfccef875d1.sql fixture file...
\i test/fixtures/obs_11ee8b82c877c073438bc935a91d3dfccef875d1.sql
\echo Done.
\echo Loading obs_d34555209878e8c4b37cf0b2b3d072ff129ec470.sql fixture file...
\i test/fixtures/obs_d34555209878e8c4b37cf0b2b3d072ff129ec470.sql
\echo Done.
\unset ECHO

View File

@@ -0,0 +1,3 @@
nose
nose_parameterized
psycopg2

14
src/python/test/README.md Normal file
View File

@@ -0,0 +1,14 @@
### Integration/performance tests
Tests here are meant to be run on a box with an Observatory meta/data dump
loaded and ready to be tested against the API.
The local Python needs the requirements in `src/python/requirements.txt`.
In order to find and access the correct database, the `PGUSER`, `PGPASSWORD`,
`PGHOST`, `PGPORT` and `PGDATABASE` env variables should be set.
Tests should be executed as follows:
nosetests test/autotest.py
nosetests -s test/perftest.py

294
src/python/test/autotest.py Normal file
View File

@@ -0,0 +1,294 @@
from nose.tools import assert_equal, assert_is_not_none
from nose.plugins.skip import SkipTest
from nose_parameterized import parameterized
from util import query
USE_SCHEMA = True
MEASURE_COLUMNS = query('''
SELECT distinct numer_id, numer_aggregate NOT ILIKE 'sum' as point_only
FROM observatory.obs_meta
WHERE numer_type ILIKE 'numeric'
AND numer_weight > 0
''').fetchall()
CATEGORY_COLUMNS = query('''
SELECT distinct numer_id
FROM observatory.obs_meta
WHERE numer_type ILIKE 'text'
AND numer_weight > 0
''').fetchall()
BOUNDARY_COLUMNS = query('''
SELECT id FROM observatory.obs_column
WHERE type ILIKE 'geometry'
AND weight > 0
''').fetchall()
US_CENSUS_MEASURE_COLUMNS = query('''
SELECT distinct numer_name
FROM observatory.obs_meta
WHERE numer_type ILIKE 'numeric'
AND 'us.census.acs.acs' = ANY (subsection_tags)
AND numer_weight > 0
''').fetchall()
SKIP_COLUMNS = set([
u'mx.inegi_columns.INDI18',
u'mx.inegi_columns.ECO40',
u'mx.inegi_columns.POB34',
u'mx.inegi_columns.POB63',
u'mx.inegi_columns.INDI7',
u'mx.inegi_columns.EDU28',
u'mx.inegi_columns.SCONY10',
u'mx.inegi_columns.EDU31',
u'mx.inegi_columns.POB7',
u'mx.inegi_columns.VIV30',
u'mx.inegi_columns.INDI12',
u'mx.inegi_columns.EDU13',
u'mx.inegi_columns.ECO43',
u'mx.inegi_columns.VIV9',
u'mx.inegi_columns.HOGAR25',
u'mx.inegi_columns.POB32',
u'mx.inegi_columns.ECO7',
u'mx.inegi_columns.INDI19',
u'mx.inegi_columns.INDI16',
u'mx.inegi_columns.POB65',
u'mx.inegi_columns.INDI3',
u'mx.inegi_columns.INDI9',
u'mx.inegi_columns.POB36',
u'mx.inegi_columns.POB33',
u'mx.inegi_columns.POB58',
u'mx.inegi_columns.DISC4',
])
#def default_geometry_id(column_id):
# '''
# Returns default test point for the column_id.
# '''
# if column_id == 'whosonfirst.wof_disputed_geom':
# return 'ST_SetSRID(ST_MakePoint(76.57, 33.78), 4326)'
# elif column_id == 'whosonfirst.wof_marinearea_geom':
# return 'ST_SetSRID(ST_MakePoint(-68.47, 43.33), 4326)'
# elif column_id in ('us.census.tiger.school_district_elementary',
# 'us.census.tiger.school_district_secondary',
# 'us.census.tiger.school_district_elementary_clipped',
# 'us.census.tiger.school_district_secondary_clipped'):
# return 'ST_SetSRID(ST_MakePoint(-73.7067, 40.7025), 4326)'
# elif column_id.startswith('es.ine'):
# return 'ST_SetSRID(ST_MakePoint(-2.51141249535454, 42.8226119029222), 4326)'
# elif column_id.startswith('us.zillow'):
# return 'ST_SetSRID(ST_MakePoint(-81.3544048197256, 28.3305906291771), 4326)'
# elif column_id.startswith('ca.'):
# return ''
# else:
# return 'ST_SetSRID(ST_MakePoint(-73.9, 40.7), 4326)'
def default_lonlat(column_id):
'''
Returns default test point for the column_id.
'''
if column_id == 'whosonfirst.wof_disputed_geom':
return (76.57, 33.78)
elif column_id == 'whosonfirst.wof_marinearea_geom':
return (-68.47, 43.33)
elif column_id in ('us.census.tiger.school_district_elementary',
'us.census.tiger.school_district_secondary',
'us.census.tiger.school_district_elementary_clipped',
'us.census.tiger.school_district_secondary_clipped'):
return (40.7025, -73.7067)
elif column_id.startswith('uk'):
if 'WA' in column_id:
return (51.46844551219723, -3.184833526611328)
else:
return (51.51461834694225, -0.08883476257324219)
elif column_id.startswith('es'):
return (42.8226119029222, -2.51141249535454)
elif column_id.startswith('us.zillow'):
return (28.3305906291771, -81.3544048197256)
elif column_id.startswith('mx.'):
return (19.41347699386547, -99.17019367218018)
elif column_id.startswith('th.'):
return (13.725377712079784, 100.49263000488281)
# cols for French Guyana only
elif column_id in ('fr.insee.P12_RP_CHOS', 'fr.insee.P12_RP_HABFOR'
, 'fr.insee.P12_RP_EAUCH', 'fr.insee.P12_RP_BDWC'
, 'fr.insee.P12_RP_MIDUR', 'fr.insee.P12_RP_CLIM'
, 'fr.insee.P12_RP_MIBOIS', 'fr.insee.P12_RP_CASE'
, 'fr.insee.P12_RP_TTEGOU', 'fr.insee.P12_RP_ELEC'
, 'fr.insee.P12_ACTOCC15P_ILT45D'
, 'fr.insee.P12_RP_CHOS', 'fr.insee.P12_RP_HABFOR'
, 'fr.insee.P12_RP_EAUCH', 'fr.insee.P12_RP_BDWC'
, 'fr.insee.P12_RP_MIDUR', 'fr.insee.P12_RP_CLIM'
, 'fr.insee.P12_RP_MIBOIS', 'fr.insee.P12_RP_CASE'
, 'fr.insee.P12_RP_TTEGOU', 'fr.insee.P12_RP_ELEC'
, 'fr.insee.P12_ACTOCC15P_ILT45D'):
return (4.938408371206558, -52.32908248901367)
elif column_id.startswith('fr.'):
return (48.860875144709475, 2.3613739013671875)
elif column_id.startswith('ca.'):
return (43.65594991256823, -79.37965393066406)
elif column_id.startswith('us.census.'):
return (40.7, -73.9)
elif column_id.startswith('us.dma.'):
return (40.7, -73.9)
elif column_id.startswith('us.ihme.'):
return (40.7, -73.9)
elif column_id.startswith('us.bls.'):
return (40.7, -73.9)
elif column_id.startswith('us.qcew.'):
return (40.7, -73.9)
elif column_id.startswith('whosonfirst.'):
return (40.7, -73.9)
elif column_id.startswith('us.epa.'):
return (40.7, -73.9)
elif column_id.startswith('eu.'):
raise SkipTest('No tests for Eurostat!')
#return (52.52207036136366, 13.40606689453125)
else:
raise Exception('No catalog point set for {}'.format(column_id))
def default_point(column_id):
lat, lng = default_lonlat(column_id)
return 'ST_SetSRID(ST_MakePoint({lng}, {lat}), 4326)'.format(
lat=lat, lng=lng)
def default_area(column_id):
'''
Returns default test area for the column_id
'''
point = default_point(column_id)
area = 'ST_Transform(ST_Buffer(ST_Transform({point}, 3857), 250), 4326)'.format(
point=point)
return area
@parameterized(US_CENSUS_MEASURE_COLUMNS)
def test_get_us_census_measure_points(name):
resp = query('''
SELECT * FROM {schema}OBS_GetUSCensusMeasure({point}, '{name}')
'''.format(name=name.replace("'", "''"),
schema='cdb_observatory.' if USE_SCHEMA else '',
point=default_point('')))
rows = resp.fetchall()
assert_equal(1, len(rows))
assert_is_not_none(rows[0][0])
@parameterized(MEASURE_COLUMNS)
def test_get_measure_areas(column_id, point_only):
if column_id in SKIP_COLUMNS:
raise SkipTest('Column {} should be skipped'.format(column_id))
if point_only:
return
resp = query('''
SELECT * FROM {schema}OBS_GetMeasure({area}, '{column_id}')
'''.format(column_id=column_id,
schema='cdb_observatory.' if USE_SCHEMA else '',
area=default_area(column_id)))
rows = resp.fetchall()
assert_equal(1, len(rows))
assert_is_not_none(rows[0][0])
@parameterized(MEASURE_COLUMNS)
def test_get_measure_points(column_id, point_only):
if column_id in SKIP_COLUMNS:
raise SkipTest('Column {} should be skipped'.format(column_id))
resp = query('''
SELECT * FROM {schema}OBS_GetMeasure({point}, '{column_id}')
'''.format(column_id=column_id,
schema='cdb_observatory.' if USE_SCHEMA else '',
point=default_point(column_id)))
rows = resp.fetchall()
assert_equal(1, len(rows))
assert_is_not_none(rows[0][0])
#@parameterized(CATEGORY_COLUMNS)
#def test_get_category_areas(column_id):
# resp = query('''
#SELECT * FROM {schema}OBS_GetCategory({area}, '{column_id}')
# '''.format(column_id=column_id,
# schema='cdb_observatory.' if USE_SCHEMA else '',
# area=default_area(column_id)))
# assert_equal(resp.status_code, 200)
# rows = resp.json()['rows']
# assert_equal(1, len(rows))
# assert_is_not_none(rows[0][0])
@parameterized(CATEGORY_COLUMNS)
def test_get_category_points(column_id):
if column_id in SKIP_COLUMNS:
raise SkipTest('Column {} should be skipped'.format(column_id))
resp = query('''
SELECT * FROM {schema}OBS_GetCategory({point}, '{column_id}')
'''.format(column_id=column_id,
schema='cdb_observatory.' if USE_SCHEMA else '',
point=default_point(column_id)))
rows = resp.fetchall()
assert_equal(1, len(rows))
assert_is_not_none(rows[0][0])
#@parameterized(BOUNDARY_COLUMNS)
#def test_get_boundaries_by_geometry(column_id):
# resp = query('''
#SELECT * FROM {schema}OBS_GetBoundariesByGeometry({area}, '{column_id}')
# '''.format(column_id=column_id,
# schema='cdb_observatory.' if USE_SCHEMA else '',
# area=default_area(column_id)))
# assert_equal(resp.status_code, 200)
# rows = resp.json()['rows']
# assert_equal(1, len(rows))
# assert_is_not_none(rows[0][0])
#@parameterized(BOUNDARY_COLUMNS)
#def test_get_points_by_geometry(column_id):
# resp = query('''
#SELECT * FROM {schema}OBS_GetPointsByGeometry({area}, '{column_id}')
# '''.format(column_id=column_id,
# schema='cdb_observatory.' if USE_SCHEMA else '',
# area=default_area(column_id)))
# assert_equal(resp.status_code, 200)
# rows = resp.json()['rows']
# assert_equal(1, len(rows))
# assert_is_not_none(rows[0][0])
#@parameterized(BOUNDARY_COLUMNS)
#def test_get_boundary_points(column_id):
# resp = query('''
#SELECT * FROM {schema}OBS_GetBoundary({point}, '{column_id}')
# '''.format(column_id=column_id,
# schema='cdb_observatory.' if USE_SCHEMA else '',
# point=default_point(column_id)))
# assert_equal(resp.status_code, 200)
# rows = resp.json()['rows']
# assert_equal(1, len(rows))
# assert_is_not_none(rows[0][0])
#@parameterized(BOUNDARY_COLUMNS)
#def test_get_boundary_id(column_id):
# resp = query('''
#SELECT * FROM {schema}OBS_GetBoundaryId({point}, '{column_id}')
# '''.format(column_id=column_id,
# schema='cdb_observatory.' if USE_SCHEMA else '',
# point=default_point(column_id)))
# assert_equal(resp.status_code, 200)
# rows = resp.json()['rows']
# assert_equal(1, len(rows))
# assert_is_not_none(rows[0][0])
#@parameterized(BOUNDARY_COLUMNS)
#def test_get_boundary_by_id(column_id):
# resp = query('''
#SELECT * FROM {schema}OBS_GetBoundaryById({geometry_id}, '{column_id}')
# '''.format(column_id=column_id,
# schema='cdb_observatory.' if USE_SCHEMA else '',
# geometry_id=default_geometry_id(column_id)))
# assert_equal(resp.status_code, 200)
# rows = resp.json()['rows']
# assert_equal(1, len(rows))
# assert_is_not_none(rows[0][0])

View File

@@ -0,0 +1,62 @@
from nose.tools import assert_equal, assert_is_not_none
from nose_parameterized import parameterized
from util import query, commit
from time import time
USE_SCHEMA = True
for q in (
'DROP TABLE IF EXISTS obs_censustest',
'''CREATE TABLE obs_censustest (cartodb_id SERIAL PRIMARY KEY,
the_geom GEOMETRY, name TEXT, measure NUMERIC, category TEXT)''',
'''INSERT INTO obs_censustest (the_geom, name)
SELECT * FROM {schema}OBS_GetBoundariesByGeometry(
st_makeenvelope(-74.05437469482422,40.66319159533881,
-73.81885528564453,40.745696344339564, 4326),
'us.census.tiger.block_group_clipped') As m(the_geom, geoid)'''
):
query(q.format(
schema='cdb_observatory.' if USE_SCHEMA else '',
))
commit()
ARGS = {
'OBS_GetMeasureByID': "name, 'us.census.acs.B01001002', '{}'",
'OBS_GetMeasure': "{}, 'us.census.acs.B01001002'",
'OBS_GetCategory': "{}, 'us.census.spielman_singleton_segments.X10'",
}
GEOMS = {
'point': 'ST_PointOnSurface(the_geom)',
'polygon_match': 'the_geom',
'polygon_buffered': 'ST_Buffer(the_geom::GEOGRAPHY, 1000)::GEOMETRY(GEOMETRY, 4326)',
}
@parameterized([
('OBS_GetMeasureByID', 'us.census.tiger.block_group_clipped'),
('OBS_GetMeasureByID', 'us.census.tiger.county'),
('OBS_GetMeasure', GEOMS['point']),
('OBS_GetMeasure', GEOMS['polygon_match']),
('OBS_GetMeasure', GEOMS['polygon_buffered']),
('OBS_GetCategory', GEOMS['point']),
('OBS_GetCategory', GEOMS['polygon_match']),
('OBS_GetCategory', GEOMS['polygon_buffered']),
])
def test_performance(api_method, arg):
print api_method, arg
col = 'measure' if 'measure' in api_method.lower() else 'category'
for rows in (1, 10, 50, 100):
q = 'UPDATE obs_censustest SET {col} = {schema}{api_method}({args}) WHERE cartodb_id < {n}'.format(
col=col,
schema='cdb_observatory.' if USE_SCHEMA else '',
api_method=api_method,
args=ARGS[api_method].format(arg),
n=rows+1)
start = time()
query(q)
end = time()
print rows, ': ', (rows / (end - start)), ' QPS'

31
src/python/test/util.py Normal file
View File

@@ -0,0 +1,31 @@
import os
import psycopg2
DB_CONN = psycopg2.connect('postgres://{user}:{password}@{host}:{port}/{database}'.format(
user=os.environ.get('PGUSER', 'postgres'),
password=os.environ.get('PGPASSWORD', ''),
host=os.environ.get('PGHOST', 'localhost'),
port=os.environ.get('PGPORT', '5432'),
database=os.environ.get('PGDATABASE', 'postgres'),
))
CURSOR = DB_CONN.cursor()
def query(q):
'''
Query the database.
'''
try:
CURSOR.execute(q)
return CURSOR
except:
DB_CONN.rollback()
raise
def commit():
try:
DB_CONN.commit()
except:
DB_CONN.rollback()
raise