sql >> Base de Datos >  >> RDS >> Database

SCD tipo 4

Los datos dimensionales que cambian lentamente o de manera impredecible se capturan en análisis de dimensiones que cambian lentamente (SCD). En un entorno de almacenamiento de datos, una tabla de dimensiones tiene una clave principal que identifica de forma única cada registro y otras piezas de información que se conocen como datos dimensionales.

Todos los métodos de actualización para los diferentes tipos de SCD se realizan mediante el programa SortCL en IRI CoSort. En IRI Voracity hay un asistente que ayuda a crear los scripts de trabajo SCD que se usan cuando se ejecuta el programa SortCL. La mayoría de los tipos de SCD utilizan una combinación externa completa para hacer coincidir los registros de la fuente de datos original con los registros de la fuente actualizada en función de la equiparación de una clave de cada uno. El tipo 4, sin embargo, realiza la actualización mediante una ordenación.

MSC tipo 4

El modelo Tipo 4 es similar al del Tipo 2. La diferencia es que hay 2 tablas o archivos que se mantienen:uno para los costos actuales y otro para mantener los registros históricos de los costos. Cuando se agregan nuevos registros actuales al maestro, estos nuevos registros generalmente se agregan al historial al mismo tiempo.

Las definiciones de campo son las mismas en la actualización, el historial y los archivos o tablas maestras. Ordenaremos los registros para la actualización y el historial juntos. Se creará un nuevo maestro que solo tiene un registro para cada ProductCode y ese registro será el más actual. El historial tendrá todos los registros para cada ProductCode incluidos los de la fuente de actualización.

La tabla maestra inicial será la misma que la maestra inicial de nuestro ejemplo de Tipo 1 con los valores que se muestran a continuación.

ProductCode Coste Fecha de inicio
C123 125,50 20110228
F112 2365.00 20120101
G101 19,25 20110930
J245 450,50 20110430
S022 98,75 20110515

Todos los datos de actualización tendrán la misma fecha de inicio. La fuente update.dat contiene registros con los siguientes valores:

ProductCode Coste Fecha de inicio
F112 2425.00 20120701
J245 550,50 20120701
M447 101,75 20120701
S022 101,75 20120701

La fuente del historial inicial a continuación es como el maestro inicial en el Tipo 2. Por lo tanto, el Tipo 4 es una combinación de Tipo 1 y Tipo 2 donde el maestro es el mismo que el maestro Tipo 1 y el historial es el mismo que el maestro Tipo 2.

ProductCode Coste Fecha de inicio
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

En IRI Workbench, hay un asistente de Voracity para ayudar en la creación de scripts para actualizar archivos y tablas de Dimensional. Este asistente se encuentra en el menú desplegable Voracidad en la barra de navegación. Primero eliges el tipo SCD. Luego se muestra la ventana donde selecciona las fuentes que se utilizan para procesar la actualización.


La siguiente pantalla es donde configura la clasificación seleccionando las claves. Hay 2 claves:ProductCode luego Fecha de inicio . Estamos agrupando por ProductCode , pero también debemos ordenar en orden descendente por StartDate dentro de cada ProductCode agrupamiento. Esto es para que podamos filtrar el registro más reciente para cada ProductCode grupo al nuevo maestro.

Para hacer la StartDate una clave que se ordena en orden descendente, seleccione esa clave y luego seleccione Editar clave . Aparecerá la siguiente pantalla:

En el menú desplegable de Dirección selecciona Descendente .

Aquí está el script de trabajo para el tipo:

/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

A continuación se muestra el maestro actualizado producido al ejecutar el script de trabajo anterior utilizando SortCL. Los valores son los mismos que se producen en una actualización de Tipo 1.

ProductCode Coste Fecha de inicio
C123 125,50 20110228
F112 2425.00 20120701
G101 19,25 20110930
J245 550,50 20120701
M447 139,25 20120701
S022 101,75 20120701

El archivo de historial contiene todos los registros anteriores más los nuevos registros del archivo de actualización.

ProductCode Coste Fecha de inicio
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