From db962d50cf240caa9d14bbb3a8b399eb47cbb945 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B8rgen=20H=2E=20Fjeld?= Date: Thu, 14 Nov 2024 15:42:28 +0100 Subject: [PATCH] db: Add has_legal_unit to statistical_unit --- .../0064_create_timeline_establishment.up.sql | 5 +++- .../0065_create_timeline_legal_unit.up.sql | 24 +++++++++++-------- .../0066_create_timeline_enterprise.up.sql | 9 ++++++- .../0069_create_statistical_unit_def.up.sql | 5 ++++ 4 files changed, 31 insertions(+), 12 deletions(-) diff --git a/migrations/0064_create_timeline_establishment.up.sql b/migrations/0064_create_timeline_establishment.up.sql index d7b906e4e..3742c6f36 100644 --- a/migrations/0064_create_timeline_establishment.up.sql +++ b/migrations/0064_create_timeline_establishment.up.sql @@ -42,6 +42,7 @@ CREATE VIEW public.timeline_establishment , postal_country_id , postal_country_iso_2 , invalid_codes + , has_legal_unit , establishment_id , legal_unit_id , enterprise_id @@ -101,6 +102,8 @@ CREATE VIEW public.timeline_establishment -- , es.invalid_codes AS invalid_codes -- + , (es.legal_unit_id IS NOT NULL) AS has_legal_unit + -- , es.id AS establishment_id , es.legal_unit_id AS legal_unit_id , es.enterprise_id AS enterprise_id @@ -171,4 +174,4 @@ CREATE VIEW public.timeline_establishment ) AS ds ON TRUE -- ORDER BY t.unit_type, t.unit_id, t.valid_after -; \ No newline at end of file +; diff --git a/migrations/0065_create_timeline_legal_unit.up.sql b/migrations/0065_create_timeline_legal_unit.up.sql index 3d6f77b04..da1ba1428 100644 --- a/migrations/0065_create_timeline_legal_unit.up.sql +++ b/migrations/0065_create_timeline_legal_unit.up.sql @@ -42,6 +42,7 @@ CREATE VIEW public.timeline_legal_unit , postal_country_id , postal_country_iso_2 , invalid_codes + , has_legal_unit , establishment_ids , legal_unit_id , enterprise_id @@ -103,6 +104,8 @@ CREATE VIEW public.timeline_legal_unit -- , lu.invalid_codes AS invalid_codes -- + , TRUE AS has_legal_unit + -- , lu.id AS legal_unit_id , lu.enterprise_id AS enterprise_id , COALESCE(public.get_jsonb_stats(NULL, lu.id, t.valid_after, t.valid_to), '{}'::JSONB) AS stats @@ -172,7 +175,7 @@ CREATE VIEW public.timeline_legal_unit OR COALESCE(ds.id = pol.data_source_id , FALSE) OR COALESCE(ds.id = ANY(sfu.data_source_ids), FALSE) ) AS ds ON TRUE - ), aggregation AS ( + ), establishment_aggregation AS ( SELECT tes.legal_unit_id , basis.valid_after , basis.valid_to @@ -210,7 +213,7 @@ CREATE VIEW public.timeline_legal_unit FROM ( SELECT unnest(basis.data_source_ids) AS id UNION ALL - SELECT unnest(aggregation.data_source_ids) AS id + SELECT unnest(esa.data_source_ids) AS id ) AS ids ) AS data_source_ids , ( @@ -218,7 +221,7 @@ CREATE VIEW public.timeline_legal_unit FROM ( SELECT unnest(basis.data_source_codes) AS code UNION ALL - SELECT unnest(aggregation.data_source_codes) AS code + SELECT unnest(esa.data_source_codes) AS code ) AS codes ) AS data_source_codes , basis.legal_form_id @@ -243,7 +246,8 @@ CREATE VIEW public.timeline_legal_unit , basis.postal_country_id , basis.postal_country_iso_2 , basis.invalid_codes - , COALESCE(aggregation.establishment_ids, ARRAY[]::INT[]) AS establishment_ids + , basis.has_legal_unit + , COALESCE(esa.establishment_ids, ARRAY[]::INT[]) AS establishment_ids , basis.legal_unit_id , basis.enterprise_id -- Expose the stats for just this entry. @@ -251,12 +255,12 @@ CREATE VIEW public.timeline_legal_unit -- Continue one more aggregation iteration adding the stats for this unit -- to the aggregated stats for establishments, by using the internal -- aggregation function for one more step. - , public.jsonb_stats_to_summary(COALESCE(aggregation.stats_summary,'{}'::JSONB), basis.stats) AS stats_summary + , public.jsonb_stats_to_summary(COALESCE(esa.stats_summary,'{}'::JSONB), basis.stats) AS stats_summary FROM basis - LEFT OUTER JOIN aggregation - ON basis.legal_unit_id = aggregation.legal_unit_id - AND basis.valid_after = aggregation.valid_after - AND basis.valid_to = aggregation.valid_to + LEFT OUTER JOIN establishment_aggregation AS esa + ON basis.legal_unit_id = esa.legal_unit_id + AND basis.valid_after = esa.valid_after + AND basis.valid_to = esa.valid_to -- ORDER BY unit_type, unit_id, valid_after -; \ No newline at end of file +; diff --git a/migrations/0066_create_timeline_enterprise.up.sql b/migrations/0066_create_timeline_enterprise.up.sql index cb798d69f..486a38348 100644 --- a/migrations/0066_create_timeline_enterprise.up.sql +++ b/migrations/0066_create_timeline_enterprise.up.sql @@ -42,6 +42,7 @@ CREATE VIEW public.timeline_enterprise , postal_country_id , postal_country_iso_2 , invalid_codes + , has_legal_unit , establishment_ids , legal_unit_ids , enterprise_id @@ -104,6 +105,8 @@ CREATE VIEW public.timeline_enterprise -- , plu.invalid_codes AS invalid_codes -- + , TRUE AS has_legal_unit + -- , en.id AS enterprise_id , plu.id AS primary_legal_unit_id FROM public.timesegments AS t @@ -229,6 +232,8 @@ CREATE VIEW public.timeline_enterprise -- , pes.invalid_codes AS invalid_codes -- + , FALSE AS has_legal_unit + -- , en.id AS enterprise_id , pes.id AS primary_establishment_id FROM public.timesegments AS t @@ -381,6 +386,7 @@ CREATE VIEW public.timeline_enterprise , basis.postal_country_id , basis.postal_country_iso_2 , basis.invalid_codes + , basis.has_legal_unit , COALESCE(lua.establishment_ids, ARRAY[]::INT[]) AS establishment_ids , COALESCE(lua.legal_unit_ids, ARRAY[]::INT[]) AS legal_unit_ids , basis.enterprise_id @@ -449,6 +455,7 @@ CREATE VIEW public.timeline_enterprise , basis.postal_country_id , basis.postal_country_iso_2 , basis.invalid_codes + , basis.has_legal_unit , COALESCE(esa.establishment_ids, ARRAY[]::INT[]) AS establishment_ids , ARRAY[]::INT[] AS legal_unit_ids , basis.enterprise_id @@ -467,4 +474,4 @@ CREATE VIEW public.timeline_enterprise ) SELECT * FROM basis_with_both ORDER BY unit_type, unit_id, valid_after -; \ No newline at end of file +; diff --git a/migrations/0069_create_statistical_unit_def.up.sql b/migrations/0069_create_statistical_unit_def.up.sql index 44e636fc4..499afe615 100644 --- a/migrations/0069_create_statistical_unit_def.up.sql +++ b/migrations/0069_create_statistical_unit_def.up.sql @@ -43,6 +43,7 @@ CREATE VIEW public.statistical_unit_def , postal_country_id , postal_country_iso_2 , invalid_codes + , has_legal_unit , establishment_ids , legal_unit_ids , enterprise_ids @@ -98,6 +99,7 @@ CREATE VIEW public.statistical_unit_def , postal_country_id , postal_country_iso_2 , invalid_codes + , has_legal_unit , NULL::INT[] AS establishment_ids , NULL::INT[] AS legal_unit_ids , NULL::INT[] AS enterprise_ids @@ -148,6 +150,7 @@ CREATE VIEW public.statistical_unit_def , postal_country_id , postal_country_iso_2 , invalid_codes + , has_legal_unit , COALESCE(establishment_ids,ARRAY[]::INT[]) AS establishment_ids , NULL::INT[] AS legal_unit_ids , NULL::INT[] AS enterprise_ids @@ -202,6 +205,7 @@ CREATE VIEW public.statistical_unit_def , postal_country_id , postal_country_iso_2 , invalid_codes + , has_legal_unit , COALESCE(establishment_ids,ARRAY[]::INT[]) AS establishment_ids , COALESCE(legal_unit_ids,ARRAY[]::INT[]) AS legal_unit_ids , NULL::INT[] AS enterprise_ids @@ -254,6 +258,7 @@ CREATE VIEW public.statistical_unit_def , data.postal_country_id , data.postal_country_iso_2 , data.invalid_codes + , data.has_legal_unit , data.establishment_ids , data.legal_unit_ids , data.enterprise_ids