Zurück zur Startseite

Data Vault-Modellierung in asapBI IDE

asapBI IDE vereinfacht das Erstellen von Hubs, Links und Satelliten von Data Vault in Greenplum. Automatische DDL-Generierung mit FK, UNIQUE und Metadaten. Visuelle Oberfläche in VSCode/Theia für effiziente DWH-Modellierung.

asapBI: Erstellen von Hubs und Links von Data Vault in IDE
Advertisement 728x90

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.

Google AdInline article slot

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:

Google AdInline article slot
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).

Google AdInline article slot

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

Advertisement 728x90

Weiterlesen