Retour à l'accueil

Modélisation Data Vault dans asapBI IDE

asapBI IDE simplifie la création de hubs, liens et satellites de Data Vault dans Greenplum. Génération automatique de DDL avec FK, UNIQUE et métadonnées. Interface visuelle dans VSCode/Theia pour une modélisation DWH efficace.

asapBI : Création de Hubs et Liens de Data Vault dans l'IDE
Advertisement 728x90

# # Modélisation Data Vault dans l'IDE asapBI : Hubs, Liens et Satellites

L'IDE asapBI, en tant que plugin pour VSCode ou Theia, simplifie la création de structures Data Vault. L'arbre à gauche affiche les bases de données (NORD, ASGARD), les schémas (repo_md, repo_fi), les dossiers (ODS, DDS) et les objets comme les hubs (sales_hub). Greenplum est pris en charge via le module de génération SQL. Tâche : Dans le schéma FI, créer un dossier DEMO avec deux hubs, des satellites et un lien entre eux.

Création des structures de dossiers

Passez la souris sur un schéma ou un dossier — l'option pour un nouveau dossier apparaît. Indiquez le nom et le package de déploiement (test, prod). Pour les objets temporaires, laissez la valeur par défaut.

Le dossier terminé s'intègre dans l'arbre. Ce processus minimise le SQL manuel.

Google AdInline article slot

Construction d'un Hub

Créez un hub (type Hub). Le système génère le 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"
}';

Dans l'éditeur, activez les champs de service (case à cocher). Boutons : ajouter clé métier, satellite, lien.

Ajoutez le champ product text avec une contrainte UNIQUE et un satellite :

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 Client et Lien

De même, créez le hub customer_demo_hub avec le champ 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"
}';

Ajoutez un lien entre les hubs :

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

Le lien apparaît sous les deux hubs. Des satellites peuvent être ajoutés aux liens (+Sat).

Google AdInline article slot

Structure DEMO :

  • Hub Produit + satellite (brand, categ)
  • Hub Client
  • Lien entre les hubs

Avantages de l'approche

  • Génération automatique de DDL : SQL complet pour les hubs, liens, satellites avec FK, UNIQUE et COMMENT JSON.
  • Visualisation : Arbre d'objets, diagrammes de relations.
  • Compatibilité : Le SQL peut être exécuté manuellement (DBeaver), les objets sont synchronisés.
  • Flexibilité : Objets temporaires/permanents, packages pour CI/CD.
  • Focus : Masquage des champs de service (hkey, date_load, src_sys).

Prise en charge de Greenplum ; extension à d'autres SGBD possible.

Points clés

  • Automatise les JOINs routiniers et le DDL en Data Vault.
  • Intégration avec VSCode/Theia pour les développeurs intermédiaires/seniors.
  • Génère du SQL prêt pour la production avec métadonnées dans COMMENT.
  • Support des liens avec FK vers les hkey des hubs.
  • Édition visuelle sans perte de contrôle du code.

— Editorial Team

Advertisement 728x90

Lire ensuite