Professional Documents
Culture Documents
Ako već postoje OLTP baze iz kojih efikasno izvlačimo podatke, zašto bi tražili BI rješenje za
istu namjenu ?
Aplikacija pored toga što služi da sistem puni podacima, služi i za izvlačenje povratne
informacije na osnovu toga šta se nalazi u tim podacima.
BI priča se odnosi na velike kompanije, enterprise class business, a vrlo je rijetko da postoji
potreba na malim bazama.
Ako ne u real-time, onda u drugim vremenskim intervalima bi trebalo biti omogućeno dobiti
izvještaje i uvide u poslovanje, na osnovu kojih se donose poslovne odluke.
-Implementatora
-Korisnika
Kao primjer ovog možemo navesti neku firmu koja je stara više desetina godina, a koja nema
up to date softver, ne posjeduju najnovije softvere, a jednom BI analitičaru trebaju
informacije iz svih tih sistema, iz svih tih okruženja, da bi mogao na osnovu svih informacija
vršiti neke korisne analize.
Izvlačenje informacija može potrajati.
Ovakve baze, gdje su podaci rašireni kroz različita heterogena okruženja, baš i nisu pogodne
za izvještavanje i analizu, dok su pogodne npr za SELECT, izvlačenje podataka.
Agregacije na velikim količinama podatka su spore, a relacioni model nije blizak poslovnim
korisnicima
Uvijek putem ETL procesa dolaze novi svježi podaci za neke buduće poslovne analize, zbog
toga, klasičan SELECT je u redu, ali SELECT koji nešto analizira nije.
Cloud na sebe uzima veliki teret, jer treba da hostira naše podatke.
Data science-budućnost u razvoju poslovne inteligencije, gdje se sada pojavljuju timovi ljudi
koji koriste naučne metode npr. Machine learning, vision, data mining, vještačka
inteligencija, te pokušavaju iskoristiti veliku količinu informacija za AI ili druge inteligentne
sisteme.
U velikim BI projektima javlja se puno rola, timovi sa više ljudi od kojih se za svakog zna koju
funkciju obavlja.
Project Manager-rukovodi cijelom pričom, poznaje IT, tako da može da prati sve i koordinira.
Rješenja za BI i alati
Potrebne stvari: database engine,integration services, master data services, data quality
services, analysis services, reporting services
Predavanje 2
Skladišta podataka I
Skupljamo sve podatke iz svih data source-ova koji se nalaze u našoj korporaciji,
infrastrukturi.Skupljamo ih sve na jednu lokaciju i iz te lokacija radimo poslovne analize.Jak
obi teško bilo da radimo jedan report npr. na više heterogenih okruženja.
Npr. podaci o prodaji, pacijentima u bolnici itd., konkretno historijski zapis kompletnog
posla, od početka.To bi trebali da budu read-only podaci, jer taj record oslikava stanje koji je
bio u nekom specifičnom vremenu, neki datum, pa bi bilo koja izmjena bila pogrešna i dovela
bi do polaznih osnova u nekoj analizi.
Tabele su uglavnom puno veće, dešava se redudancija, jer se podaci slijevaju iz više lokacija i
samim tim ovo se pravi za analizu, agregaciju a ne za dodavanje.
Bilo koja BI priča može da radi ali gubi smisamo bez pravih skladišta ili lokacija
Arhitektura skladišta podataka:
Jedna valika baza, jedan veliki DW gdje se slijevaju podaci sa svih lokacija.Svi branchevi se
„kače“ svojim BI alatima i uzimaju podatke sa jednog DW-a.Jednostavnije je za održavanje,
jeftinije itd., ali na nekim mjestima ovo gubi smisao.
Npr., imamo 10 departmenta, i bez obzira da li neki department, recimo „Human Resources“
ne želi vidjeti podatke iz department-a analize, mora proći kroz šumu svih podataka.Upravo
zbog toga dolazi departmental data marts.
Za data marts se može reći da je skladište, ali manjih proporcija.Svaki department ima svoj
nezavisni data warehouse, za poslovne akcije, za analizu itd.
Imamo centralni warehouse, imamo male hub-ove odnosno data marts koji su konstantno u
sync-u sa centralom.
Kako se podaci slijevaju u veliki DW onda se oni proslijeđuju u branchove, ili obratno.Ovaj
način je najefikasniji i najbolji, ali i najskuplji.
Jako je važan master data management.To je framework, pravila, policy koji na jedinstven
način definiše pravila za sve (kodne stranice, format, datum, kako se riješavaju referentne
lookup tabele).Sve se prije definiše, jer ako se to ne riješi u ovoj fazi, onda ćemo u fazi data
cleaning morati uraditi jako puno posla oko formatiranja i ostalog.
Važno je da se izvorna OLTP šema denormalizuje, i na osnovu toga se kreira data warehouse,
odnosno jedan poslovni proces koji smo razbili na nekoliko tabela, denormalizuje, i pravimo
data warehouse koji sada odgovara nečem drugom osim insert, update i delete.
Pitanje hardvera je jako važno.Potrebno je tačno izračunati specifikacije i ono šta nam treba
od hardvera.
HA-High availability
DR-Disaster recovery
Ako stane sa radom baza za DW onda staje i poslovna analiza, BI, moguće je da se pojave
anomalije u odlukama koje trebaju biti ključne u nekim poslovnim procesima.
Sigurnost je faktor koji nije zanemariv.Mi povlačimo historijske zapise sa mnogo lokacija.U
tim podacima su lični podaci i ostali osjetljivi podaci i potrebno je prvo provjeriti da li
smijemo povlačiti te podatke, šta smijemo sa podacima itd.
Columnstore Indeks
Row-based indeks
Column-based indeks
Ovi indeksi su uglavnom memory based u cilju rapidnog ubrzanja performansi, analize i
agregacija.
Poboljšava performanse na upitima koji rade scan tabele, agregacije i analitičke operacije
(row-based indeksi su ovdje jako neefikasni)
Izvori podataka
Ovdje se govori o tome koji su nam libraries ili provajderi potrebni da bi izvukli podatke iz
jednog starog formata.
-ODBC,ADO.NET,JDBC
Format podataka
ETL proces
Staging
Staging je međufaza.
Nekada nije moguće prebaciti podatke direktno sa jedne na drugu lokaciju pa se prave
međulokacije, podaci se po potrebi formatiraju, čiste i prebacuju u clean obliku u jedan
warehouse.
-Rad u fazama
-Odluka u formatu
Nekada su potrebni i staging serveri
Transformacije
Kad uzimamo podatke, recimo SELECT komandom, radimo funkciju CONVERT nad kolonom
DATE.Ta operacija će opteretiti server.Ako nećemo da opteretimo neki server, onda
uzimamo podatke, ne radimo transformaciju u ekstrakciji nego „u letu“ kada podaci putuju u
neki stage, u neku drugu lokaciju, a ne lokaciju servera.
Inkrementali ETL
Obično to se uradi efikasno, manje ili nikako.Iz tig razloga postoji data quality koji
omogućava da se podaci pročiste, validiraju, da se uradi de-duplikacija itd.
Kvalitet podatka
Čišćenje podataka
-Validacija vrijednosti
-Osiguranje konzistentnosti
De-dupliciranje podataka
-Npr. imamo jedan te isti zapis o jednoj te istoj poslovnoj stvari jer smo povukli
podatak iz više lokacija.Da ne bi punili DW stvarima koje su nepotrebne, prepoznajemo te
stvari i uklanjamo ih.
ETL faza nije jednostavna, jer se njom puni DW, i ako se ona ne riješi kako treba, kompletna
BI analiza je dovedena u pitanje.
Master Data Management je set pravila koji treba da osigura konzistentnost svih poslovnih
pravila, definicija, u kompletnom okruženju tako da je što lakše uraditi ETL fazu.
Razmatrana u vezi infrastrukture skladišta podataka
-Data Volume
Prije svega koliki je inicijalni dw i koliko se npr sedmično uvuče podataka.Ako se uvlači
mnogo podataka, logično je da nam treba mnogo prostora.Od količine uvlačenja podataka
zavisi i koliko ćemo uložiti u hardversku infrastrukturu.
-Analysis/Report Complexity
Koliko su nam kompleksi reporti i analiza.Ako je manje kompleksno možemo staviti neke
kompnente manje snage(npr CPU slabiji)
-Number of Users
-Availability Requirements
Scaling out-kada proširujemo u ovom slučaju BI rješenje izvan okvira(npr. Kupnja više servera
i povezivajne)-bolje rješenje
-Da li ćemo krenuti sa jednim velikim serverom na kojeg instaliramo i DB engine, analysis
services, integration services za ETL i reporting service.Za neke manje BI projekte ovo je
prihvatljivo do neke faze, ali recimo za enterprise business ovo nije prihvatljivo.U jednom
trenutku će doći do zasićenja (cpu zauzet, disk pun itd.), tada se ovo skalira i razbije na svaki
server posebno, server za warehouse, za olap kocke i modele, posebno za etl itd.Potrebno je
u startu procijeniti ono šta nam treba.
Scaling in-kada se u postojeći hardver doda više memorije, više cpu-ova ako je multisocket
ploča itd., što nam govori da smo prilično ograničeni.
Scaling out-slično kao scaling in ali recimo imamo novi server.Skaliramo warehouse na više
servera, analizu na više i ostale procese na više servera.
Osnovne reference
Odnosno:
Koliko naš query povuče megabajta kroz MCR a MCR je propusnost po core-u, koliko MB
može da propusti core-u u sekundi, ovo se pomnoži sa brojem istodobnih korisnika pa se sve
podijeli sa response time
-Cilj je postići 20% RAM-a od količine podataka(ako je DW 100GB, RAM bi trebao biti 20GB)
-Koristiti više manjih diskova umjesto manje većih(smanjuje se seek time, scan time itd)
-SSD je najbolja opcija je je dobar u slučajnom I/O operacijama jer nema pokretnih
dijelova, sve je na principu flash memorije.
Dimenzionalni model
Ono na šta je potrebno obratiti pažnju je da su klasične OLTP baze uglavnom relacione.Data
warehouse okruženja su dimenzionalna.To je model koji se razlikuje u odnosu na relacioni.
Uglavnom se radi o procesu denormalizacije, kada se npr. više tabela smanjeuje količinski na
manji broj tabela, a sve u cilju efikasnijeg izvještavanja i bržih query-a u DW-u.
U centru se nalaze činjenice i mjere, a okolo su dimenzije.U samom centru se nalazi poslovni
proces koji se sastoji od atributa nad kojim se mogu raditi određene agregacije.
Dimenzije su također tabele koje se sastoje od atributa koje se vežu preko spoljnih ključeva
sa fact tabelom ili činjenicama.Po dimenzijama se rade kalkulacije.Npr. imamo dimenziju
Customer, a unutar fact-a imamo prodaju za tog Customer-a, možemo vidjeti podatke o
prodaji, kakva je bila prodaja prije itd.
-Star model gdje imamo jednu činjenicu i jedan sloj dimenzija.Dimenzija nema svoje pod-
dimenzije.
-Drugi model je snowflake šema, to je nadogradnja na star šemu, gdje se može pojaviti
potreba da odrešena dimenzija iam svoje pod dimenzije.
Preporuka je da se držimo star modela, jer je jednostavniji, i samim tim se smanjuje broj join
operatora.
U konačnici ove dimenzije postaju tabele, sa ogromnom količinom zapisa što može dovesti
do usporenja.
Proces dizajna skladišta podataka
U principu kada se prave relacione baze i posmatramo poslovne procese i na osnovu njih
sklapamo entitete, atribute, pod atribute da bi to postalo šema baze podataka.
U DW-u se radi obrnuto, vidimo šta je izlaz, ljudi kojima se pravi BI rješenje kažu šta je izlaz
npr. primjeri report-a ili kalkulacija.
Sljedeći korak je da ispitamo same izvore podataka, ne u smislu masovnog importa, nego
quick ulaskom sa par selecta vidimo od čega se oni sastoje.
Generalno, činjenica je jedan poslovni proces koji se vrti u odnosu na neke aktore sistema
(customers, employees itd).U ovoj fazi možem oda detektujemo koje su to dimenzije u
postojećim okruženjima pomoću kojih ćemo da analiziramo poslovne procese odnosno da
kreiramo DW okruženje za te analize.
Ovo znači da prvo vidio šta je najbitnije, šta je srednje bitno, a šta najmanje bitno i da
poredamo prioritete na taj način.
Jako je važno da se sve dokumentuje, jer kad se sve dokumentuje, lahko će neko drugi
nastaviti posao, implementacija je vrlo jednostavna.Kada se sve analizira i dokumentuje,
tada se to samo proslijedi nekome ko zna da implementira i implementacija će se obaviti vrlo
jednostavno.
Nakon svih faza koristimo neko alat i pravio DW u nekom od postojećih rješenja
Modeliranje dimenzija
Najjednostavnije je ako se koristi ovaj pristup matrice gdje imamo poslovne procese.Ova
matrica je u principu AdventureWorks baza koja oslikava prodaju.Ovdje vidimo koje su to
stvari u bazi koje zahtijevaju veliku poslovnu analitiku.Ovdje vidimo dimenzije u odnosu na
koje se izvršavaju ovi poslovni proces.Npr. prodaja ima presjek u vremenskoj dimenziji i u
proizvodima kao i u factory line.
Ili npr. isporuka, order fufilment, time, customer i shipment, znamo ko isporučuje, kada, i
kome.
Dimenzije:studenti,predmeti,edukatori,administracija
Primjer
Npr. imamo fact Sales Order koja se sastoji od različitih atributa (item quantity, total cost,
unit cost itd.),a okolo su dimenzije, jer Sales Order zavisi od salesperson, customer, i
vremena kada je to urađeno.Svaka dimenzija ima atribute od kojih se ona sastoji, te se tu
pojavljuju nazivi i podnazivi.
Ovdje je potrebno prepoznati hijerarhiju.U dimenziji Sales Person imamo atribut „Region“ pa
atribut „Country“ i „Territory“.U bazi Adventure Works ovo bi bile 3 tabele, a sada sve
salijevamo , pretvaramo u jednu dimenziju(tabelu) gdje je omogućeno i dozvoljava se
ponavljanje samih atributa i podataka.Bitno je znati koji atributi omogućavaju drill down
hijerarhiju.
Drill down znači da možemo , na report koji je interaktivan, kliknuti na region pa dobiti sve
države, klikom na državu dobijemo teritorije itd.
Npr. imamo informacije o customeru u tri različite baze, gdje ne mora značiti da isti
customer u sve tri baze ima isti primarni ključ, i samim tim u nekom ETL procesu, povlačimo
tri ista customera, ali sa tri različita ID-a i samim tim to postaju 3 različite osobe u sistemu.
Potrebno je imati business ključeve, surogat ključeve koje sami definišemo koji je manje-više
neki generator brojeva.Poželjno je da ostavimo i primarni ključ iz izvorne tabele (source) a to
je obično „alt“ prefiks.To je ključ koji je povučen iz source-a.
Ako smo ispravno prepoznali atribut i njihove hijerarhije to je onda lahko implementirati u
konkretnoj tabeli.Npr. imamo country ima svoje states, states imaju svoje gradove, unutar
tih gradova imamo customer-e sa svojim atributima.
Npr. gender(spol) nije hijerarhija niti detalj hijerarhije, ali je dobar kao filter, kao granični
filter, i to nazivamo slicer.Dakle ako je nešto dobro za filtriranje a nije hijerarhija ili detalj to
stavim okao slicer.
Nepoznato ili ništa(unknown or none)
Nekada se u sistem unesu vrijednosti od strane korisnika, a opet se neke vrijednosti unesu
ako nismo unijeli u neko polje nikakvu vrijednost te ako nije riješena validacija.Neko u tom
slučaju unese „N/A“, neko unese space neko unese „null“ itd.Razne su opcije šta klijenti
mogu unijeti u njihovoj percepciji nepoznatog.To se desi kada nismo osigurali constrainte da
defaultno ako nema ništa bude NULL.Problem je kada se povlače takvi recordi u ETL fazi.Da li
je to zaista nepoznato ili je to ništa.Tu je korisna funkcija ISNULL().Trebalo bi prvo da
sempliramo te tabele i vidmo koje su sve opcije bile za prazno , da ih izvučemo te da
vrijednosti zamijenimo sa nečim što ima smisla, npr. „unknown“, tako da u DW-u znamo da
je to vrijednost koja je bila nepoznata u nekoj bazi.
Npr. Amy u nekom trenutku promijeni broj telefona.Mi smo importovali originalni zapis prije
7 dana,a Amy promijeni taj broj u OLTP sistemu.Na narednom importu kada se puni DW Amy
ima novi broj telefona.Ako je to ovaj oblik ovdje, onda se ti zapisi prepisuju.Prepišemo Amy i
dobijemo novi broj telefona.Ono šta se gubi ovdje je historija, gubi se stari broj telefona u
ovom slučaju.
Potrebno je :
-Surogat ključ
-Granularnost
-Opseg
-Višestruki kalendari
-Nepoznate vrijednosti
Smoreferencirajuće dimenzije
Ovdje imamo PK koji ide na drugi atribut u tabeli koji se posmatra kao spoljni ključ.
U ovom primjeru imamo EmployeeKey koji je primarni ključ, imamo business ključ iz OLTP
baze, imamo EmployeeName, imamo oznaku ko je toj osobi menadžer, a u principu
ManagerKey je primarni ključ odavde.ID osobe iz ove tabele se u istoj tabeli remapira da bi
znali ko je navedenim osobama menadžer.
Junk dimenzije
Kombinacija atributa koji nisu unutar postojećih dimenzija, a može se pojaviti potreba za
istim u analitici.
To su atributi koji nemaju mjesta u dimenzijama koje smo već napravili.Ako nam trebaju
takvi atributi smjestit ćemo ih u junk tabelu.
Fact tabela se također sastoji od atributa, prije svega to su ključevi prema dimenzijama.
Prvo su tu veze prema dimenzijama, kako da vežemo fact tabelu sa dimenzijama, zatim
dolaze mjere odnosno šta se mjeri, koji su to atributi koj zahtijevaju neke agregacije,
sumiranja itd.
Degenerativna dimenzija:
-Imamo atribut koji nije ni ključ ni mjera(OrderNumber), ali je koristan iz ugla filtriranja i
reportinga
Tipovi mjera
-Transakciono činjenična tabela-kako transakcija dolazi tako se bilježi putem ETL-a u data
warehouse
-Akumulirano snimana tabela-je manje više agregacija.Npr. za neki broj narudžbe uzmemo
date key, ship date key itd., bez detalja, akumuliramo maksimalno jedan poslovni proces.
Ovdje posebnu važnost ima administrator baza.Administartor treba znati kako funkcioniše
engine, na šta treba obratiti pažnju, razumije se u raid polja itd.
U nekoj ETL fazi, prepoznamo da su to maksimalno neki bulk inserti, lookup-i i updatei-i, na
osnovu ovih stavki znamo kada je potrebno raditi ETL i kako ga raditi.Neke od ovih stavki
uzrokuju lockove što znači da sistem stoji i niko ne može pristupiti zapisima.
U nekom warehouse-u jako je puno tabela, milioni zapisa, pa ako su to velike fact tabele,
znamo da će upit trajati dugo pa takvi upiti trebaju biti optimizovani.
Kod reportinga su stvari manje-više statične, pa je report vrlo stabilan i teško je da se report
može oteti kontroli.
Kod I/O aktivnosti jedna od najvažnijih stvari je optimizacija, npr klijenti se mogu svojim
alatima „kačiti“ na DW pa to može dovesti do usporenja.
-Staging tabele (podaci ne idu odmah u destinaciju, nego se zadrže, uradi se reformatiranje
pa se onda preusmjere dalje)
Particioniranje tabela
Ovdje se radi o razbijanju fact tabela na više particija.Prepoznajemo koji su to podaci u našim
fact tabelama koji su stari i nepotrebni, dok nam trenutni trebaju.Podaci koji nam ne trebaju
ćemo odvojiti u zasebne particije.Na najbrže diskove stavimo particije koje nam trenutno
trebaju.Koristi se da se smanji overload cpu-a i memorije itd.
Opcije za indeksiranje
Ili
Kompresija podataka
•Uvod u ETL
•Šta je SSIS?
ETL:
Važni temelji:
Single-Stage
Two-Stage
Three-Stage
Koristi se kada imamo mnogo source-ova, koji se ekstraktuju brzo u landing zonu, a nakon
toga zadržavaju u staging-u prije punjenja. Transformacija i validacija se dešava u kretanju.
U jednome dokumentu imamo šta je source, koje su tabele u source-u, te vidimo po fazama
šta iz koje iz tabele uzimamo, odakle se radi lookup, povlačimo kategorije i podkategorije, te
u fazi flow-a uradimo generisanje ključeva i ostalo, pa se sve to povlači u dimenziju
warehouse-a.
Prije same ekstrakcije profilira se izvor podataka, tj. koji izvori podataka su u pitanju i kako će
se ETL komponente konektovati, koji tipovi podataka i formati se nalaze u svakom od izvora,
koja pravila integriteta su implementirana i da li postoje problemi sa validacijom podataka.
-period latencije između promjena u sistemu i reporting komponente BI-a (koliko dugo se
podaci o nekom poslovnom procesu smiju čuvati u sistemu, npr. podaci o nekoj narudžbi)
Uzimamo u obzir
- vrste transformacija
- optimizacija
- upravljanje sa zapisima koji uzrokuju greške
- Prilikom ekstrakcije
-Sa izvora
- Iz „landing“ zone
- Iz „stage“ baze
- U protoku između:
Vrste transformacija:
Character Map, Copy Column, data Conversion, Derived Column, Export Column, Import
Column, OLE DB Command
Conditional Split, Multicast, Union All, Merge, Merge Join, Lookup, Cache, CDC Splitter
• Auditing transformacije:
Audit, Rowcount
• BI tranformacije:
Slowly Changing Dimension, Fuzzy Grouping, Fuzzy Lookup, Term Extraction, Term Lookup,
Data Mining Query, Data Cleansing
• Custom transformacije:
Optimizacija
- Optimizacija upita - odabrati samo one kolone i zapise koji su nam potrebni - Izbjegavati
nepotrebna sortiranja
- Kolone
- Tip podatka
- Podatak
- Audit korisnika
- Razmisliti o aktiviranje opcije „trace flag 610“ nad SQL Server (destinacijom)
- Koristiti bulk load opracije za brži rad (Bcp, BULK INSERT, INSERT..SELECT, SELECT INTO,
MERGE)
Punjenje indeksiranih tabela:
- Razmisliti o brisanju indeksa prije punjenja tabela i ponovnim rekreiranjem nakon operacije
- Nakon punjenja činjeničnih tabela iste prebaciti u particije (odnosno ako se radi o
dopunjavanju uraditi dodavanje novih particija prema kriterijima koji su definisani)
SSIS
SSIS (SQL Server Integration Services) je set klijentske i serverske strane. Omogućava ETL
fazu i maksimalnu kontrolu nad njom.
Control Flow Engine se brine kako povući podatke i kako ih proslijedi dalje.