pună în Aplicare o Schimbă Încet de Tip 2 Dimensiune în SQL Server Integrarea Serviciilor – Partea 1

pună în Aplicare o Schimbă Încet de Tip 2 Dimensiune în SQL Server Integrarea Serviciilor – Partea 1

De: Koen Verbeeck | Actualizat: 2018-08-09 | Comentarii (4) | Legate de: 1 | 2 | 3 | 4 | Mai > Servicii de Integrare de Dezvoltare

Gratuit MSSQLTips Webinar: Noțiuni de bază cu SSIS

Aflați cum să începeți cu SQL Server Integrarea Serviciilor și cum de a construi o SSIS proiect cu acest demo concentrat webinar.,

problemă

am dori să păstrăm istoricul în depozitul nostru de date pentru mai multe dimensiuni.Folosim SQL Server Integration Services (SSIS) pentru a implementa ETL (ExtractTransform and Load). Am încercat expertul de dimensiuni încorporat, dar performanța pare slabă. Cum se poateimplementăm funcționalitatea dorită cu componente SSIS obișnuite?

soluție

Introducere în schimbarea lentă a dimensiunilor

o dimensiune în schimbare lentă (SCD) ține evidența istoriei membrilor săi individuali., Există mai multe metode propuse de Ralph Kimball în cartea sa DatawarehouseToolkit:

  • tip 1 – suprascrieți câmpurile atunci când valoarea se schimbă. Nici o istorie iskept.
  • Type 2-Creați o nouă linie cu noile valori pentru câmpuri. Extracolumns indică când în timp un rând a fost valabil.
  • tip 3-păstrați valoarea veche a unei coloane într-o coloană separată.
  • există mai multe tipuri de SCD-uri, dar ele sunt în mare parte o combinație hibridămai sus.

în acest sfat, ne vom concentra pe situația de tip 2. Să ilustrăm cu un exemplu., Avem un tabel simplu care stochează datele clienților.

SK_Customer coloana este o coloană cu o identityproperty care va genera o noua valoare pentru fiecare rand. Am dori să păstrăm istoria pentru atributul locației. Atunci când se schimbă locația din Antwerp spre Bruxelles,nu avem update la rând, dar vom introduce un nou record:

Utilizarea ValidFrom și ValidTo domenii, weindicate atunci când o înregistrare a fost valabilă în timp. O nouă cheie surogat este generată, darcheia de afaceri – CustomerName-rămâne aceeași., Atunci când un fapt tableis încărcat, o căutare se va face pe masa de client. În funcție de marca temporalădin înregistrarea faptelor, unul dintre cele două rânduri va fi returnat. De exemplu:

toate faptele sunt pentru același client. Când v-ar cere suma totală de vânzăripentru CustomerA, rezultatul este 31. Vânzările totale pe locație sunt 12.75 pentru Antwerpand 18.25 pentru Bruxelles, chiar dacă datele sunt pentru același client. Folosind SCDType 2, putem analiza datele noastre cu atribute istorice.,

metode de implementare

există mai multe metode pentru încărcarea unei dimensiuni în schimbare lentă a depozitului de date de tip 2 ina. Puteți opta pentru o abordare T-SQL pură, fie cu declarații multipleT-SQL, fie folosind Declarația de îmbinare. Acesta din urmă este explicat înutilizând instrucțiunea SQL Server MERGE pentru a procesa tipul 2 schimbând încet dimensiunile.

cu SSIS, puteți utiliza Expertul de dimensiuni care se schimbă lent, care poate gestiona mai multe scenarii., Acest Expert este descris în sfaturileîncărcarea datelor istorice într-un depozit de date SQL Server șimâner schimbarea lentă a dimensiunilor în serviciile de integrare SQL Server. Dezavantajul acestui expert este performanța: utilizează comanda OLE DB pentru everyupdate, ceea ce poate duce la performanțe slabe pentru seturi de date mai mari. Dacă faceți schimbărila fluxul de date pentru a rezolva aceste probleme, nu puteți rula din nou expertul, deoarece ați pierde toate modificările.

