Database
 sql >> Base de Dados >  >> RDS >> Database

SCD Tipo 4


Dados dimensionais que mudam de forma lenta ou imprevisível são capturados em análises de Dimensões de Alteração Lenta (SCD). Em um ambiente de data warehouse, uma tabela de dimensões tem uma chave primária que identifica exclusivamente cada registro e outras informações conhecidas como dados dimensionais.

Todos os métodos de atualização para os diferentes tipos de SCD são realizados usando o programa SortCL no IRI CoSort. No IRI Voracity existe um assistente para auxiliar na criação dos scripts de trabalho SCD usados ​​ao executar o programa SortCL. A maioria dos tipos de SCD usa uma junção externa completa para corresponder registros da fonte de dados original com registros na fonte atualizada com base na igualdade de uma chave de cada um. O tipo 4, no entanto, realiza a atualização usando uma classificação.

SCD Tipo 4

O modelo do Tipo 4 é semelhante ao do Tipo 2. A diferença é que existem 2 tabelas ou arquivos que são mantidos:um para os custos atuais e outro para manter os registros do histórico dos custos. Quando novos registros atuais são adicionados ao mestre, esses novos registros geralmente são adicionados ao histórico ao mesmo tempo.

As definições dos campos são as mesmas na atualização, no histórico e nos arquivos ou tabelas mestres. Vamos classificar os registros para a atualização e o histórico juntos. Será criado um novo mestre que possui apenas um registro para cada ProductCode e esse registro será o mais atual. O histórico terá todos os registros para cada ProductCode incluindo os da fonte de atualização.

A tabela master inicial será a mesma que a master inicial do nosso exemplo do Tipo 1 com os valores mostrados abaixo.
ProductCode Custo Data de início
C123 125,50 20110228
F112 2365,00 20120101
G101 19,25 20110930
J245 450,50 20110430
S022 98,75 20110515

Todos os dados de atualização terão a mesma StartDate. A fonte update.dat contém registros com os seguintes valores:
ProductCode Custo Data de início
F112 2.425,00 20120701
J245 550,50 20120701
M447 101,75 20120701
S022 101,75 20120701

A fonte do histórico inicial abaixo é como o mestre inicial no Tipo 2. Assim, o Tipo 4 é uma combinação de Tipo 1 e Tipo 2, onde o mestre é o mesmo que um mestre Tipo 1 e o histórico é o mesmo que um mestre Tipo 2.
ProductCode Custo Data de início
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

No IRI Workbench, existe um assistente Voracity para auxiliar na criação de scripts para atualização de arquivos e tabelas Dimensionais. Este assistente está localizado no menu suspenso Voracity na barra de navegação. Primeiro você escolhe o tipo de SCD. Em seguida, a janela onde você seleciona as fontes que são usadas para processar a atualização é exibida.


A próxima tela é onde você configura a ordenação selecionando as chaves. Existem 2 chaves:ProductCode então DataInício . Estamos agrupando por ProductCode , mas também precisamos classificar em ordem decrescente por StartDate dentro de cada ProductCode agrupamento. Isso é para que possamos filtrar o registro mais recente para cada ProductCode grupo para o novo mestre.



Para tornar a StartDate uma chave que classifica em ordem decrescente, selecione essa chave e, em seguida, selecione Editar chave . Isso trará a seguinte tela:



Na lista suspensa de Direção selecione Decrescente .

Aqui está o script de trabalho para a classificação:
/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

Abaixo está o mestre atualizado produzido pela execução do script de trabalho acima usando SortCL. Os valores são os mesmos que são produzidos em uma atualização do Tipo 1.
ProductCode Custo Data de início
C123 125,50 20110228
F112 2.425,00 20120701
G101 19,25 20110930
J245 550,50 20120701
M447 139,25 20120701
S022 101,75 20120701

O arquivo de histórico contém todos os registros anteriores mais os novos registros do arquivo de atualização.
ProductCode Custo Data de início
C123 125,50 20110228
F112 2.425,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