Skip to content

Commit

Permalink
Fixed #341: use a view instead of function to compare with extract da…
Browse files Browse the repository at this point in the history
…te in actueel and actueelbestaand views in BAG v2 ETL
  • Loading branch information
fsteggink committed Jan 10, 2022
1 parent d3f637c commit 8374c3d
Showing 1 changed file with 102 additions and 84 deletions.
186 changes: 102 additions & 84 deletions bagv2/etl/sql/create-views.sql
Original file line number Diff line number Diff line change
Expand Up @@ -4,16 +4,12 @@
-- Author: Just van den Broecke

-- Gebruik BAG stand datum in plaats van NOW/LOCALTIMESTAMP
CREATE FUNCTION extract_datum()
RETURNS timestamp
AS $$
SELECT waarde::timestamp
FROM nlx_bag_info
WHERE sleutel = 'extract_datum'
$$
LANGUAGE SQL;

-- Feitelijk is de "acteel" definitie:
CREATE VIEW extract_datum AS
SELECT waarde::timestamp
FROM nlx_bag_info
WHERE sleutel = 'extract_datum';

-- Feitelijk is de "actueel" definitie:
-- begingeldigheid <= extract_datum()
-- AND (eindgeldigheid is NULL OR eindgeldigheid >= extract_datum())
-- AND (tijdstipinactief is NULL)
Expand All @@ -23,115 +19,127 @@ CREATE FUNCTION extract_datum()
-- LIG
DROP VIEW IF EXISTS ligplaatsactueel;
CREATE VIEW ligplaatsactueel AS
SELECT * FROM ligplaats
SELECT lig.* FROM ligplaats lig
JOIN extract_datum ON 1=1
WHERE
beginDatumTijdvakGeldigheid <= extract_datum()
AND (eindDatumTijdvakGeldigheid is NULL OR eindDatumTijdvakGeldigheid >= extract_datum())
beginDatumTijdvakGeldigheid <= extract_datum.waarde
AND (eindDatumTijdvakGeldigheid is NULL OR eindDatumTijdvakGeldigheid >= extract_datum.waarde)
AND aanduidingrecordinactief is FALSE;

DROP VIEW IF EXISTS ligplaatsactueelbestaand;
CREATE VIEW ligplaatsactueelbestaand AS
SELECT * FROM ligplaats
SELECT lig.* FROM ligplaats lig
JOIN extract_datum ON 1=1
WHERE
beginDatumTijdvakGeldigheid <= extract_datum()
AND (eindDatumTijdvakGeldigheid is NULL OR eindDatumTijdvakGeldigheid >= extract_datum())
beginDatumTijdvakGeldigheid <= extract_datum.waarde
AND (eindDatumTijdvakGeldigheid is NULL OR eindDatumTijdvakGeldigheid >= extract_datum.waarde)
AND aanduidingrecordinactief is FALSE
AND ligplaatsStatus <> 'Plaats ingetrokken'::ligplaatsStatus;

-- NUM
DROP VIEW IF EXISTS nummeraanduidingactueel;
CREATE VIEW nummeraanduidingactueel AS
SELECT *
FROM nummeraanduiding
SELECT num.*
FROM nummeraanduiding num
JOIN extract_datum ON 1=1
WHERE
beginDatumTijdvakGeldigheid <= extract_datum()
AND (eindDatumTijdvakGeldigheid is NULL OR eindDatumTijdvakGeldigheid >= extract_datum())
beginDatumTijdvakGeldigheid <= extract_datum.waarde
AND (eindDatumTijdvakGeldigheid is NULL OR eindDatumTijdvakGeldigheid >= extract_datum.waarde)
AND aanduidingrecordinactief is FALSE;

DROP VIEW IF EXISTS nummeraanduidingactueelbestaand;
CREATE VIEW nummeraanduidingactueelbestaand AS
SELECT * FROM nummeraanduiding
SELECT num.* FROM nummeraanduiding num
JOIN extract_datum ON 1=1
WHERE
beginDatumTijdvakGeldigheid <= extract_datum()
AND (eindDatumTijdvakGeldigheid is NULL OR eindDatumTijdvakGeldigheid >= extract_datum())
beginDatumTijdvakGeldigheid <= extract_datum.waarde
AND (eindDatumTijdvakGeldigheid is NULL OR eindDatumTijdvakGeldigheid >= extract_datum.waarde)
AND aanduidingrecordinactief is FALSE
AND nummeraanduidingStatus <> 'Naamgeving ingetrokken'::nummeraanduidingStatus;

-- OPR
DROP VIEW IF EXISTS openbareruimteactueel;
CREATE VIEW openbareruimteactueel AS
SELECT * FROM openbareruimte
SELECT opr.* FROM openbareruimte opr
JOIN extract_datum ON 1=1
WHERE
beginDatumTijdvakGeldigheid <= extract_datum()
AND (eindDatumTijdvakGeldigheid is NULL OR eindDatumTijdvakGeldigheid >= extract_datum())
beginDatumTijdvakGeldigheid <= extract_datum.waarde
AND (eindDatumTijdvakGeldigheid is NULL OR eindDatumTijdvakGeldigheid >= extract_datum.waarde)
AND aanduidingrecordinactief is FALSE;

DROP VIEW IF EXISTS openbareruimteactueelbestaand;
CREATE VIEW openbareruimteactueelbestaand AS
SELECT * FROM openbareruimte
SELECT opr.* FROM openbareruimte opr
JOIN extract_datum ON 1=1
WHERE
beginDatumTijdvakGeldigheid <= extract_datum()
AND (eindDatumTijdvakGeldigheid is NULL OR eindDatumTijdvakGeldigheid >= extract_datum())
beginDatumTijdvakGeldigheid <= extract_datum.waarde
AND (eindDatumTijdvakGeldigheid is NULL OR eindDatumTijdvakGeldigheid >= extract_datum.waarde)
AND aanduidingrecordinactief is FALSE
AND openbareruimteStatus <> 'Naamgeving ingetrokken'::openbareRuimteStatus;

-- PND
DROP VIEW IF EXISTS pandactueel;
CREATE VIEW pandactueel AS
SELECT * FROM pand
SELECT pnd.* FROM pand pnd
JOIN extract_datum ON 1=1
WHERE
beginDatumTijdvakGeldigheid <= extract_datum()
AND (eindDatumTijdvakGeldigheid is NULL OR eindDatumTijdvakGeldigheid >= extract_datum())
AND aanduidingrecordinactief is FALSE
AND pand.geom_valid = TRUE;
beginDatumTijdvakGeldigheid <= extract_datum.waarde
AND (eindDatumTijdvakGeldigheid is NULL OR eindDatumTijdvakGeldigheid >= extract_datum.waarde)
AND aanduidingrecordinactief is FALSE
AND pnd.geom_valid = TRUE;

DROP VIEW IF EXISTS pandactueelbestaand;
CREATE VIEW pandactueelbestaand AS
SELECT * FROM pand
SELECT pnd.* FROM pand pnd
JOIN extract_datum ON 1=1
WHERE
beginDatumTijdvakGeldigheid <= extract_datum()
AND (eindDatumTijdvakGeldigheid is NULL OR eindDatumTijdvakGeldigheid >= extract_datum())
beginDatumTijdvakGeldigheid <= extract_datum.waarde
AND (eindDatumTijdvakGeldigheid is NULL OR eindDatumTijdvakGeldigheid >= extract_datum.waarde)
AND aanduidingrecordinactief is FALSE
AND (pandStatus <> 'Niet gerealiseerd pand'::pandStatus
AND pandStatus <> 'Pand gesloopt'::pandStatus
AND pandStatus <> 'Bouwvergunning verleend'::pandStatus
AND pandStatus <> 'Pand ten onrechte opgevoerd'::pandStatus )
AND pand.geom_valid = TRUE;
AND pnd.geom_valid = TRUE;

-- STA
DROP VIEW IF EXISTS standplaatsactueel;
CREATE VIEW standplaatsactueel AS
SELECT * FROM standplaats
SELECT sta.* FROM standplaats sta
JOIN extract_datum ON 1=1
WHERE
beginDatumTijdvakGeldigheid <= extract_datum()
AND (eindDatumTijdvakGeldigheid is NULL OR eindDatumTijdvakGeldigheid >= extract_datum())
beginDatumTijdvakGeldigheid <= extract_datum.waarde
AND (eindDatumTijdvakGeldigheid is NULL OR eindDatumTijdvakGeldigheid >= extract_datum.waarde)
AND aanduidingrecordinactief is FALSE;

DROP VIEW IF EXISTS standplaatsactueelbestaand;
CREATE VIEW standplaatsactueelbestaand AS
SELECT * FROM standplaats
SELECT sta.* FROM standplaats sta
JOIN extract_datum ON 1=1
WHERE
beginDatumTijdvakGeldigheid <= extract_datum()
AND (eindDatumTijdvakGeldigheid is NULL OR eindDatumTijdvakGeldigheid >= extract_datum())
beginDatumTijdvakGeldigheid <= extract_datum.waarde
AND (eindDatumTijdvakGeldigheid is NULL OR eindDatumTijdvakGeldigheid >= extract_datum.waarde)
AND aanduidingrecordinactief is FALSE
AND standplaatsStatus <> 'Plaats ingetrokken'::standplaatsStatus;

-- VBO
DROP VIEW IF EXISTS verblijfsobjectactueel;
CREATE VIEW verblijfsobjectactueel AS
SELECT * FROM verblijfsobject
SELECT vbo.* FROM verblijfsobject vbo
JOIN extract_datum ON 1=1
WHERE
beginDatumTijdvakGeldigheid <= extract_datum()
AND (eindDatumTijdvakGeldigheid is NULL OR eindDatumTijdvakGeldigheid >= extract_datum())
beginDatumTijdvakGeldigheid <= extract_datum.waarde
AND (eindDatumTijdvakGeldigheid is NULL OR eindDatumTijdvakGeldigheid >= extract_datum.waarde)
AND aanduidingrecordinactief is FALSE;


DROP VIEW IF EXISTS verblijfsobjectactueelbestaand;
CREATE VIEW verblijfsobjectactueelbestaand AS
SELECT * FROM verblijfsobject
SELECT vbo.* FROM verblijfsobject vbo
JOIN extract_datum ON 1=1
WHERE
beginDatumTijdvakGeldigheid <= extract_datum()
AND (eindDatumTijdvakGeldigheid is NULL OR eindDatumTijdvakGeldigheid >= extract_datum())
beginDatumTijdvakGeldigheid <= extract_datum.waarde
AND (eindDatumTijdvakGeldigheid is NULL OR eindDatumTijdvakGeldigheid >= extract_datum.waarde)
AND aanduidingrecordinactief is FALSE
AND (verblijfsobjectStatus <> 'Niet gerealiseerd verblijfsobject'::verblijfsobjectStatus
AND verblijfsobjectStatus <> 'Verblijfsobject ingetrokken'::verblijfsobjectStatus
Expand All @@ -144,18 +152,20 @@ CREATE VIEW verblijfsobjectactueelbestaand AS
-- WPL
DROP VIEW IF EXISTS woonplaatsactueel;
CREATE VIEW woonplaatsactueel AS
SELECT * FROM woonplaats
SELECT wpl.* FROM woonplaats wpl
JOIN extract_datum ON 1=1
WHERE
beginDatumTijdvakGeldigheid <= extract_datum()
AND (eindDatumTijdvakGeldigheid is NULL OR eindDatumTijdvakGeldigheid >= extract_datum())
beginDatumTijdvakGeldigheid <= extract_datum.waarde
AND (eindDatumTijdvakGeldigheid is NULL OR eindDatumTijdvakGeldigheid >= extract_datum.waarde)
AND aanduidingrecordinactief is FALSE;

DROP VIEW IF EXISTS woonplaatsactueelbestaand;
CREATE VIEW woonplaatsactueelbestaand AS
SELECT * FROM woonplaats
SELECT wpl.* FROM woonplaats wpl
JOIN extract_datum ON 1=1
WHERE
beginDatumTijdvakGeldigheid <= extract_datum()
AND (eindDatumTijdvakGeldigheid is NULL OR eindDatumTijdvakGeldigheid >= extract_datum())
beginDatumTijdvakGeldigheid <= extract_datum.waarde
AND (eindDatumTijdvakGeldigheid is NULL OR eindDatumTijdvakGeldigheid >= extract_datum.waarde)
AND aanduidingrecordinactief is FALSE
AND woonplaatsStatus <> 'Woonplaats ingetrokken'::woonplaatsStatus;

Expand All @@ -170,9 +180,10 @@ CREATE VIEW gemeente_woonplaatsactueelbestaand AS
gw.gemeentecode,
gw.status
FROM gemeente_woonplaats as gw
JOIN extract_datum ON 1=1
WHERE
gw.beginDatumTijdvakGeldigheid <= extract_datum()
AND (gw.eindDatumTijdvakGeldigheid is NULL OR gw.eindDatumTijdvakGeldigheid >= extract_datum())
gw.beginDatumTijdvakGeldigheid <= extract_datum.waarde
AND (gw.eindDatumTijdvakGeldigheid is NULL OR gw.eindDatumTijdvakGeldigheid >= extract_datum.waarde)
AND gw.status = 'definitief';

DROP VIEW IF EXISTS provincie_gemeenteactueelbestaand;
Expand All @@ -185,30 +196,33 @@ CREATE VIEW provincie_gemeenteactueelbestaand AS
pg.begindatum,
pg.einddatum
FROM provincie_gemeente AS pg
JOIN extract_datum ON 1=1
WHERE
pg.begindatum <= extract_datum()
AND (pg.einddatum IS NULL OR pg.einddatum >= extract_datum());
pg.begindatum <= extract_datum.waarde
AND (pg.einddatum IS NULL OR pg.einddatum >= extract_datum.waarde);


-- START RELATIE TABELLEN

DROP VIEW IF EXISTS adresseerbaarobjectnevenadresactueel;
CREATE VIEW adresseerbaarobjectnevenadresactueel AS
SELECT *
SELECT aon.*
FROM adresseerbaarobjectnevenadres as aon
JOIN extract_datum ON 1=1
WHERE
aon.beginDatumTijdvakGeldigheid <= extract_datum()
AND (aon.eindDatumTijdvakGeldigheid is NULL OR aon.eindDatumTijdvakGeldigheid >= extract_datum())
AND (aon.tijdstipinactief is NULL OR aon.tijdstipinactief >= extract_datum());
aon.beginDatumTijdvakGeldigheid <= extract_datum.waarde
AND (aon.eindDatumTijdvakGeldigheid is NULL OR aon.eindDatumTijdvakGeldigheid >= extract_datum.waarde)
AND (aon.tijdstipinactief is NULL OR aon.tijdstipinactief >= extract_datum.waarde);

DROP VIEW IF EXISTS adresseerbaarobjectnevenadresactueelbestaand;
CREATE VIEW adresseerbaarobjectnevenadresactueelbestaand AS
SELECT *
SELECT aon.*
FROM adresseerbaarobjectnevenadres as aon
JOIN extract_datum ON 1=1
WHERE
aon.beginDatumTijdvakGeldigheid <= extract_datum()
AND (aon.eindDatumTijdvakGeldigheid is NULL OR aon.eindDatumTijdvakGeldigheid >= extract_datum())
AND (aon.tijdstipinactief is NULL OR aon.tijdstipinactief >= extract_datum())
aon.beginDatumTijdvakGeldigheid <= extract_datum.waarde
AND (aon.eindDatumTijdvakGeldigheid is NULL OR aon.eindDatumTijdvakGeldigheid >= extract_datum.waarde)
AND (aon.tijdstipinactief is NULL OR aon.tijdstipinactief >= extract_datum.waarde)
AND ((aon.ligplaatsstatus <> 'Plaats ingetrokken' OR aon.ligplaatsstatus is NULL) AND
(aon.standplaatsstatus <> 'Plaats ingetrokken' OR aon.standplaatsstatus is NULL) AND
((aon.verblijfsobjectStatus <> 'Niet gerealiseerd verblijfsobject' AND
Expand All @@ -221,21 +235,23 @@ CREATE VIEW adresseerbaarobjectnevenadresactueelbestaand AS

DROP VIEW IF EXISTS verblijfsobjectpandactueel;
CREATE VIEW verblijfsobjectpandactueel AS
SELECT *
SELECT vbop.*
FROM verblijfsobjectpand as vbop
JOIN extract_datum ON 1=1
WHERE
vbop.beginDatumTijdvakGeldigheid <= extract_datum()
AND (vbop.eindDatumTijdvakGeldigheid is NULL OR vbop.eindDatumTijdvakGeldigheid >= extract_datum())
AND (vbop.tijdstipinactief is NULL OR vbop.tijdstipinactief >= extract_datum());
vbop.beginDatumTijdvakGeldigheid <= extract_datum.waarde
AND (vbop.eindDatumTijdvakGeldigheid is NULL OR vbop.eindDatumTijdvakGeldigheid >= extract_datum.waarde)
AND (vbop.tijdstipinactief is NULL OR vbop.tijdstipinactief >= extract_datum.waarde);

DROP VIEW IF EXISTS verblijfsobjectpandactueelbestaand;
CREATE VIEW verblijfsobjectpandactueelbestaand AS
SELECT *
SELECT vbop.*
FROM verblijfsobjectpand as vbop
JOIN extract_datum ON 1=1
WHERE
vbop.beginDatumTijdvakGeldigheid <= extract_datum()
AND (vbop.eindDatumTijdvakGeldigheid is NULL OR vbop.eindDatumTijdvakGeldigheid >= extract_datum())
AND (vbop.tijdstipinactief is NULL OR vbop.tijdstipinactief >= extract_datum())
vbop.beginDatumTijdvakGeldigheid <= extract_datum.waarde
AND (vbop.eindDatumTijdvakGeldigheid is NULL OR vbop.eindDatumTijdvakGeldigheid >= extract_datum.waarde)
AND (vbop.tijdstipinactief is NULL OR vbop.tijdstipinactief >= extract_datum.waarde)
AND ((vbop.verblijfsobjectStatus <> 'Niet gerealiseerd verblijfsobject' AND
vbop.verblijfsobjectStatus <> 'Verblijfsobject ingetrokken' AND
vbop.verblijfsobjectStatus <> 'Verblijfsobject ten onrechte opgevoerd') OR
Expand All @@ -244,21 +260,23 @@ CREATE VIEW verblijfsobjectpandactueelbestaand AS

DROP VIEW IF EXISTS verblijfsobjectgebruiksdoelactueel;
CREATE VIEW verblijfsobjectgebruiksdoelactueel AS
SELECT *
SELECT vog.*
FROM verblijfsobjectgebruiksdoel as vog
JOIN extract_datum ON 1=1
WHERE
vog.beginDatumTijdvakGeldigheid <= extract_datum()
AND (vog.eindDatumTijdvakGeldigheid is NULL OR vog.eindDatumTijdvakGeldigheid >= extract_datum())
AND (vog.tijdstipinactief is NULL OR vog.tijdstipinactief >= extract_datum());
vog.beginDatumTijdvakGeldigheid <= extract_datum.waarde
AND (vog.eindDatumTijdvakGeldigheid is NULL OR vog.eindDatumTijdvakGeldigheid >= extract_datum.waarde)
AND (vog.tijdstipinactief is NULL OR vog.tijdstipinactief >= extract_datum.waarde);

DROP VIEW IF EXISTS verblijfsobjectgebruiksdoelactueelbestaand;
CREATE VIEW verblijfsobjectgebruiksdoelactueelbestaand AS
SELECT *
SELECT vog.*
FROM verblijfsobjectgebruiksdoel as vog
JOIN extract_datum ON 1=1
WHERE
vog.beginDatumTijdvakGeldigheid <= extract_datum()
AND (vog.eindDatumTijdvakGeldigheid is NULL OR vog.eindDatumTijdvakGeldigheid >= extract_datum())
AND (vog.tijdstipinactief is NULL OR vog.tijdstipinactief >= extract_datum())
vog.beginDatumTijdvakGeldigheid <= extract_datum.waarde
AND (vog.eindDatumTijdvakGeldigheid is NULL OR vog.eindDatumTijdvakGeldigheid >= extract_datum.waarde)
AND (vog.tijdstipinactief is NULL OR vog.tijdstipinactief >= extract_datum.waarde)
AND ((vog.verblijfsobjectStatus <> 'Niet gerealiseerd verblijfsobject' AND
vog.verblijfsobjectStatus <> 'Verblijfsobject ingetrokken' AND
vog.verblijfsobjectStatus <> 'Verblijfsobject ten onrechte opgevoerd') OR
Expand Down

0 comments on commit 8374c3d

Please sign in to comment.