Database
 sql >> Datenbank >  >> RDS >> Database

SCD-Typ 4

Dimensionsdaten, die sich langsam oder unvorhersehbar ändern, werden in SCD-Analysen (Slowly Changing Dimensions) erfasst. In einer Data-Warehouse-Umgebung hat eine Dimensionstabelle einen Primärschlüssel, der jeden Datensatz und andere Informationen, die als Dimensionsdaten bezeichnet werden, eindeutig identifiziert.

Alle Aktualisierungsmethoden für die verschiedenen SCD-Typen werden mit dem SortCL-Programm in IRI CoSort durchgeführt. In IRI Voracity gibt es einen Assistenten, der beim Erstellen der SCD-Job-Skripte hilft, die beim Ausführen des SortCL-Programms verwendet werden. Die meisten SCD-Typen verwenden eine vollständige äußere Verknüpfung, um Datensätze aus der ursprünglichen Datenquelle mit Datensätzen in der aktualisierten Quelle abzugleichen, basierend auf der Gleichsetzung eines Schlüssels von beiden. Typ 4 führt die Aktualisierung jedoch mit einer Sortierung durch.

Typ 4 SCD

Das Typ 4-Modell ähnelt dem für Typ 2. Der Unterschied besteht darin, dass zwei Tabellen oder Dateien verwaltet werden:eine für die aktuellen Kosten und eine für die Verlaufsaufzeichnungen für die Kosten. Wenn neue aktuelle Datensätze zum Master hinzugefügt werden, werden diese neuen Datensätze normalerweise gleichzeitig zum Verlauf hinzugefügt.

Die Felddefinitionen sind im Update, der Historie und den Stammdaten bzw. Tabellen gleich. Wir werden die Aufzeichnungen für das Update und die Historie gemeinsam sortieren. Es wird ein neuer Master erstellt, der nur einen Datensatz für jeden ProductCode hat und dieser Datensatz wird der aktuellste sein. Der Verlauf enthält alle Datensätze für jeden ProductCode einschließlich derer aus der Update-Quelle.

Die Start-Master-Tabelle ist die gleiche wie die Start-Master aus unserem Beispiel von Typ 1 mit den unten gezeigten Werten.

ProductCode Kosten Startdatum
C123 125,50 20110228
F112 2365,00 20120101
G101 19.25 20110930
J245 450,50 20110430
S022 98,75 20110515

Alle Aktualisierungsdaten haben dasselbe Startdatum. Die Quelle update.dat enthält Datensätze mit den folgenden Werten:

ProductCode Kosten Startdatum
F112 2425,00 20120701
J245 550,50 20120701
M447 101,75 20120701
S022 101,75 20120701

Die nachstehende Startverlaufsquelle ist wie der Startmaster in Typ 2. Typ 4 ist also eine Kombination aus Typ 1 und Typ 2, wobei der Master derselbe ist wie ein Typ 1-Master und der Verlauf derselbe ist wie ein Typ 2-Master.

ProductCode Kosten Startdatum
C123 125,50 20110228
F112 2365,00 20120101
G101 19.25 20110930
G101 21.25 20110501
J245 450,50 20110430
J245 425,25 20101001
J245 385,25 20100215
S022 98,75 20110515

In IRI Workbench gibt es einen Voracity-Assistenten, der bei der Erstellung von Skripten zum Aktualisieren von Dimensional-Dateien und -Tabellen hilft. Dieser Assistent befindet sich im Dropdown-Menü „Voracity“ in der Navigationsleiste. Wählen Sie zuerst den SCD-Typ aus. Anschließend wird das Fenster angezeigt, in dem Sie die Quellen auswählen, die für die Verarbeitung des Updates verwendet werden.


