Database
 sql >> база данни >  >> RDS >> Database

SCD тип 4

Данни за измерения, които се променят бавно или непредвидимо, се улавят в анализи на бавно променящите се измерения (SCD). В среда на хранилище за данни таблицата с измерения има първичен ключ, който уникално идентифицира всеки запис и други части от информация, които са известни като данни за измерения.

Всички методи за актуализиране за различните типове SCD се осъществяват с помощта на програмата SortCL в IRI CoSort. В IRI Voracity има съветник, който да помага при създаването на скриптове за задания SCD, използвани при изпълнение на програмата SortCL. Повечето типове SCD използват пълно външно свързване, за да съпоставят записи от оригиналния източник на данни със записи в актуализирания източник въз основа на приравняване на ключ от всеки. Тип 4 обаче извършва актуализацията с помощта на сортиране.

Тип 4 SCD

Моделът тип 4 е подобен на този за тип 2. Разликата е, че има 2 таблици или файлове, които се поддържат:една за текущите разходи и една за съхраняване на хронологията на разходите. Когато нови текущи записи се добавят към главния, тези нови записи обикновено се добавят към историята едновременно.

Дефинициите на полетата са еднакви в актуализацията, историята и главните файлове или таблици. Ще сортираме записите за актуализацията и историята заедно. Ще бъде създаден нов главен код, който има само един запис за всеки ProductCode и този запис ще бъде най-актуалният. Историята ще съдържа всички записи за всеки Код на продукта включително тези от източника на актуализация.

Началната главна таблица ще бъде същата като началната главна таблица от нашия пример за Тип 1 със стойности, както е показано по-долу.

Код на продукта Разходи Начална дата
C123 125,50 20110228
F112 2365,00 20120101
G101 19,25 20110930
J245 450,50 20110430
S022 98,75 20110515

Всички данни за актуализиране ще имат една и съща начална дата. Източникът update.dat съдържа записи със следните стойности:

Код на продукта Разходи Начална дата
F112 2425,00 20120701
J245 550,50 20120701
M447 101,75 20120701
S022 101,75 20120701

Източникът на началната история по-долу е като началния главен в Тип 2. Така че Тип 4 е комбинация от Тип 1 и Тип 2, където главният е същият като главен тип 1 и историята е същият като главен тип 2.

Код на продукта Разходи Начална дата
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

В IRI Workbench има съветник за Voracity, който помага при създаването на скриптове за актуализиране на размерни файлове и таблици. Този съветник се намира в падащото меню Прожорливост в лентата за навигация. Първо избирате типа SCD. След това се показва прозорецът, в който избирате източниците, които се използват за обработка на актуализацията.


Следващият екран е мястото, където настройвате сортирането, като избирате клавишите. Има 2 ключа:Код на продукта след това Начална дата . Групираме по Код на продукта , но също така трябва да сортираме в низходящ ред по Начална дата във всеки Код на продукта групиране. Това е така, за да можем да филтрираме най-новия запис за всеки ProductCode група към новия главен.

За да направите Начална дата ключ, който сортира в низходящ ред, изберете този ключ и след това изберете Редактиране на ключ . Това ще изведе следния екран:

В падащото меню за Посока изберете Низходящо .

Ето работния скрипт за сортирането:

/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

По-долу е актуализираният главен код, произведен чрез изпълнение на горния скрипт за работа с помощта на SortCL. Стойностите са същите, които се произвеждат при актуализация от тип 1.

Код на продукта Разходи Начална дата
C123 125,50 20110228
F112 2425,00 20120701
G101 19,25 20110930
J245 550,50 20120701
M447 139,25 20120701
S022 101,75 20120701

Файлът с историята съдържа всички предишни записи плюс новите записи от файла за актуализиране.

Код на продукта Разходи Начална дата
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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Научете за конкатенацията в SQL с примери

  2. Как да актуализирате колона въз основа на филтър на друга колона

  3. Част 2 – Как да организираме диаграма на голяма база данни

  4. Как да използвате клауза HAVING в SQL

  5. Ръководство за внедряване на TimescaleDB с Docker