Database
 sql >> Base de données >  >> RDS >> Database

DSC Type 4

Les données dimensionnelles qui changent lentement ou de manière imprévisible sont capturées dans les analyses de dimensions à variation lente (SCD). Dans un environnement d'entrepôt de données, une table de dimension possède une clé primaire qui identifie de manière unique chaque enregistrement et d'autres éléments d'information appelés données dimensionnelles.

Toutes les méthodes de mise à jour pour les différents types de SCD sont réalisées à l'aide du programme SortCL dans IRI CoSort. Dans IRI Voracity, un assistant vous aide à créer les scripts de travail SCD utilisés lors de l'exécution du programme SortCL. La plupart des types SCD utilisent une jointure externe complète pour faire correspondre les enregistrements de la source de données d'origine avec les enregistrements de la source mise à jour en fonction de l'équivalence d'une clé de chacun. Le type 4, cependant, effectue la mise à jour à l'aide d'un tri.

SCD de type 4

Le modèle de type 4 est similaire à celui du type 2. La différence est qu'il y a 2 tables ou fichiers qui sont maintenus :un pour les coûts actuels et un pour conserver les enregistrements historiques des coûts. Lorsque de nouveaux enregistrements actuels sont ajoutés au maître, ces nouveaux enregistrements sont généralement ajoutés à l'historique en même temps.

Les définitions des champs sont les mêmes dans la mise à jour, l'historique et les fichiers ou tables maîtres. Nous allons trier les enregistrements pour la mise à jour et l'historique ensemble. Un nouveau maître sera créé avec un seul enregistrement pour chaque ProductCode et cet enregistrement sera le plus récent. L'historique contiendra tous les enregistrements pour chaque ProductCode y compris ceux de la source de mise à jour.

La table maître de départ sera la même que la table maître de départ de notre exemple de Type 1 avec les valeurs indiquées ci-dessous.

ProductCode Coût Date de début
C123 125,50 20110228
F112 2365.00 20120101
G101 19.25 20110930
J245 450.50 20110430
S022 98,75 20110515

Toutes les données de mise à jour auront toutes la même StartDate. La source update.dat contient des enregistrements avec les valeurs suivantes :

ProductCode Coût Date de début
F112 2425.00 20120701
J245 550,50 20120701
M447 101.75 20120701
S022 101.75 20120701

La source d'historique de départ ci-dessous est comme le maître de départ dans le Type 2. Ainsi, le Type 4 est une combinaison de Type 1 et de Type 2 où le maître est le même qu'un maître de Type 1 et l'historique est le même qu'un maître de Type 2.

ProductCode Coût Date de début
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

Dans IRI Workbench, il existe un assistant Voracity pour aider à la création de scripts pour la mise à jour des fichiers et tables Dimensional. Cet assistant se trouve dans la liste déroulante Voracité de la barre de navigation. Vous choisissez d'abord le type de SCD. Ensuite, la fenêtre de sélection des sources utilisées pour le traitement de la mise à jour s'affiche.


L'écran suivant est l'endroit où vous configurez le tri en sélectionnant les clés. Il y a 2 clés :ProductCode puis StartDate . Nous regroupons par ProductCode , mais nous devons également trier par ordre décroissant par StartDate dans chaque ProductCode regroupement. Cela nous permet de filtrer l'enregistrement le plus récent pour chaque ProductCode groupe au nouveau maître.

Pour faire de la StartDate une clé triée par ordre décroissant, sélectionnez cette clé, puis sélectionnez Modifier la clé . Cela fera apparaître l'écran suivant :

Dans le menu déroulant de Direction sélectionnez Descendant .

Voici le script de travail pour le tri :

/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

Vous trouverez ci-dessous le maître mis à jour produit en exécutant le script de travail ci-dessus à l'aide de SortCL. Les valeurs sont les mêmes que celles produites dans une mise à jour de type 1.

ProductCode Coût Date de début
C123 125,50 20110228
F112 2425.00 20120701
G101 19.25 20110930
J245 550,50 20120701
M447 139.25 20120701
S022 101.75 20120701

Le fichier historique contient tous les enregistrements précédents ainsi que les nouveaux enregistrements du fichier de mise à jour.

ProductCode Coût Date de début
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