sql >> Databasteknik >  >> RDS >> Database

SCD typ 4

Dimensionsdata som förändras långsamt eller oförutsägbart fångas i Slowly Changing Dimensions-analyser (SCD). I en datalagermiljö har en dimensionstabell en primärnyckel som unikt identifierar varje post och annan information som kallas dimensionsdata.

Alla uppdateringsmetoder för de olika SCD-typerna utförs med programmet SortCL i IRI CoSort. I IRI Voracity finns det en guide som hjälper dig att skapa SCD-jobbskripten som används när du kör SortCL-programmet. De flesta SCD-typer använder en fullständig yttre koppling för att matcha poster från den ursprungliga datakällan med poster i den uppdaterade källan baserat på att likställa en nyckel från varje. Typ 4 utför dock uppdateringen med hjälp av en sortering.

Typ 4 SCD

Typ 4-modellen liknar den för typ 2. Skillnaden är att det finns 2 tabeller eller filer som underhålls:en för de aktuella kostnaderna och en för att hålla historikposterna för kostnaderna. När nya aktuella poster läggs till i mastern, läggs dessa nya poster vanligtvis till i historiken samtidigt.

Fältdefinitionerna är desamma i uppdateringen, historiken och masterfilerna eller tabellerna. Vi kommer att sortera posterna för uppdateringen och historiken tillsammans. En ny master kommer att skapas som bara har en post för varje Produktkod och det rekordet kommer att vara det mest aktuella. Historiken kommer att ha alla poster för varje Produktkod inklusive de från uppdateringskällan.

Startmastertabellen kommer att vara densamma som startmaster från vårt exempel på typ 1 med värden som visas nedan.

Produktkod Kostnad Startdatum
C123 125,50 20110228
F112 2365.00 20120101
G101 19.25 20110930
J245 450,50 20110430
S022 98,75 20110515

Alla uppdateringsdata kommer alla att ha samma startdatum. Update.dat-källan innehåller poster med följande värden:

Produktkod Kostnad Startdatum
F112 2425.00 20120701
J245 550.50 20120701
M447 101,75 20120701
S022 101,75 20120701

Starthistorikkällan nedan är som startmästaren i Typ 2. Så Typ 4 är en kombination av Typ 1 och Typ 2 där mastern är densamma som en Typ 1-master och historiken är densamma som en Typ 2-master.

Produktkod Kostnad 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

I IRI Workbench finns det en Voracity-guide som hjälper dig att skapa skript för uppdatering av dimensionsfiler och tabeller. Den här guiden finns i rullgardinsmenyn Voracity i navigeringsfältet. Först väljer du SCD-typen. Då visas fönstret där du väljer de källor som används för att bearbeta uppdateringen.


Nästa skärm är där du ställer in sorteringen genom att välja nycklarna. Det finns två nycklar:Produktkod sedan Startdatum . Vi grupperar efter Produktkod , men vi måste också sortera i fallande ordning efter Startdatum inom varje Produktkod gruppering. Detta för att vi ska kunna filtrera den senaste posten för varje Produktkod grupp till den nya mastern.

För att göra Startdatum en nyckel som sorteras i fallande ordning, välj den nyckeln och välj sedan Redigera nyckel . Detta kommer att ta upp följande skärm:

I rullgardinsmenyn för Riktning välj Fallande .

Här är jobbskriptet för sorten:

/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

Nedan visas den uppdaterade mastern som skapats genom att köra ovanstående jobbskript med SortCL. Värdena är desamma som produceras i en typ 1-uppdatering.

Produktkod Kostnad 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

Historikfilen innehåller alla tidigare poster plus de nya posterna från uppdateringsfilen.

Produktkod Kostnad 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

  1. SQLite JSON_PATCH()

  2. 2 sätt att skapa en tabell på en länkad server med T-SQL

  3. Hur man skickar strängarray i SQL-parameter till IN-sats i SQL

  4. gem install pg --with-pg-config fungerar, paketet misslyckas