The UNION ALL that reconstructs obs — its 18 columns, in OBS_VIEW_COLUMNS order, under their
original names — from the bifurcated pair (pre-release plan D-S1): realm is the constant each
branch contributes, value becomes measurement_value. The default sources are the tokens
{{obs_bio}} / {{obs_env}}, which is how the SQL is stored in a release's catalog.json
(views.obs): every resolver — calcofi4r::cc_get_db(), calcofi4py.cc_get_db(), db-query's
__TBL:obs__ — substitutes its own way of reading each table (substitute_view_tables()), a
quoted table name inside a connection or a read_parquet(...) over the catalog's objects.
Examples
cat(obs_view_sql())
#> SELECT obs_id, 'bio' AS realm, dataset_key, sample_key, grid_key, cruise_key,
#> latitude, longitude, datetime, depth_min_m, depth_max_m,
#> taxon_key, life_stage, measurement_type, value AS measurement_value,
#> measurement_qual, measurement_prec, hex_id
#> FROM {{obs_bio}}
#> UNION ALL
#> SELECT obs_id, 'env' AS realm, dataset_key, sample_key, grid_key, cruise_key,
#> latitude, longitude, datetime, depth_min_m, depth_max_m,
#> taxon_key, life_stage, measurement_type, value AS measurement_value,
#> measurement_qual, measurement_prec, hex_id
#> FROM {{obs_env}}
cat(obs_view_sql('"obs_bio"', '"obs_env"'))
#> SELECT obs_id, 'bio' AS realm, dataset_key, sample_key, grid_key, cruise_key,
#> latitude, longitude, datetime, depth_min_m, depth_max_m,
#> taxon_key, life_stage, measurement_type, value AS measurement_value,
#> measurement_qual, measurement_prec, hex_id
#> FROM "obs_bio"
#> UNION ALL
#> SELECT obs_id, 'env' AS realm, dataset_key, sample_key, grid_key, cruise_key,
#> latitude, longitude, datetime, depth_min_m, depth_max_m,
#> taxon_key, life_stage, measurement_type, value AS measurement_value,
#> measurement_qual, measurement_prec, hex_id
#> FROM "obs_env"