By: Koen Verbeeck | Päivitetty: 2018-08-09 | Kommentit (4) | Liittyvät: 1 | 2 | 3 | 4 | Enemmän > Integraatio Palvelujen Kehittämiseen
Ilmainen MSSQLTips Webinaari: Aloittanut SSIS
Lue, miten päästä alkuun SQL Server Integration Services ja miten rakentaa SSIS-projektin kanssa tämä demo keskittyi webinaarin.,
Ongelma
Haluamme pitää historiaa meidän tietovarasto useita ulottuvuuksia.Käytämme SQL Server Integration Services (SSIS) toteuttaa ETL (ExtractTransform-ja Kuorma). Kokeilimme sisäänrakennettu hitaasti muuttuva ulottuvuus velho, mutta suorituskyky näyttää huono. Miten voimme toteuttaa halutun toiminnallisuuden säännöllisillä SSIS-komponenteilla?
Ratkaisu
Johdanto Hitaasti Muuttuvat Dimensiot
hitaasti muuttuva dimensio (SCD) pitää kirjaa historian sen individualmembers., Ralph Kimballin kirjassaan The DatawarehouseToolkit:
- Type 1 ehdottamia menetelmiä on useita – korvaa kentät arvon muuttuessa. Ei historiaa.
- Type 2 – Luo uusi rivi kentille uusilla arvoilla. Extrakolumnit kertovat, milloin peräkkäinen ajankohta oli voimassa.
- tyyppi 3 – pidä pylvään Vanha arvo erillisessä sarakkeessa.
- SCD-tyyppejä on useampia, mutta ne ovat useimmiten edellä mainittu hybridiyhdistelmä.
tässä vihjeessä keskitytään tyypin 2 tilanteeseen. Kuvitetaanpa esimerkki., Meillä on yksinkertainen taulukko, joka tallentaa asiakastietoja.
SK_Customer sarake on sarake, jossa on identityproperty joka tuottaa uutta arvoa jokaiselle riville. Haluamme avaimenperusteen Sijaintiominaisuudelle. Kun sijainti muuttuu Antwerpenistä Brysseliin,emme päivitä rivi, mutta emme aseta uusi ennätys:
Käyttämällä ValidFrom ja ValidTo kentät, weindicate, kun ennätys oli voimassa vuoden ajan. Uusi sijaissynnytysavain syntyy, mutta liiketoiminnan avain-mukautettu nimi-pysyy samana., Kun faktapöytä on ladattu, asiakaspöydälle tehdään haku. Faktatietojen ajankohdasta riippuen toinen riveistä palautetaan. Esimerkiksi:
Kaikki tosiasiat ovat samalla asiakkaalle. Kun kysyisit Kokonaismyyntimäärää Customeralta, tulos on 31. Kokonaismyynti sijaintikohtaisesti on Antwerpenin osalta 12,75 ja Brysselin osalta 18,25, vaikka tiedot koskevat samaa asiakasta. SCDType 2: n avulla voimme analysoida tietojamme historiallisilla attribuuteilla.,
toteutustapa
On olemassa useita menetelmiä lastaus Hitaasti Muuttuva Dimensio tyypin 2 ina tietovarasto. Voit valita puhtaan T-SQL-lähestymistavan joko multipleT-SQL-lausekkeilla tai YHDISTÄMISLAUSEKKEELLA. Viimeksi mainittu selitetään SQL Server MERGE-lausekkeessa, jossa käsitellään tyypin 2 hitaasti muuttuvia mittoja.
SSIS: n kanssa voit käyttää sisäänrakennettua hitaasti muuttuvaa ulottuvuutta, joka voi kätkeä useita skenaarioita., Tämä velho on kuvattu tipsLoading historiallisia tietoja osaksi SQL Server Data Warehouse jahandle hitaasti muuttuvat mitat SQL Server Integration Services. Tämän ohjatun ohjatun ohjatun toiminnon downside on suorituskyky: se käyttää OLE DB-komentoa everyupdatelle, mikä voi johtaa huonoon suorituskykyyn suuremmissa tietokokonaisuuksissa. Jos teet changesto tietojen virtaus ratkaista nämä ongelmat, et voi ajaa ohjatun uudelleen, koska sinä menettäisit kaikki muutokset.
viimeinen vaihtoehto – syrjään käyttämästä 3rdparty osia – on rakennuksen SCD Tyypin 2 logiikka itse tietovirta,jonka me kuvataan seuraavassa jaksossa.,
toteutus SSIS: ssä
tässä vihjeessä ehdotettu ratkaisu toimii mihin tahansa SSIS: n versioon. Otamme esimerkin asiakasulottuvuudesta, mutta siihen on lisätty ylimääräinen kenttä: Sähköposti-attribuutti. Emme pidä historiaa sähköpostiosoitteita, joten anyw arvo korvaa kaikki muut arvot.
ensin luemme tiedot lähteestä, todennäköisesti lavastusympäristöstä. Kun käytät relaatiolähdettä, voit käyttää OLE DB-Lähdekomponenttia SQL querytolla, joka lukee tiedot. Valitse vain sarakkeet, joita tarvitset ulottuvuuteesi. Myös kentän arvo lasketaan tästä., Koska lataat typically tietoja edellisestä päivästä, ValidFrom on asetettu eiliseen päivään. Jos sinulla ei ole relaatiolähdettä, voit lisätä tämän sarakkeen käyttämällä johdettua sarakkeen transformaatiota.
seuraava askel, teemme lookup vastaan ulottuvuus.Tässä tarkistamme, ovatko saapuvat rivit joko insertti tai päivitys.Jos ottelu löytyy, rivillä on uuden ulottuvuuden jäsen, ja se on lisättävä.Jos match löytyy, dimension jäsen on jo olemassa ja tarvitsemme tocheck SCD tyyppi 2 muutoksia., Ellei sinulla on hyvin suuri ulottuvuus, voit usethe koko välimuisti:
Määritä lookup-transformaatio lähettää non-matching rivit nro ottelu lähtö. Vuonna SSIS 2005 tämä vaihtoehto ei ole vielä olemassa, joten voit käyttää joko virhe, lähtö, tai asettaa muutos sivuuttaa epäonnistumisia andsplit ulos insertit ja päivitykset käyttämällä ehdollisen split.
Yhteys-ruudussa seuraava SQL-kysely hakee surrogatekey, liike-näppäintä (CustomerName) ja SCD 2-Tyypin sarakkeita., Jokaiselle jäsenelle haetaan vain viimeisin rivi suodattamalla ValidTo-kentässä.
Sijaintikenttä on selkeyden vuoksi uudelleennimetty Sijaintikentäksi_old. TheColumns-ruudussa match on business key ja valitse KAIKKI muut sarakkeet.
Nyt voimme lisätä OLE DB Destination kankaalle. Tämä kohde kirjoittaa kaikki uudet rivit ulottuvuuteen. Yhdistä Lookup no Match Outputof lookup muutos kohteeseen.,
Edelleen kartoitus-ruudussa, kartta sarakkeet data flow-sarakkeet omistaja ei kuitenkaan taulukossa.
SK_Customer sarake on jätetty kartoittamatta, koska se on IDENTITEETTI columnand sen arvot syntyvät tietokanta moottori. Myös ValidTo-kolumni jäi tyhjäksi. Uusilla riveillä ei ole arvoa tälle sarakkeelle.
tämän vinkin osassa 2 jatkamme tiedonkulun konfigurointia,jossa Tarkistamme, onko rivi tyypin 2 päivitys vai ei.,
Seuraavaksi
- Jos haluat tietää enemmän siitä, täytäntöön hitaasti muuttuvat dimensiot inSSIS, voit tarkistaa seuraavat vinkit:
- Käyttää SQL Server YHDISTÄÄ Lausunnon Prosessi Tyypin 2 Hitaasti Muuttuvat Dimensiot
- Lastaus Historialliset Tiedot SQL Server Data Warehouse
- Kahva Hitaasti Muuttuvat Dimensiot SQL Server Integration Services
- löydät lisää SSIS kehitys vinkkejä tässä yleiskatsaus.,
Viimeksi Päivitetty: 2018-08-09
author
Katso kaikki vinkkini