返回首页

asapBI IDE 中的 Data Vault 建模

asapBI IDE 简化在 Greenplum 中创建 Data Vault 集线器、链接和卫星。自动 DDL 生成,包含 FK、UNIQUE 和元数据。在 VSCode/Theia 中的可视化界面,实现高效 DWH 建模。

asapBI:在 IDE 中创建 Data Vault 的集线器和链接
Advertisement 728x90

在 asapBI IDE 中建模 Data Vault:Hubs、Links 和 Satellites

asapBI IDE 作为 VSCode 或 Theia 的插件,简化了 Data Vault 结构的创建。左侧树显示数据库(NORD、ASGARD)、模式(repo_md、repo_fi)、文件夹(ODS、DDS)以及对象,如 hub(sales_hub)。通过 SQL 生成模块支持 Greenplum。任务:在 FI 模式中,创建一个 DEMO 文件夹,其中包含两个 hub、卫星以及它们之间的一个 link。

创建文件夹结构

将鼠标悬停在模式或文件夹上——会出现新建文件夹选项。指定名称和部署包(test、prod)。对于临时对象,保留默认值。

完成的文件夹会集成到树中。此过程最大限度减少了手动 SQL 操作。

Google AdInline article slot

构建 Hub

创建一个 hub(Hub 类型)。系统会生成 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"
}';

在编辑器中,启用服务字段(复选框)。按钮:添加业务键、卫星、link。

添加 product text 字段,并带有 UNIQUE 约束和卫星:

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 和 Link

类似地,创建 customer_demo_hub hub,并带有 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"
}';

在两个 hub 之间添加一个 link:

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 会出现在两个 hub 下方。可以为 link 添加卫星(+Sat)。

Google AdInline article slot

DEMO 结构:

  • Product Hub + 卫星(brand、categ)
  • Customer Hub
  • 两个 hub 之间的 Link

此方法的好处

  • DDL 自动生成: hub、link、卫星的完整 SQL,包含外键、唯一约束和 JSON COMMENT。
  • 可视化: 对象树、关系图。
  • 兼容性: SQL 可以手动执行(DBeaver),对象已同步。
  • 灵活性: 临时/永久对象、用于 CI/CD 的包。
  • 专注: 隐藏服务字段(hkey、date_load、src_sys)。

支持 Greenplum;可扩展到其他数据库管理系统。

关键点

  • 自动化 Data Vault 中的常规联接和 DDL。
  • 与 VSCode/Theia 集成,适用于中高级开发者。
  • 生成带有 COMMENT 中元数据的生产就绪 SQL。
  • 支持带有指向 hub hkey 的外键的 Link。
  • 视觉编辑,同时不丢失代码控制。

— Editorial Team

Advertisement 728x90

继续阅读