# # 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.
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 :
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).
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
Aucun commentaire pour le moment.