Adds schema_version 5 support alongside the existing v4 corpus:
.validate_schema() now accepts a supported set (4, 5) instead of a single
expected version, and cog_spending()/cog_revenue() gain basis =
c("harmonized", "raw"). Harmonized basis routes to new
spending_annotated_harmonized / revenue_annotated_harmonized views built on
spending_long_harmonized / revenue_long_harmonized (REPLACE(harmonized_code
AS item_code), excluding aggregate and NA-harmonized rows); raw basis is
byte-identical to the pre-Phase-R2 behavior. On a v4 corpus, an unspecified
basis silently resolves to "raw" with a provenance note; an explicit
basis = "harmonized" aborts with an actionable message.
Provenance gains basis, basis_note, and a harmonization block
(applied/na_rows_excluded/na_amount_excluded). The five new schema-v5-only
SQL views (harmonized long/annotated views, harmonization_map,
harmonization_recipes, series_breaks_pq) are registered conditionally on
manifest$schema_version >= 5, since DuckDB's read_parquet() errors eagerly
at CREATE VIEW time when the backing file doesn't exist on a v4 corpus.
Fixture corpus regenerated to schema_version 5 / years 2011, 2012, 2019,
2020 (2011->2012 spans the wide-aggregate -> modern-leaf format boundary
needed for the harmonization/recipe work), with the harmonization_map /
harmonization_recipes / series_breaks parquet tables bundled alongside the
existing metadata registries.
17 lines
448 B
SQL
17 lines
448 B
SQL
CREATE OR REPLACE VIEW spending_annotated_harmonized AS
|
|
SELECT
|
|
s.*,
|
|
x.gov_name AS xwalk_gov_name,
|
|
x.govs_type,
|
|
x.type_label,
|
|
x.fips_state AS xwalk_fips_state,
|
|
x.fips_county AS xwalk_fips_county,
|
|
x.fips_place,
|
|
x.population_acs,
|
|
c.category,
|
|
c.category_type,
|
|
c.spend_subtype
|
|
FROM spending_long_harmonized s
|
|
LEFT JOIN canonical_fips_xwalk x USING (canonical_govid)
|
|
LEFT JOIN summary_categories c USING (item_code);
|