sql >> Database teknologi >  >> RDS >> Database

SCD Type 4

Dimensionsdata, der ændrer sig langsomt eller uforudsigeligt, fanges i Slowly Changing Dimensions (SCD) analyser. I et datavarehusmiljø har en dimensionstabel en primær nøgle, der unikt identificerer hver post og andre oplysninger, der er kendt som dimensionsdata.

Alle opdateringsmetoderne for de forskellige SCD-typer udføres ved hjælp af SortCL-programmet i IRI CoSort. I IRI Voracity er der en guide til at hjælpe med at skabe de SCD-jobscripts, der bruges ved kørsel af SortCL-programmet. De fleste SCD-typer bruger en fuld ydre joinforbindelse til at matche poster fra den originale datakilde med poster i den opdaterede kilde baseret på at sidestille en nøgle fra hver. Type 4 udfører dog opdateringen ved hjælp af en sortering.

Type 4 SCD

Type 4-modellen ligner den for Type 2. Forskellen er, at der er 2 tabeller eller filer, der vedligeholdes:en for de aktuelle omkostninger og en til at opbevare historikregistreringerne for omkostningerne. Når nye aktuelle poster føjes til masteren, tilføjes disse nye poster normalt til historikken på samme tid.

Feltdefinitionerne er de samme i opdateringen, historikken og masterfilerne eller tabellerne. Vi sorterer optegnelserne for opdateringen og historikken sammen. En ny master vil blive oprettet, som kun har én post for hver Produktkode og den rekord vil være den mest aktuelle. Historikken vil have alle poster for hver Produktkode inklusive dem fra opdateringskilden.

Startmastertabellen vil være den samme som startmaster fra vores eksempel på Type 1 med værdier som vist nedenfor.

Produktkode Omkostninger Startdato
C123 125,50 20110228
F112 2365.00 20120101
G101 19.25 20110930
J245 450,50 20110430
S022 98,75 20110515

Alle opdateringsdata vil alle have den samme startdato. Update.dat-kilden indeholder poster med følgende værdier:

Produktkode Omkostninger Startdato
F112 2425.00 20120701
J245 550,50 20120701
M447 101,75 20120701
S022 101,75 20120701

Kilden til starthistorikken nedenfor er som startmesteren i Type 2. Så Type 4 er en kombination af Type 1 og Type 2, hvor masteren er den samme som en Type 1 master, og historikken er den samme som en Type 2 master.

Produktkode Omkostninger Startdato
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

I IRI Workbench er der en Voracity-guide til at hjælpe med oprettelsen af ​​scripts til opdatering af dimensionsfiler og tabeller. Denne guide er placeret i rullemenuen Voracity på navigationslinjen. Først vælger du SCD-typen. Derefter vises vinduet, hvor du vælger de kilder, der skal bruges til at behandle opdateringen.


Næste skærmbillede er, hvor du opsætter sorteringen ved at vælge tasterne. Der er 2 nøgler:Produktkode derefter Startdato . Vi grupperer efter Produktkode , men vi skal også sortere i faldende rækkefølge efter Startdato inden for hver Produktkode gruppering. Dette er for at vi kan filtrere den seneste post for hver Produktkode gruppe til den nye master.

For at lave Startdato en nøgle, der sorterer i faldende rækkefølge, vælg den nøgle og vælg derefter Rediger nøgle . Dette viser følgende skærmbillede:

I rullemenuen for Retning vælg Faldende .

Her er jobscriptet for den slags:

/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

Nedenfor er den opdaterede master produceret ved at køre ovenstående jobscript ved hjælp af SortCL. Værdierne er de samme, som produceres i en Type 1-opdatering.

Produktkode Omkostninger Startdato
C123 125,50 20110228
F112 2425.00 20120701
G101 19.25 20110930
J245 550,50 20120701
M447 139,25 20120701
S022 101,75 20120701

Historiefilen indeholder alle tidligere poster plus de nye poster fra opdateringsfilen.

Produktkode Omkostninger Startdato
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

  1. DATE_SUB() Eksempler – MySQL

  2. En måde at udtrække data fra en DateTime-værdi uden sekunder

  3. Sådan eksporteres forespørgselsresultater til en CSV-fil i SQL Developer (Oracle)

  4. Sådan får du vist forespørgselsfejl i PDO PHP