Daniel Fritzler BI Consultant
  • Über mich
  • Services
  • Blog
  • CV
  • Kontakt


Data Vault mit Oracle

Ein kleines Beispiel mit den EMP-Tabellen von Scott


Data Vault Beispiele in SQL sind nicht immer leicht zu finden. Als Oracle-Entwickler nutze ich die berühmten EMP-Tabellen sehr gerne für Schulungen. Sie sind klein, aber so clever arrangiert, dass man sehr vielfältige SQL-Abfragen damit üben kann. So ist es auch für Data Vault. Allein aus den zwei Tabellen emp und dept lassen sich die typischen Szenarien, sowie Hubs, Links und Satelliten bilden.

Hier also mein “Hello World”-Beispiel für Data Vault.



Entity-Relationship-Modell




Visual Data Vault






Hier ist der Auszug der Raw-Vault-Tabellen.


--------------------------------------------------------

-- DDL for Table HUB_DEPT

--------------------------------------------------------


CREATE TABLE "HUB_DEPT"

( "LOAD_DATE" DATE,

"DEPTNO_HASHKEY" RAW(16),

"RECORDSOURCE" VARCHAR2(20),

"DEPTNO_BK" NUMBER(2,0)

) ;

--------------------------------------------------------

-- DDL for Table HUB_EMP

--------------------------------------------------------


CREATE TABLE "HUB_EMP"

( "LOAD_DATE" DATE,

"EMPNO_HASHKEY" RAW(16),

"RECORDSOURCE" VARCHAR2(20),

"EMPNO_BK" NUMBER(4,0)

) ;

--------------------------------------------------------

-- DDL for Table SAT_DEPT

--------------------------------------------------------


CREATE TABLE "SAT_DEPT"

( "DEPTNO_HASHKEY" RAW(16),

"LOAD_DATE" DATE,

"RECORDSOURCE" VARCHAR2(20),

"HASHDIFF" RAW(16),

"DNAME" VARCHAR2(14),

"LOC" VARCHAR2(13)

) ;

--------------------------------------------------------

-- DDL for Table SAT_EMP20

--------------------------------------------------------


CREATE TABLE "SAT_EMP20"

( "EMPNO_HASHKEY" RAW(16),

"LOAD_DATE" DATE,

"RECORDSOURCE" VARCHAR2(20),

"HASHDIFF" RAW(16),

"ENAME" VARCHAR2(10),

"HIREDATE" DATE

) ;

--------------------------------------------------------

-- DDL for Table SAT_EMP5

--------------------------------------------------------


CREATE TABLE "SAT_EMP5"

( "EMPNO_HASHKEY" RAW(16),

"LOAD_DATE" DATE,

"RECORDSOURCE" VARCHAR2(20),

"HASHDIFF" RAW(16),

"JOB" VARCHAR2(9),

"SAL" NUMBER(7,2),

"COMM" NUMBER(7,2)

) ;


--------------------------------------------------------

-- DDL for Table LINK_MANAGER

--------------------------------------------------------


CREATE TABLE "LINK_MANAGER"

( "LOAD_DATE" DATE,

"MANAGER_HASHKEY" RAW(16),

"RECORDSOURCE" VARCHAR2(20),

"EMPNO_HASHKEY" RAW(16),

"MGR_HASHKEY" RAW(16)

) ;

--------------------------------------------------------

-- DDL for Table LINK_WORKS

--------------------------------------------------------


CREATE TABLE "LINK_WORKS"

( "LOAD_DATE" DATE,

"WORKS_HASHKEY" RAW(16),

"RECORDSOURCE" VARCHAR2(20),

"EMPNO_HASHKEY" RAW(16),

"DEPTNO_HASHKEY" RAW(16)

) ;

--------------------------------------------------------

-- DDL for Table SAT_LINK_WORKS_EFF

--------------------------------------------------------


CREATE TABLE SAT_LINK_WORKS_EFF(

"WORKS_HASHKEY" RAW(16),

"BEGIN_DATE" DATE,

"END_DATE" DATE,

"LOAD_DATE" DATE,

"RECORDSOURCE" VARCHAR2(20)

);


Das gesamte Projekt ist Open Source in github verfügbar. Siehe https://github.com/universe-designer/emp-schema-data-vault/tree/main


  • Bilduelle: Scott Evans von Unsplash
  • Datum: 08.08.2023
  • Tags: Data Warehouse, Datenmodellierung, Data Vault, scott, emp, oracle, PL/SQL, open source, Beispiel, hello world, visual data vault