ultima opțiune – în afară de utilizarea componentelor 3rdparty-este construirea logicii SCD Type 2 în fluxul de date,pe care îl vom descrie în secțiunea următoare.,

implementare în SSIS

soluția propusă în acest sfat funcționează pentru orice versiune de SSIS. Vom surprinde exemplul dimensiunii clientului, dar a fost adăugat un câmp suplimentar: atributul de e-mail. Nu păstrăm istoricul adreselor de e-mail, astfel încât anynew value va suprascrie toate celelalte valori.

în primul rând, citim datele dintr-o sursă, cel mai probabil un mediu de așteptare. Cândfolosind o sursă relațională, puteți utiliza componenta sursă OLE DB cu o interogare SQL pentru a citi datele. Selectați doar coloanele de care aveți nevoie pentru dimensiunea dvs. Câmpul valid din câmp este calculat și aici., Din moment ce tipicîncărcați datele din ziua precedentă, ValidFrom este setat la data de ieri. Dacă nu aveți o sursă relațională, puteți adăuga această coloană utilizând o coloană Derivatătransformare.

în pasul următor, facem o căutare împotriva dimensiunii.Aici vom verifica dacă rândurile primite sunt fie o inserție, fie o actualizare.Dacă nu se găsește nicio potrivire, rândul este un nou membru de dimensiune și trebuie introdus.Dacă se găsește o potrivire, membrul de dimensiune există deja și va trebui să verificăm modificările SCD Type 2., Dacă nu aveți o dimensiune foarte mare, puteți utilizacach-ul complet:

configurați transformarea de căutare pentru a trimite rânduri care nu se potrivesc la ieșirea fără potrivire. În SSIS 2005 această opțiune nu există încă, așa că puteți utiliza ieșirea de eroare sau puteți seta transformarea pentru a ignora eșecurile și a împărți inserțiile și actualizările folosind o divizare condiționată.

în Panoul de conectare, următoarea interogare SQL preia coloanele surrogatekey, business key (CustomerName) și SCD Type 2., Pentru fiecare membru, numai cel mai recent rând este preluat, prin filtrarea pe câmpul ValidTo.

câmpul Locație este redenumit Location_OLD pentru claritate. În panoul columns, potriviți pe tasta business și selectați toate celelalte coloane.

acum putem adăuga o destinație DB OLE pe panza. Această destinație va scrietoate rândurile noi la dimensiune. Conectați căutarea fără ieșire de potrivire a transformării de căutare la destinație.,

în panoul de mapare, mapați coloanele fluxului de date cu coloanele tabelului de dimensiuni.

SK_Customer coloana este lăsat nemarcat, ca e o IDENTITATE columnand valorile sale sunt generate de motorul de baze de date. ValidTo columnis a rămas, de asemenea, necompletat. Rândurile noi nu au nicio valoare pentru această coloană.

în partea 2 a acestui sfat vom continua configurarea fluxului de date,unde vom verifica dacă un rând este o actualizare de tip 2 sau nu.,

Următorii Pași
  • Dacă vrei să știi mai multe despre implementarea schimbă încet dimensiuni inSSIS, puteți verifica afară de următoarele sfaturi:
    • Utilizarea SQL Server MERGE Declarație la Procesul de Tip 2 Schimbă Încet Dimensiuni
    • Încărcare a Datelor Istorice într-un Depozit de Date SQL Server
    • se Ocupe de Schimbarea Încet Dimensiuni în SQL Server Integrarea Serviciilor
  • puteți găsi mai multe SSIS sfaturi de dezvoltare în ansamblu.,

Ultima Actualizare: 2018-08-09

Despre autor
Koen Verbeeck este o BI profesionist, specializat în Microsoft BI stivă cu o anumită dragoste pentru SSIS.
Vezi toate sfaturile mele

Lasă un răspuns

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *