Data Vault in der asapBI IDE modellieren: Hubs, Links und Satelliten
Die asapBI IDE als Plugin für VSCode oder Theia vereinfacht das Erstellen von Data-Vault-Strukturen. Der Baum links zeigt Datenbanken (NORD, ASGARD), Schemata (repo_md, repo_fi), Ordner (ODS, DDS) und Objekte wie Hubs (sales_hub). Greenplum wird über das SQL-Generierungsmodul unterstützt. Aufgabe: Im FI-Schema einen DEMO-Ordner mit zwei Hubs, Satelliten und einem Link dazwischen erstellen.
Ordnerstrukturen erstellen
Die Maus über ein Schema oder einen Ordner bewegen – die Option für einen neuen Ordner erscheint. Namen und Deployment-Paket (test, prod) angeben. Für temporäre Objekte beim Standard belassen.
Der fertige Ordner wird in den Baum integriert. Der Prozess minimiert manuelles SQL.
Einen Hub erstellen
Einen Hub erstellen (Hub-Typ). Das System generiert DDL:
CREATE TABLE repo_fi.product_demo_hub (
date_load date DEFAULT now() NOT NULL,
src_sys text DEFAULT ''::character varying NOT NULL,
hkey int8 GENERATED BY DEFAULT AS IDENTITY
( INCREMENT BY 1 MINVALUE 1 MAXVALUE 9223372036854775807
START 1 CACHE 20 NO CYCLE) NOT NULL,
CONSTRAINT product_demo_hub_pkey PRIMARY KEY (hkey)
)
USING heap
DISTRIBUTED REPLICATED;
COMMENT ON TABLE repo_fi.product_demo_hub IS '{ "app": "asapBI",
"descr": "Product Demo hub",
"type": "HUB",
"folder": "161"
}';
Im Editor Service-Felder aktivieren (Checkbox). Buttons: Business Key, Satellit, Link hinzufügen.
Das product text-Feld mit UNIQUE-Einschränkung und Satellit hinzufügen:
ALTER TABLE repo_fi.product_demo_hub DROP CONSTRAINT product_demo_hub_unique;
ALTER TABLE repo_fi.product_demo_hub ADD product text;
COMMENT ON COLUMN repo_fi.product_demo_hub.product IS 'Produkt';
ALTER TABLE repo_fi.product_demo_hub ADD CONSTRAINT
product_demo_hub_unique UNIQUE ( product );
CREATE TABLE repo_fi.product_demo_hub_sat1 (
id bigint GENERATED BY DEFAULT AS IDENTITY primary key,
hkey bigint NOT NULL,
valid_from date DEFAULT now() NOT NULL,
date_load date DEFAULT now() NOT NULL,
src_sys text DEFAULT ''::character varying NOT NULL,
brand text,
categ text,
FOREIGN KEY (hkey) REFERENCES repo_fi.product_demo_hub (hkey)
)
USING heap
DISTRIBUTED REPLICATED;
COMMENT ON TABLE repo_fi.product_demo_hub_sat1 IS '{ "app": "asapBI",
"descr": "New sat",
"type": "SAT",
"owner": "repo_fi.product_demo_hub"
}';
ALTER TABLE repo_fi.product_demo_hub_sat1 ADD CONSTRAINT
product_demo_hub_sat1_unique UNIQUE (hkey, valid_from);
Kunden-Hub und Link
Ähnlich den customer_demo_hub-Hub mit dem customer text-Feld erstellen:
CREATE TABLE repo_fi.customer_demo_hub (
date_load date DEFAULT now() NOT NULL,
src_sys text DEFAULT ''::character varying NOT NULL,
hkey int8 GENERATED BY DEFAULT AS IDENTITY
( INCREMENT BY 1 MINVALUE 1 MAXVALUE 9223372036854775807
START 1 CACHE 20 NO CYCLE) NOT NULL,
customer text NULL,
CONSTRAINT customer_demo_hub_pkey PRIMARY KEY (hkey),
CONSTRAINT customer_demo_hub_unique UNIQUE (customer)
)
USING heap
DISTRIBUTED REPLICATED;
COMMENT ON TABLE repo_fi.customer_demo_hub IS '{ "app": "asapBI",
"descr": "Customer Demo hub",
"type": "HUB",
"folder": "161"
}';
Einen Link zwischen den Hubs hinzufügen:
CREATE TABLE repo_fi.customer_demo_hub_link1 (
id bigint GENERATED BY DEFAULT AS IDENTITY primary key,
customer_demo_hub bigint,
date_load date DEFAULT now() NOT NULL,
src_sys text DEFAULT ''::character varying NOT NULL,
product_demo_hub bigint ,
FOREIGN KEY (customer_demo_hub) REFERENCES repo_fi.customer_demo_hub (hkey),
FOREIGN KEY (product_demo_hub) REFERENCES repo_fi.product_demo_hub (hkey)
)
USING heap
DISTRIBUTED REPLICATED;
COMMENT ON TABLE repo_fi.customer_demo_hub_link1 IS '{ "app": "asapBI",
"descr": "New link",
"type": "LINK"
}';
ALTER TABLE repo_fi.customer_demo_hub_link1
ADD CONSTRAINT customer_demo_hub_link1_unique
UNIQUE (customer_demo_hub, product_demo_hub);
Der Link erscheint unter beiden Hubs. Zu Links können Satelliten hinzugefügt werden (+Sat).
DEMO-Struktur:
- Produkt-Hub + Satellit (brand, categ)
- Kunden-Hub
- Link zwischen den Hubs
Vorteile des Ansatzes
- Automatische DDL-Generierung: Vollständiges SQL für Hubs, Links, Satelliten mit FK, UNIQUE und JSON-Kommentar.
- Visualisierung: Objektbaum, Beziehungsdiagramme.
- Kompatibilität: SQL kann manuell ausgeführt werden (DBeaver), Objekte sind synchronisiert.
- Flexibilität: Temporäre/permanente Objekte, Pakete für CI/CD.
- Fokus: Verbergen von Service-Feldern (hkey, date_load, src_sys).
Greenplum-Unterstützung; Erweiterung auf andere DBMS möglich.
Wichtige Punkte
- Automatisiert Routine-Joins und DDL in Data Vault.
- Integration mit VSCode/Theia für Mittel- bis Senior-Entwickler.
- Erzeugt produktionsreifes SQL mit Metadaten im COMMENT.
- Link-Unterstützung mit FK zu Hub-hkeys.
- Visuelle Bearbeitung ohne Verlust der Code-Kontrolle.
— Editorial Team
Noch keine Kommentare.