Saldotietojen tallennus päivätasolla on yksi tietovaraston tyypillisistä tehtävistä. Operatiiviset järjestelmät eivät yleensä jätä saldohistoriaa talteen, tietovarasto on siihen tarkoitukseen järkevä työkalu. Saldohistoriaa taas voidaan hyödyntää raportoinnissa sekä logistiikan kehittämisessä ja optimoinnissa.
Saldohistoria on perinteisesti tallennettu päivätasolla, esim. varastoittain. Saldohistoria indekseineen vie helposti hervottomasti tilaa tietokannassa. Perinteinen saldojen mallinnustapa hieman yksinkertaistettuna näyttää jotakuinkin tältä:
Eli jokaiselle tuote-/varastokombinaatiolle kirjoitetaan joka päivä yksi rivi. Jos on esimerkiksi 30000 tuotetta ja 15 varastoa, tekee se päivässä 450000 riviä. Viikossa 3,2M, vuodessa 164M. Eli jo suht’ pienilläkin volyymeilla alkaa dataa olemaan käsissä jo muutamassa vuodessakin ihan kiitettävästi. Hieman helpotusta tilatarpeeseen mahdolliesti saa, jos jättää 0-saldot lataamatta.
Mutta – kaikki saldothan eivät muutu joka päivä. Onko mitään järkeäkään kirjoittaa samaa tietoa moneen kertaan levyn kulmalle? Entä jos kirjoitettaisiinkin rivi vain silloin kun tapahtuu muutoksia? Tilaa säästävämpi varastosaldotaulu voisi näyttää jotakuinkin tältä:
Eli otetaankin talteen vain muuttuneet tiedot. Kerrotaan alku- ja päättymispäivillä, milloin kyseinen saldo/kustannus on ollut voimassa. Lisäksi merkataan voimassaolo esim. kurantti-sarakkeella.
SSIS:llä toteutuskin on aika yksinkertainen. Kun uusi rivi saapuu lähdejärjestelmästä, otetaan verrokiksi vastaava kurantti saldorivi saldotaulusta (sama tuote ja varasto, Kurantti = 1). Verrataan keskenään saldoa, hankintahintaa sekä OKA-hintaa. Jos jossain näistä on muutoksia, viedään uusi rivi saldotauluun.
- Saldorivin alkupvm = kuluva pvm. Kurantti = 1 ja LoppuPVM = NULL
- Päätetään edellinen voimassaollut rivi saldotaulusta (kurantti = 0, LoppuPVM = edellinen päivä).
- Edellisten voimassaolleiden rivien päättäminen tehdään toki SSIS-paketin lopussa yhdellä SQL:llä. Taulu on indeksoitava fiksusti, jotta päivitykset sekä luku tapahtuvat sutjakasti.
Uusi varastosaldotaulu on rakenteeltaan sellainen, ettei sitä pysty oikein suoraan hyödyntämään. Eli tähän päälle voi kirjoittaa vielä yksinkertaisen näkymän, joka tarvittaessa populoi saldot kaikille kalenteripäiville alku- ja loppupäivien mukaisesti.
Fiksumminn mallintaen on mahdollista säästää jopa 90% saldojen viemästä tilasta tietokannassa.