Powrót do strony głównej

Modelowanie Data Vault w asapBI IDE

IDE asapBI ułatwia tworzenie hubów, linków i satelitów Data Vault w Greenplum. Automatyczna generacja DDL z FK, UNIQUE i metadanymi. Wizualny interfejs w VSCode/Theia dla efektywnego modelowania DWH.

asapBI: tworzenie hubów i linków Data Vault w IDE
Advertisement 728x90

Modelowanie Data Vault w IDE asapBI: huby, linki i satelity

IDE asapBI jako wtyczka dla VSCode lub Theia ułatwia tworzenie struktur Data Vault. Drzewo po lewej stronie wyświetla bazy (NORD, ASGARD), schematy (repo_md, repo_fi), katalogi (ODS, DDS) oraz obiekty takie jak huby (sales_hub). Obsługiwany jest Greenplum poprzez moduł generowania SQL. Zadanie: w schemacie FI utwórz folder DEMO z dwoma hubami, satelitami i linkiem między nimi.

Tworzenie struktury katalogów

Najedź na schemat lub folder — pojawi się opcja nowej papki. Podaj nazwę i pakiet do wdrożenia (test, prod). Dla obiektów tymczasowych zostaw domyślnie.

Gotowy folder integruje się z drzewem. Proces minimalizuje ręczne SQL.

Google AdInline article slot

Budowa huba

Utwórz hub (typ Hub). System generuje 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"
}';

W edytorze włącz pola służbowe (checkbox). Przyciski: dodanie klucza biznesowego, satelity, linku.

Dodaj pole product text z ograniczeniem UNIQUE i satelitę:

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);

Hub dla klienta i link

Podobnie utwórz hub customer_demo_hub z polem customer text:

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"
}';

Dodaj link między hubami:

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);

Link jest wyświetlany pod oboma hubami. Do linków dodaje się satelity (+Sat).

Google AdInline article slot

Struktura w DEMO:

  • Hub Product + satelita (brand, categ)
  • Hub Customer
  • Link między hubami

Zalety podejścia

  • Autogenerowanie DDL: Pełny SQL dla hubów, linków, satelitów z FK, UNIQUE, COMMENT w JSON.
  • Wizualizacja: Drzewo obiektów, diagramy powiązań.
  • Kompatybilność: SQL wykonywane ręcznie (DBeaver), obiekty synchronizowane.
  • Elastyczność: Obiekty tymczasowe/trwałe, pakiety dla CI/CD.
  • Skupienie: Ukrywanie pól służbowych (hkey, date_load, src_sys).

Obsługa Greenplum; rozszerzenie na inne systemy zarządzania bazami danych możliwe.

Co ważne

  • Automatyzuje rutynowe JOIN i DDL w Data Vault.
  • Integracja z VSCode/Theia dla deweloperów middle/senior.
  • Generuje production-ready SQL z metadanymi w COMMENT.
  • Obsługa linków z FK na hkey hubów.
  • Wizualna edycja bez utraty kontroli nad kodem.

— Editorial Team

Advertisement 728x90

Czytaj dalej