Im nächsten Bildschirm richten Sie die Sortierung ein, indem Sie die Tasten auswählen. Es gibt 2 Schlüssel:ProductCode dann Startdatum . Wir gruppieren nach ProductCode , aber wir müssen auch in absteigender Reihenfolge nach StartDate sortieren in jedem ProductCode Gruppierung. Auf diese Weise können wir den neuesten Datensatz für jeden ProductCode filtern Gruppe an den neuen Master.

Um das Startdatum festzulegen einen Schlüssel, der in absteigender Reihenfolge sortiert ist, wählen Sie diesen Schlüssel und dann Schlüssel bearbeiten aus . Dadurch wird der folgende Bildschirm angezeigt:

In der Dropdown-Liste für Richtung wählen Sie Absteigend .

Hier ist das Jobskript für die Sortierung:

/INFILE=C:/IRI/CoSort95/workbench.orig/workspace/SCD/SCD4/history4.dat
    /PROCESS=DELIMITED
    /ALIAS=history4
    /FIELD=(PRODUCTCODE, TYPE=ASCII, POSITION=1, SEPARATOR=",", FRAME='\"')
    /FIELD=(COST, TYPE=NUMERIC, POSITION=2, SEPARATOR=",", FRAME='\"')
    /FIELD=(STARTDATE, TYPE=ASCII, POSITION=3, SEPARATOR=",", FRAME='\"')
/INFILE=C:/IRI/CoSort95/workbench.orig/workspace/SCD/update.dat
    /PROCESS=DELIMITED
    /ALIAS=update
    /FIELD=(PRODUCTCODE, TYPE=ASCII, POSITION=1, SEPARATOR=",", FRAME='\"')
    /FIELD=(COST, TYPE=NUMERIC, POSITION=2, SEPARATOR=",", FRAME='\"')
    /FIELD=(STARTDATE, TYPE=ASCII, POSITION=3, SEPARATOR=",", FRAME='\"')

/SORT
    /KEY=(PRODUCTCODE, TYPE=ASCII)
    /KEY=(STARTDATE, DESCENDING, TYPE=ASCII)

/OUTFILE=history4.dat
 # This file will contain all the records from both inputs
    /PROCESS=DELIMITED
    /FIELD=(PRODUCTCODE, TYPE=ASCII, POSITION=1, SEPARATOR=",", FRAME='\"')
    /FIELD=(COST, TYPE=NUMERIC, POSITION=2, SEPARATOR=",", FRAME='\"')
    /FIELD=(STARTDATE, TYPE=ASCII, POSITION=3, SEPARATOR=",", FRAME='\"')

/OUTFILE=master4.dat
# Include only one record for each ProductCode
    /PROCESS=DELIMITED
    /FIELD=(PRODUCTCODE, TYPE=ASCII, POSITION=1, SEPARATOR=",", FRAME='\"')
    /FIELD=(COST, TYPE=NUMERIC, POSITION=2, SEPARATOR=",", FRAME='\"')
    /FIELD=(STARTDATE, TYPE=ASCII, POSITION=3, SEPARATOR=",", FRAME='\"')
    /INCLUDE WHERE PRODUCTCODE

Unten ist der aktualisierte Master, der durch Ausführen des obigen Auftragsskripts mit SortCL erstellt wurde. Die Werte sind dieselben, die in einem Typ-1-Update erzeugt werden.

ProductCode Kosten Startdatum
C123 125,50 20110228
F112 2425,00 20120701
G101 19.25 20110930
J245 550,50 20120701
M447 139,25 20120701
S022 101,75 20120701

Die Verlaufsdatei enthält alle vorherigen Aufzeichnungen plus die neuen Aufzeichnungen aus der Aktualisierungsdatei.

ProductCode Kosten Startdatum
C123 125,50 20110228
F112 2425,00 20120701
F112 2365,00 20120101
G101 19.25 20110930
G101 21.25 20110501
J245 550,50 20120701
J245 450,50 20110430
J245 425,25 20101001
J245 385,25 20100215
M447 101,75 220120701
S022 101,75 20120701
S022 98,75 20110515