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

SCD тип 1

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

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

Тази статия обхваща модела SCD тип 1, където новата информация от данните за актуализиране замества оригиналната информация в главния източник. Записите в източника на актуализация без съвпадения се добавят към новия главен файл. Тъй като този модел включва презаписване на стари стойности с текущите стойности и не поддържа история, той не се използва често.

Актуализацията се извършва чрез присъединяване по отношение на полето ProductCode. За този пример текущите данни ще бъдат изходния файл master1.dat и update.dat се използва за промяна на стойности или добавяне на записи в текущия главен източник.

Източникът master1.dat съдържа:

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

Новата таблица с размери ще има следните стойности след актуализацията:

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

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

Следващият екран е за дефиниране на свързването, извършено с главния източник и източниците за актуализиране

По-долу е даден скриптът за задание sortcl, който се произвежда при обработката на двата файла master1.dat и update.dat:

/INFILE=C:/IRI/CoSort95/workbench.orig/workspace/SCD/SCD1/master1.dat
  /PROCESS=DELIMITED
  /ALIAS=master1
  /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='\"')

/JOIN FULL_OUTER NOT_SORTED master1 NOT_SORTED update WHERE MASTER1.PRODUCTCODE == UPDATE.PRODUCTCODE

/OUTFILE=/master1.dat
# This processes all except the new records
  /PROCESS=DELIMITED
  /FIELD=(MASTER1.PRODUCTCODE, TYPE=ASCII, POSITION=1, SEPARATOR=",", FRAME='\"')
  /FIELD=(COST_NEW, TYPE=NUMERIC, POSITION=2, SEPARATOR=",", FRAME='\"', IF MASTER1.PRODUCTCODE EQ UPDATE.PRODUCTCODE THEN UPDATE.COST ELSE MASTER1.COST)
  /FIELD=(STARTDATE_NEW, TYPE=ASCII, POSITION=3, SEPARATOR=",", FRAME='\"', IF MASTER1.PRODUCTCODE EQ UPDATE.PRODUCTCODE THEN UPDATE.STARTDATE ELSE MASTER1.STARTDATE)
  /INCLUDE WHERE MASTER1.PRODUCTCODE NE ""
/OUTFILE=master1.dat
# This processes the new records to be added
  /PROCESS=DELIMITED
  /FIELD=(UPDATE.PRODUCTCODE, TYPE=ASCII, POSITION=1, SEPARATOR=",", FRAME='\"')
  /FIELD=(UPDATE.COST, TYPE=NUMERIC, POSITION=2, SEPARATOR=",", FRAME='\"')
  /FIELD=(UPDATE.STARTDATE, TYPE=ASCII, POSITION=3, SEPARATOR=",", FRAME='\"') I 
  /INCLUDE WHERE MASTER1.PRODUCTCODE EQ ""

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Мониторинг на забавяне на четене/запис

  2. Как да получите записи от последните 30 дни

  3. Работа с не-ASCII JDBC данни в Talend

  4. Въведение в асинхронната обработка с Service Broker

  5. Намиране на предимства на производителността с разделяне