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.
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ę:
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).
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
Brak komentarzy.