Sunteți pe pagina 1din 57

Realizarea unui depozit de date folosind

Oracle Warehouse Builder 11g

Introducere
In următorul studiu de caz ne propunem să construim un depozit de date pentru activităţile
comerciale ale unei societăţi, activităţi legate de aprovizionarea cu produse de la furnizori şi
desfacerea acestora către clienţi. Datele rezultate din tranzacţii sunt stocate în tabele relaţionale.
Pentru construirea depozitului se creează tabele sau tabele virtuale noi care vor reprezenta sursele
de date pentru obiectele depozitului. În urma unor prelucrări şi transformări preliminare se obţin
tabelele sursă prezentate în schema următoare:

1
Vom folosi maşina virtulă (VMWare Player->Windows XP…->Play->I copied it).

Seminarul 1. Profiling

In seminarul anterior am preluat şi am curăţat tabela t_clienti din PROFILING în


SURSA_OWB. Pentru a nu repeta procesul, rulaţi scriptul din Anexa 1 conectaţi fiind în PL/SQL
Developer cu userul sursa_owb, parola, rol normal;
Acordaţi drepturi de select pe toate tabelele construite, utilizatorului master, după modelul:
grant select on t_clienti to master;
[…]

Seminarul 2. Realizarea depozitului de date


Pentru construirea depozitului de date vom utiliza instrumentul de dezvoltare Oracle
Warehouse Builder 11g release 1
(http://download.oracle.com/otn/nt/warehouse/OWB_11.1.0.6_Windows.zip).
Pentru conectare se va folosi userul MASTER (nu SURSA_OWB).

Apoi se trece la construirea efectivă a depozitului. In continuare redăm aceşti paşi.


Pas 1: Realizăm un nou proiect: din meniul Design->New.

2
Pas 2: Stabilim numele proiectului: MASTER_DATA_WAREHOUSE
(denumiţi-vă proiectul folosind numele Dumneavoastră!!!)

Stabilirea modulelor sursă şi destinaţie.


În această aplicaţie vom folosi un modul sursă (OWB_SURSA) şi un modul destinaţie
(OWB_DESTINATIE).

A) Pentru a crea modulul sursă procedăm astfel:


În arborele proiectului click dreapta pe nodul Oracle->New:

3
Asistentul de tip wizard Create Module ne ghidează în parcurgerea următorilor paşi:
Pas1: stabilim numele modulului: OWB_SURSA_NUME_STUDENT şi tipul acestuia -
modul sursă (Data Source)

4
Pas2: dacă nu există o legătură predefinită se va crea una nouă pentru a încărca metadatele
în modul. Astfel, apăsăm pe butonul Edit din dreptul câmpului Location pentru a stabili legătura cu
baza de date sursă, tipul şi versiunea bazei de date.
Se creează o legătură către baza de date, având denumirea NUME_STUDENT_SURSA.
Datele vor fi preluate din schema utilizatorului: sursa_owb / stud. Versiunea aleasă pentru
baza de date este 10.2. Testaţi conexiunea înainte de a salva!

La final va apărea următorul ecran:

5
Următoarea etapă este să importăm tabelele şi viziunile corespunzătoare schemei
sursa_owb. Asistentul de tip wizard Import Metadata porneşte automat, iar paşii parcurşi sunt
prezentaţi mai jos:
Pas 1: Stabilim tipurile de obiecte pe care vrem să le importăm:tabele, viziuni, secvenţe etc.

Pas 2: Alegem următoarele obiecte din nodul TABLE: T_CLIENTI,


T_COMENZI_APROVIZIONARE, T_COMENZI_DESFACERE, T_FURNIZORI, T_PRODUSE,
T_UNITATI.

6
Pas 3: După acest pas în modulul sursă avem următoarele obiecte:

Se apasă Terminare.
La final se vor importa tabelele:

7
B) Crearea modulului destinaţie în care se va dezvolta cubul de date
Click dreapta pe nodul Oracle -> New. Asemănător cu activităţile descrise la punctul A se
creează modulul destinaţie astfel:
Pas 1: alegerea denumirii pentru noul modul: OWB_DESTINATIE şi tipul modulului
Warehouse Target.

8
Pas 2: se creează o legătură către baza de date, având denumirea
NUME_STUDENT_DESTINATIE.
Se configurează conexiunea:

Testaţi conexiunea înainte de a salva!


La final va apărea ecranul următor:

9
10
Modulul destinaţie (target) conţine:
 Mapările (Mappings) = reprezintă fluxuri de date necesare modelării procesului
ETL(Extract, Transform and Load). Warehouse Builder generează cod pentru
implementarea mapărilor în mediul de rulare (runtime). Se poate genera cod în 3 tipuri
de limbaje în funcţie de natura sursei: PL-SQL, SQL Loader (în cazul în care fişierele
text reprezintă sursa) şi ABAP(în cazul în care sursa e reprezentată de tabelele din cadrul
pachetelor de aplicaţii SAP).
 Transformările (Transformation) = cod PL/SQL implementat ca şi funcţie, procedură sau
pachet. Warehouse Builder asigură utilizatorului posibilitatea de a defini cod PL/SQL şi
de a-l include într-o mapare pentru a implementa orice tip de transformare.

11
 Dimensiunile (Dimensions) = Warehouse Builder permite proiectarea dimensională
(acesta reprezintă un avantaj faţă de cei mai importanţi concurenţi). Dimensiunile
constau în unul sau mai multe niveluri şi ierarhii şi conţin atribute.
 Cuburile (Cubes) = sunt descrise de dimensiuni. Cuburile fac parte din modelarea
dimensională. În mod obişnuit un cub are legături cu una sau mai multe dimensiuni şi
conţine măsuri ale datelor care ne interesează. Într-o implementare relaţională cubul este
realizat ca o tabelă relaţională, în timp ce în mediul OLAP cubul este creat ca o structură
separată.
 Tabelele (Tables) = deseori se folosesc definiţii de tabele în proiectarea unui sistem de
inteligenţă a afacerilor. în proiectarea unui sistem de inteligenţă a afacerilor.
 Viziunile (Views) = putem folosi viziuni pentru a simplifica eventualele interogări de
regăsire.
 Viziuni materializate (Materialized views) = pot fi foarte importante pentru a uşura
cererile de regăsire. Warehouse Builder permite definirea de viziuni materializate.
 Tabele externe (External tables) = Warehouse Builder permite proiectarea tabelelor
externe în cadrul sistemului destinaţie (target). Pentru a nu folosi un fişier text direct ca
şi sursă într-o mapare şi de a rula programul de încărcare SQL, se poate defini o tabelă
externă. Avantajele folosirii definiţiei unei tabele externe comparativ cu folosirea
definiţiei unui fişier text sunt: rularea select-urilor în paralel şi flexibilitate în cadrul
transformărilor PL/SQL, datorată posibilităţii realizării unei joncţiuni eterogen între
tabelele externe şi tabelele relaţionale
 Liste avansate (Advanced Queues)=pot fi folosite atât ca sursă cât şi ca destinaţie într-o
mapare.
 Secvenţe (Sequences) = definiţiile de secvenţe pot fi folosite ca definiţie a unui obiect
sursă într-o mapare pentru a genera o valoare numerică în secvenţă.

12
Proiectarea dimensională folosind Oracle Warehouse Builder 11g R1
Oracle Warehouse Builder 11g release 1 conţine un instrument ETL, care suportă proiectare
dimensională. Proiectarea dimensională în Warehouse Builder are loc în contextul unui modul
destinaţie (Target Module) de tipul bază de date Oracle.
Dimensiunile din cadrul aplicaţiei noastre sunt:
 UNITATI
 PRODUSE
 FURNIZORI
 CLIENTI
Paşii pentru a crea dimensiunile sunt detaliaţi mai jos.
Pentru dimensiunea UNITATI:
Selectăm nodul Oracle->OWB_DESTINATIE-> Dimensions, click dreapta, New -> Using
wizard

Se urmează paşii asistentului wizard Create dimension:


Pas1: stabilim numele dimensiunii: UNITATI.
Pas 2: stabilim modalitatea multidimensională (MOLAP) de stocare a datelor.

13
Pas 3: se stabilesc atributele dimensiunii Unităţi. Implicit Warehouse Builder defineşte trei
atribute (ID, Name, Description), însă acestea pot fi actualizate în funcţie de cerinţe. Pentru a
adăuga un atribut se editează denumirea şi definiţiile de tip ale acestuia:
ID_ORGANIZATIE NUMBER(15)
DENUMIRE VARCHAR2(240)
DESCRIERE VARCHAR2(240)
TIP_ORGANIZATIE VARCHAR2(150)
ORAS VARCHAR2(30)
REGIUNE VARCHAR2(241)
TARA VARCHAR2(60)
Pentru atributele care pot constitui o ierarhie se setează identificatorul de tip Business,
precum în figura de mai jos:

14
Pas 4: se definesc nivelurile ierarhiei din cadrul dimensiunii Unităţi:
L_TARA, L_REGIUNE, L_ORAS, L_ORGANIZATIE.

Pas 5: se includ în cadrul fiecărui nivel atributele specifice:


Astfel, se selectează primul nivel, L_TARA, şi se include în acesta atributul Tara:

15
Apoi se selectează nivelul L_REGIUNE, în care se include atributul Regiune:

Apoi se selectează nivelul L_ORAŞ, în care se include atributul Oraş:

16
La final se selectează nivelul L_ORGANIZATIE, în care se includ atributele specifice
nivelului cel mai detaliat:

Se continuă şi se ajunge la fereastra centralizatoare a tuturor proprietăţilor stabilite:

17
Warehouse Builder generează cod pentru a implementa obiectele. Pentru o dimensiune într-
o implementare multidimensională, Warehouse Builder va genera definiţii ale obiectelor în cod
PL/SQL pentru baza de date Oracle.
Pentru a obţine codul generat, se selectează dimensiunea UNITATI, click dreapta şi
selectăm Generate.

În fereastra Generation Results se observă rezultatul generării obiectului multidimensional:

18
Pentru a vizualiza scriptul de creare a obiectelor se selectează dimensiunea UNITATI, se
apasă tabul Script şi se selectează scriptul UNITATI_AW.ddl. Apăsăm apoi pe butonul View
Code.

La fel procedăm pentru celelalte dimensiuni definite după cum urmează:


Pentru dimensiunea PRODUSE avem următoarele atribute:

19
ID_PRODUS NUMBER
DESCRIERE VARCHAR2(240)
CATEGORIE VARCHAR2(333)
GRUPA VARCHAR2(47)

Nivelurile stabilite în cadrul dimensiunii PRODUSE sunt:


L_GRUPA, L_CATEGORIE, L_PRODUS

Atributele nivelului L_GRUPA:


GRUPA VARCHAR2(47)

20
Atributele nivelului L_CATEGORIE:
CATEGORIE VARCHAR2(333)

Atributele nivelului L_PRODUS:


ID_PRODUS NUMBER
DESCRIERE VARCHAR2(240)

21
Pentru a obţine codul generat, se selectează dimensiunea PRODUSE, click dreapta si
selectăm Generate.

Pentru dimensiunea FURNIZORI avem definite următoarele niveluri caracterizate de


atributele:
ID_FURNIZOR NUMBER

22
NUME_FURNIZOR VARCHAR2(240)
TIP_FURNIZOR VARCHAR2(15)
ORAS_FURNIZOR VARCHAR2(25)
TARA_FURNIZOR VARCHAR2(25)

Se defineşte ierarhia în cadrul dimensiunii FURNIZORI cu 3 niveluri:


L_TARA_FURNIZOR, L_ORAS_FURNIZOR, L_FURNIZOR

Nivelul L_FURNIZOR cu atributele:


ID_FURNIZOR NUMBER
NUME_FURNIZOR VARCHAR2(240)
TIP_FURNIZOR VARCHAR2(15)

23
Nivelul L_ORAS_FURNIZOR cu atributele:
ORAS_FURNIZOR VARCHAR2(25)

Nivelul L_TARA_FURNIZOR cu atributele:


TARA_FURNIZOR VARCHAR2(25)

24
La final pentru a obţine codul generat, se selectează dimensiunea FURNIZORI, click
dreapta pe numele dimensiunii şi selectăm Generate.

Pentru dimensiunea CLIENTI avem definite următoarele niveluri caracterizate de


atributele:
ID_CLIENT NUMBER
NUME_CLIENT VARCHAR2(240)
CLASA_CLIENT VARCHAR2(30)
TIP_CLIENT VARCHAR2(15)
ORAS_CLIENT VARCHAR2(25)
TARA_CLIENT VARCHAR2(25)

25
Se defineşte ierarhia dimensiunii CLIENŢI cu trei niveluri ierarhice:
L_TARA_CLIENT, L_ORAS_CLIENT, L_CLIENT

Nivelul L_CLIENT cu atributele:


ID_CLIENT NUMBER
NUME_CLIENT VARCHAR2(240)
CLASA_CLIENT VARCHAR2(30)
TIP_CLIENT VARCHAR2(15)

Nivelul L_ORAS_CLIENT cu atributele:

26
ORAS_CLIENT VARCHAR2(25)

Nivelul L_TARA_CLIENT cu atributele:


TARA_CLIENT VARCHAR2(25)

La final pentru a obţine codul generat, se selectează dimensiunea CLIENTI, click dreapta pe
numele dimensiunii şi selectăm Generate.

În continuare vom construi cuburile COMENZI_APROVIZIONARE şi


COMENZI_DESFACERE.
Cubul COMENZI_APROVIZIONARE
Va cuprinde informaţii despre activitatea de aprovizionare şi este caracterizat de următoarele

27
dimensiuni.
 Produse
 Unitati
 Furnizori
Pentru a crea cubul COMENZI_APROVIZIONARE, click dreapta pe nodul Cubes -> New
-> Using wizard.

Pas1: definim numele cubului COMENZI_APROVIZIONARE.

28
Pas 2: se stabileşte modalitatea multidimensională (MOLAP) de stocare a datelor:

Pas 3: se aleg dimensiunile care vor avea legături cu tabela de fapte, în cadrul cubului
Comenzi_aprovizionare: FURNIZORI, PRODUSE, UNITĂŢI

29
Pas 4: se definesc măsurile care caracterizează cubul:
CANTITATE_COMANDATA NUMBER
CANTITATE_PRIMITA NUMBER
PRET_UNITAR NUMBER
DATA DATE

Se apasă Continuare. Pagina rezumat afişează detaliile definirii cubului


COMENZI_APROVIZIONARE:

30
Schema stea pentru cubul COMENZI_APROVIZIONARE va fi (click dreapta pe cub şi se
alege opţiunea Open Editor):

Se va verifica pentru cubul creat dacă legăturile pornesc de la tabela de fapte spre nivelurile
inferioare din ierarhiile dimensiunilor.

31
Cubul COMENZI_DESFACERE
Acesta va reţine informaţii referitoare la produsele comandate de către clienţi şi distribuite
către aceştia din cadrul depozitului nostru de date. Click dreapta pe nodul Cubes -> New -> Using
wizard.
Pas1: se stabileşte numele cubului de date: COMENZI_DESFACERE.

32
Pas 2: se stabileşte modalitatea multidimensională (MOLAP) de stocare a datelor:
Pas 3: se aleg dimensiunile care vor avea legături cu tabela de fapte, în cadrul cubului
Comenzi_desfacere: CLIENŢI, PRODUSE, UNITĂŢI

33
Pas 4: se definesc măsurile care caracterizează cubul:
CANTITATE_COMANDATA NUMBER
CANTITATE_LIVRATA NUMBER
PRET NUMBER
DATA DATE
ID_RAND_COMANDA NUMBER
ID_COMANDA NUMBER
TIP VARCHAR2(25)
VERIFICAT VARCHAR2(25)
STATUS VARCHAR2(25)

Se apasă Continuare. Pagina rezumat afişează detaliile definirii cubului


COMENZI_DESFACERE. Se apasă Terminare.
Schema stea pentru cubul COMENZI_DESFACERE va arăta astfel (click dreapta pe cub->
Open Editor):

34
Se va verifica pentru cubul creat dacă legăturile pornesc de la tabela de fapte spre nivelurile
inferioare din ierarhiile dimensiunilor.

35
Modelul ETL (Extract, Transform, Load) folosind Warehouse Builder 11g
Release 1
ETL înseamnă Extragere, Transformare, Încărcare. Folosind terminologia Warehouse
Builder, un proces ETL sau de fapt un flux de date este numit mapare. Definiţiile mapărilor se
stabilesc în contextul unui modul destinaţie. Mapările sunt dezvoltate (deploy) într-o bază de date
Oracle. Warehouse Builder generează cod care foloseşte:
 un set de comenzi bazate pe INSERT/UPDATE: MERGE (cunoscut sub numele de
UPSERT);
 adăugarea în mai multe tabele: adăugarea în tabele multiple se face folosind o singură
comandă şi nu mai multe comenzi separate;
 cel mai rapid mod de a încărca date într-o tabelă destinaţie (ţintă);
 funcţiile tabelelor pentru a manevra execuţia paralelă a codului PL/SQL.
Majoritatea codului generat pentru mapările din Warehouse Builder va fi cod PL/SQL. Dacă
definim fluxuri de date care mută datele din definiţiile obiectelor relaţionale în definiţii ale
obiectelor relaţionale, atunci codul va fi întotdeauna cod PL/SQL. Dacă mapăm direct dintr-un
fişier text (flat file) atunci Warehouse Builder va genera un fişier SQL de control al încărcării. În
cazul în care importăm date din cadrul pachetelor SAP ce conţin definiţii de tabele, în special tabele
cluster sau pool, atunci Warehouse Builder va genera cod ABAP, care e necesar pentru a regăsi
datele.

Realizăm maparea pentru încărcarea dimensiunii UNITATI


Această dimensiune este caracterizată de 4 niveluri: organizatie, oras, regiune, tara.
Informaţiile referitoare la acestea se obţin din tabela T_UNITATI din schema OWB_SURSA.
Click dreapta pe nodul Mappings -> New.

36
Specificăm numele MAP_UNITATI şi apoi se apasă OK.

În acest moment se deschide editorul de mapare (Mapping Editor). Selectăm iconiţa

dimensiune şi prin tehnica Drag and Drop o mutăm pe canvas. Se selectează dimensiunea
UNITATI şi se apasă OK.

37
În continuare selectăm iconiţa pentru tabele prin aceeaşi tehnică Drag and Drop o
aducem pe canvas. Selectăm tabela T_UNITATI din modulul sursă OWB_SURSA şi apoi se apasă
OK.

Pentru această mapare se realizează o legătură între atributele din tabela T_UNITATI şi
dimensiunea UNITATI, utilizându-se tehnica Drag and Drop (tragem atributul din tabelă peste cel

38
din dimensiune). La final fereastra va arăta astfel:

Realizăm maparea pentru încărcarea dimensiunii PRODUSE.


Paşii sunt asemănători cu cei descrişi mai sus.
Click dreapta pe nodul Mappings -> New. Specificăm numele MAP_PRODUSE şi apoi se
apasă OK.
În acest moment se deschide editorul de mapare (Mapping Editor). Selectăm iconiţa

dimensiune, pentru a face Drag and Drop pe canvas, alegem dimensiunea PRODUSE.
Adăugăm şi tabela T_PRODUSE din modulul sursă OWB_SURSA (Drag and Drop pe iconiţa
pentru tabele) şi apoi se apasă OK.
Apoi mapăm atribut cu atribut din tabela T_PRODUSE şi dimensiunea PRODUSE,
utilizându-se tehnica Drag and Drop (tragem atributul din tabelă peste cel din dimensiune). La final
fereastra va arăta astfel:

Realizăm maparea pentru dimensiunea FURNIZORI


Click dreapta pe nodul Mappings -> New. Specificăm numele MAP_FURNIZORI şi apoi

39
se apasă OK.
În acest moment se deschide editorul de mapare (Mapping Editor). Selectăm iconiţa

dimensiune, pentru a face Drag and Drop pe canvas, alegem dimensiunea FURNIZORI.
Adăugăm şi tabela T_FURNIZORI din modulul sursă OWB_SURSA (Drag and Drop pe iconiţa
pentru tabele) şi apoi se apasă OK.
Apoi mapăm atribut cu atribut din tabela T_FURNIZORI si dimensiunea FURNIZORI,
utilizându-se tehnica Drag and Drop (tragem atributul din tabelă peste cel din dimensiune). La final
fereastra va arăta astfel:

Realizăm maparea pentru dimensiunea CLIENTI


Click dreapta pe nodul Mappings -> New. Specificăm numele MAP_CLIENTI şi apoi se
apasă OK.
În acest moment se deschide editorul de mapare (Mapping Editor). Selectăm iconiţa

dimensiune, pentru a face Drag and Drop pe canvas, alegem dimensiunea CLIENTI. Adăugăm
şi tabela T_CLIENTI din modulul sursă OWB_SURSA (Drag and Drop pe iconiţa pentru
tabele) şi apoi se apasă OK.
Apoi mapăm atribut cu atribut din tabela T_CLIENTI si dimensiunea CLIENTI, utilizându-
se tehnica Drag and Drop (tragem atributul din tabelă peste cel din dimensiune). La final fereastra
va arăta astfel:

40
Generăm codul pentru mapările realizate pe dimensiuni (selectare mapări -> Generate):

Realizăm maparea pentru încărcarea cubului COMENZI_APROVIZIONARE.


Click dreapta pe nodul Mappings -> New. Specificăm numele
MAP_COMENZI_APROVIZIONARE şi apoi se apasă OK.

În acest moment se deschide editorul de mapare (Mapping Editor). Selectăm iconiţa şi


cubul COMENZI_APROVIZIONARE.
În continuare facem drag and drop pe canvas la iconiţa pentru tabela şi selectăm tabela
COMENZI_APROVIZIONARE din cadrul modulului OWB_SURSA. Mapăm atributele din cadrul

41
tabelei pe cele din cub. La final vom obţine:

Realizăm maparea pentru încărcarea cubului COMENZI_DESFACERE.


Click dreapta pe nodul Mappings -> New. Specificăm numele
MAP_COMENZI_DESFACERE şi apoi se apasă OK.

În acest moment se deschide editorul de mapare (Mapping Editor). Selectăm iconiţa şi


cubul COMENZI_DESFACERE.
În continuare facem drag and drop pe canvas la iconiţa pentru tabela şi selectăm tabela
COMENZI_DESFACERE din cadrul modulului OWB_SURSA. Mapăm atributele din cadrul
tabelei pe cele din cub. La final vom obţine:

Generăm codul pentru mapările realizate pe cuburi (selectare mapări -> Generate):

42
43
Generarea obiectelor în Oracle Warehouse Builder 11g
Având stabilite toate aceste definiţii ale obiectelor putem folosi instrumentul de dezvoltare
Control Center Manager din meniul Tools pentru a implementa sistemul inteligent de afacere.
Instrumentul de dezvoltare reprezintă interfaţa de acces la mediu de rulare.
Maximizăm fereastra deschisă, pentru Instrumentul de dezvoltare şi expandăm proiectul din
partea stângă. Atunci când se foloseşte Instrumentul de dezvoltare pentru prima dată, nu există
obiecte care să fie deja generate (deployed objects).
Acest instrument grupează obiectele ţinând cont de locaţia lor fizică. Locaţiile din partea
stângă din cadrul managerului de dezvoltare sunt de fapt locaţiile pe care noi le-am definit în cadrul
proiectului nostru, în arborele proiectului (la nivelul modulelor sursă, respectiv destinaţie).

Instrumentul de dezvoltare asigură atât generarea, crearea obiectelor cât şi execuţia


obiectelor pentru obiectele executabile, ca de exemplu mapările sau fluxurile de date. Înainte de a
genera obiectele, folosim opţiunea Deploy din meniul contextual şi obiectele noi (negenerate) obţin
un tip de acţiune de generare, care poate fi: Create, Upgrade, Drop sau Replace. În cazul nostru,
selectăm locaţia destinaţie (XXX_DESTINATIE) şi pentru că obiectele nu au mai fost generate,
acţiunea va fi Create. Putem selecta pentru obiectele selectate această opţiune prin apăsarea
butonului Default Action (secţiunea 1 din figura de mai jos).

44
Folosim butonul de generare , pentru a genera cod pentru obiectele din cadrul modulului
OWB_DESTINATIE pentru o acţiune (Create) anterior stabilită. Înainte de generarea de cod se vor
valida automat din nou definiţiile pentru a se asigura că se poate genera codul. Pentru a crea
obiectele apăsăm butonul Deploy (secţiunea 2 din figura de mai sus). După generare Warehouse
Builder afişează erorile sau avertizările pentru fiecare obiect (secţiunea 3 din figura de mai sus).
În principiu, se face deploy în ordinea: Dimensiuni, Cuburi, mapări la dimensiuni, mapări la
cub.
In acest moment sunt create în schema destinaţie, tabelele de metadate aferente obiectelor
multidimensionale realizate.
Prin OWB vom popula cuburile de date apăsând butonul din bara de instrumente.
Managerul pentru generare permite setarea parametrilor pentru execuţie. Pentru a executa pachetul
se apasă Execute. În final se afişează rezultatele execuţiei:

45
La fel procedăm pentru toate mapările.
Apoi se execută, unde este cazul (butonul e activ), în aceeași ordine În utilizatorul
master/oracle se poate verifica daca s-au încărcat date în cuburi.

46
La final, în urma generării obiectelor putem vizualiza datele din cuburi.
Astfel, pentru dimensiunea Comenzi_desfacere se alege din meniul de context opţiunea
Open Editor. Se va deschide fereastra Data Object Editor, care prezintă în partea de jos detalii
despre cubul de date (Cube Detail). În tabul Data Viewer se va apăsa butonul Execute pentru a
vizualiza datele în diverse perspective.

47
Pe baza datelor din cub putem vizualiza diferite perspective de afişare. Selectând opţiunea
Query Builder se oferă posibilitatea realizării de raportări specifice OLAP, care să conţină analize
ale măsurilor în funcţie de anumite dimensiuni. Se permite efectuarea de operaţii specifice OLAP:
navigări în ierarhii, secţionări, rotiri.

Asistentul de tip wizard deschis în urma alegerii opţiunii Query Builder îndrumă pas cu pas
în vederea realizării raportului final.
Astfel, se vor adăuga în raport informaţiile care se doresc a fi analizate, precum şi criteriile
(dimensiunile) de analiză:

48
Va fi stabilit un format pentru raport, în funcţie de cerinţe şi de perspectivele de analiză a
măsurilor (de exemplu: se analizează volumul vânzărilor pe produse, pentru anumiţi clienţi şi pentru
unităţi specificate).

49
Anexa 1

Scriptul de completare a utilizatorului SURSA_OWB:


CREATE TABLE "T_CLIENTI"
( "NUME_CLIENT" VARCHAR2(240),
"ID_CLIENT" NUMBER,
"TIP_CLIENT" VARCHAR2(15),
"TARA_CLIENT" VARCHAR2(25),
"ORAS_CLIENT" VARCHAR2(25),
"CLASA_CLIENT" VARCHAR2(30)
) PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING
STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT)
TABLESPACE "USERS" ;

Insert into T_CLIENTI


(NUME_CLIENT,ID_CLIENT,TIP_CLIENT,TARA_CLIENT,ORAS_CLIENT,CLASA_CLIENT
) values ('LA FANTANA',5,'MATERIALE','RO','BUCURESTI','VENDOR');
Insert into T_CLIENTI
(NUME_CLIENT,ID_CLIENT,TIP_CLIENT,TARA_CLIENT,ORAS_CLIENT,CLASA_CLIENT
) values ('SHR DISTRIBUTIONS',46,'MATERIALE','RO','BUCURESTI','VENDOR');
Insert into T_CLIENTI
(NUME_CLIENT,ID_CLIENT,TIP_CLIENT,TARA_CLIENT,ORAS_CLIENT,CLASA_CLIENT
) values ('VODAFONE ROMANIA',47,'MATERIALE','RO','BUCURESTI','VENDOR');
Insert into T_CLIENTI
(NUME_CLIENT,ID_CLIENT,TIP_CLIENT,TARA_CLIENT,ORAS_CLIENT,CLASA_CLIENT
) values ('ORANGE',50,'MATERIALE','RO','BUCURESTI','VENDOR');
Insert into T_CLIENTI
(NUME_CLIENT,ID_CLIENT,TIP_CLIENT,TARA_CLIENT,ORAS_CLIENT,CLASA_CLIENT
) values ('ROMEXPO',62,'MATERIALE','RO','BUCURESTI','VENDOR');
Insert into T_CLIENTI
(NUME_CLIENT,ID_CLIENT,TIP_CLIENT,TARA_CLIENT,ORAS_CLIENT,CLASA_CLIENT
) values ('GERMANOS TELECOM SA',64,'MATERIALE','RO','BUCURESTI','VENDOR');
Insert into T_CLIENTI

50
(NUME_CLIENT,ID_CLIENT,TIP_CLIENT,TARA_CLIENT,ORAS_CLIENT,CLASA_CLIENT
) values ('TRODAT',69,'MATERIALE','RO','BUCURESTI','VENDOR');
Insert into T_CLIENTI
(NUME_CLIENT,ID_CLIENT,TIP_CLIENT,TARA_CLIENT,ORAS_CLIENT,CLASA_CLIENT
) values ('FLAMINGO COMPUTERS SA',213,'MATERIALE','RO','BUCURESTI','VENDOR');
Insert into T_CLIENTI
(NUME_CLIENT,ID_CLIENT,TIP_CLIENT,TARA_CLIENT,ORAS_CLIENT,CLASA_CLIENT
) values ('COCA - COLA',152,'MATERIALE','RO','BUCURESTI','VENDOR');
Insert into T_CLIENTI
(NUME_CLIENT,ID_CLIENT,TIP_CLIENT,TARA_CLIENT,ORAS_CLIENT,CLASA_CLIENT
) values ('BRICOSTORE ROMANIA',169,'MATERIALE','RO','BUCURESTI','VENDOR');
Insert into T_CLIENTI
(NUME_CLIENT,ID_CLIENT,TIP_CLIENT,TARA_CLIENT,ORAS_CLIENT,CLASA_CLIENT
) values ('MIDOCAR',263,'MATERIALE','RO','BUCURESTI','VENDOR');
Insert into T_CLIENTI
(NUME_CLIENT,ID_CLIENT,TIP_CLIENT,TARA_CLIENT,ORAS_CLIENT,CLASA_CLIENT
) values ('TIPOGRAFIA 3B',372,'MATERIALE','RO','BUCURESTI','VENDOR');
Insert into T_CLIENTI
(NUME_CLIENT,ID_CLIENT,TIP_CLIENT,TARA_CLIENT,ORAS_CLIENT,CLASA_CLIENT
) values ('COMPANIA NATIONALA IMPRIMERIA
NATIONALA',453,'MATERIALE','RO','BUCURESTI','VENDOR');
Insert into T_CLIENTI
(NUME_CLIENT,ID_CLIENT,TIP_CLIENT,TARA_CLIENT,ORAS_CLIENT,CLASA_CLIENT
) values ('OTILIA TRADING',491,'MATERIALE','RO','BUCURESTI','VENDOR');
Insert into T_CLIENTI
(NUME_CLIENT,ID_CLIENT,TIP_CLIENT,TARA_CLIENT,ORAS_CLIENT,CLASA_CLIENT
) values ('EDITURA ECONOMICA
DISTRIBUTIE',501,'MATERIALE','RO','BUCURESTI','VENDOR');
Insert into T_CLIENTI
(NUME_CLIENT,ID_CLIENT,TIP_CLIENT,TARA_CLIENT,ORAS_CLIENT,CLASA_CLIENT
) values ('PETROMSERVICE BAPS
CAMPINA',448,'MATERIALE','RO','CAMPINA','VENDOR');
Insert into T_CLIENTI
(NUME_CLIENT,ID_CLIENT,TIP_CLIENT,TARA_CLIENT,ORAS_CLIENT,CLASA_CLIENT
) values ('SUPER CALCULATOR',686,'MATERIALE','RO','BUCURESTI','VENDOR');

51
Insert into T_CLIENTI
(NUME_CLIENT,ID_CLIENT,TIP_CLIENT,TARA_CLIENT,ORAS_CLIENT,CLASA_CLIENT
) values ('PETROMSERVICE SUC PLOIESTI',471,'MATERIALE','RO','BOLDESTI','VENDOR');
Insert into T_CLIENTI
(NUME_CLIENT,ID_CLIENT,TIP_CLIENT,TARA_CLIENT,ORAS_CLIENT,CLASA_CLIENT
) values ('EXTREM DESIGN',1982,'MATERIALE','RO','PLOIESTI','VENDOR');
Insert into T_CLIENTI
(NUME_CLIENT,ID_CLIENT,TIP_CLIENT,TARA_CLIENT,ORAS_CLIENT,CLASA_CLIENT
) values ('BUSSOL',2063,'MATERIALE','RO','BUCURESTI','VENDOR');
Insert into T_CLIENTI
(NUME_CLIENT,ID_CLIENT,TIP_CLIENT,TARA_CLIENT,ORAS_CLIENT,CLASA_CLIENT
) values ('SIMADA',2087,'MATERIALE','RO','PLOIESTI','VENDOR');
Insert into T_CLIENTI
(NUME_CLIENT,ID_CLIENT,TIP_CLIENT,TARA_CLIENT,ORAS_CLIENT,CLASA_CLIENT
) values ('APCO ROMANIA',2090,'MATERIALE','RO','BUCURESTI','VENDOR');
Insert into T_CLIENTI
(NUME_CLIENT,ID_CLIENT,TIP_CLIENT,TARA_CLIENT,ORAS_CLIENT,CLASA_CLIENT
) values ('PROFESIONAL BUSINESS',3102,'MATERIALE','RO','BUCURESTI','VENDOR');
Insert into T_CLIENTI
(NUME_CLIENT,ID_CLIENT,TIP_CLIENT,TARA_CLIENT,ORAS_CLIENT,CLASA_CLIENT
) values ('FIPS-PREST',3157,'SERVICII','RO','BUCURESTI','VENDOR');
Insert into T_CLIENTI
(NUME_CLIENT,ID_CLIENT,TIP_CLIENT,TARA_CLIENT,ORAS_CLIENT,CLASA_CLIENT
) values ('HIPROMA SA',3211,'MATERIALE','RO','ILFOV','VENDOR');
Insert into T_CLIENTI
(NUME_CLIENT,ID_CLIENT,TIP_CLIENT,TARA_CLIENT,ORAS_CLIENT,CLASA_CLIENT
) values ('COMPANIA DE LIBRARII
BUCURESTI',3309,'MATERIALE','RO','BUCURESTI','VENDOR');
Insert into T_CLIENTI
(NUME_CLIENT,ID_CLIENT,TIP_CLIENT,TARA_CLIENT,ORAS_CLIENT,CLASA_CLIENT
) values ('AVENIR TELECOM SA',3327,'MATERIALE','RO','BUCURESTI','VENDOR');
Insert into T_CLIENTI
(NUME_CLIENT,ID_CLIENT,TIP_CLIENT,TARA_CLIENT,ORAS_CLIENT,CLASA_CLIENT
) values ('RAINBOW GROUP CA SRL',3362,'MATERIALE','RO','BUCURESTI','VENDOR');
Insert into T_CLIENTI

52
(NUME_CLIENT,ID_CLIENT,TIP_CLIENT,TARA_CLIENT,ORAS_CLIENT,CLASA_CLIENT
) values ('LORENA',3377,'MATERIALE','RO','BUCURESTI','VENDOR');
Insert into T_CLIENTI
(NUME_CLIENT,ID_CLIENT,TIP_CLIENT,TARA_CLIENT,ORAS_CLIENT,CLASA_CLIENT
) values ('ALTEX IMPEX',3438,'MATERIALE','RO','BUC','VENDOR');
Insert into T_CLIENTI
(NUME_CLIENT,ID_CLIENT,TIP_CLIENT,TARA_CLIENT,ORAS_CLIENT,CLASA_CLIENT
) values ('GOLD PRINT IMPEX SRL',3478,'MATERIALE','RO','BUC','VENDOR');
Insert into T_CLIENTI
(NUME_CLIENT,ID_CLIENT,TIP_CLIENT,TARA_CLIENT,ORAS_CLIENT,CLASA_CLIENT
) values ('ING. CONSTRUCT SRL',3479,'MATERIALE','RO','BUC','VENDOR');
Insert into T_CLIENTI
(NUME_CLIENT,ID_CLIENT,TIP_CLIENT,TARA_CLIENT,ORAS_CLIENT,CLASA_CLIENT
) values ('METRO CASH-CARRY SRL',3503,'MATERIALE','RO','BUC','VENDOR');
Insert into T_CLIENTI
(NUME_CLIENT,ID_CLIENT,TIP_CLIENT,TARA_CLIENT,ORAS_CLIENT,CLASA_CLIENT
) values ('GENERAL NIC IMPORT-EXPORT SRL',3624,'MATERIALE','RO','BUC','VENDOR');
Insert into T_CLIENTI
(NUME_CLIENT,ID_CLIENT,TIP_CLIENT,TARA_CLIENT,ORAS_CLIENT,CLASA_CLIENT
) values ('KETIX COMPROD SRL',3730,'MATERIALE','RO','BUC','VENDOR');
Insert into T_CLIENTI
(NUME_CLIENT,ID_CLIENT,TIP_CLIENT,TARA_CLIENT,ORAS_CLIENT,CLASA_CLIENT
) values ('ROMANIA HYPERMARCHE SA',3910,'MATERIALE','RO','BUC','VENDOR');
Insert into T_CLIENTI
(NUME_CLIENT,ID_CLIENT,TIP_CLIENT,TARA_CLIENT,ORAS_CLIENT,CLASA_CLIENT
) values ('NEOMAX ONLINE SRL',4020,'MATERIALE',null,'BUC','VENDOR');
Insert into T_CLIENTI
(NUME_CLIENT,ID_CLIENT,TIP_CLIENT,TARA_CLIENT,ORAS_CLIENT,CLASA_CLIENT
) values ('MAGISTRA VITAE IMPEX SRL',4099,'MATERIALE',null,'BUC','VENDOR');
Insert into T_CLIENTI
(NUME_CLIENT,ID_CLIENT,TIP_CLIENT,TARA_CLIENT,ORAS_CLIENT,CLASA_CLIENT
) values ('ANGST RO SA',4230,'MATERIALE',null,'IF','VENDOR');
Insert into T_CLIENTI
(NUME_CLIENT,ID_CLIENT,TIP_CLIENT,TARA_CLIENT,ORAS_CLIENT,CLASA_CLIENT
) values ('CLAR IMPEX SERVICE SRL',4235,'MATERIALE',null,'BUC','VENDOR');

53
Insert into T_CLIENTI
(NUME_CLIENT,ID_CLIENT,TIP_CLIENT,TARA_CLIENT,ORAS_CLIENT,CLASA_CLIENT
) values ('META CHIM ELA SRL',4627,'MATERIALE',null,'BUC','VENDOR');
Insert into T_CLIENTI
(NUME_CLIENT,ID_CLIENT,TIP_CLIENT,TARA_CLIENT,ORAS_CLIENT,CLASA_CLIENT
) values ('REDOX LAB SUPPLIERS COM SRL',4671,'MATERIALE',null,'BUC','VENDOR');
Insert into T_CLIENTI
(NUME_CLIENT,ID_CLIENT,TIP_CLIENT,TARA_CLIENT,ORAS_CLIENT,CLASA_CLIENT
) values ('OMNISOFT SRL',4573,'MATERIALE','RO','BUCURESTI','VENDOR');
Insert into T_CLIENTI
(NUME_CLIENT,ID_CLIENT,TIP_CLIENT,TARA_CLIENT,ORAS_CLIENT,CLASA_CLIENT
) values ('TUNIC PROD SRL',14908,'MATERIALE',null,'BUCURESTI','VENDOR');
Insert into T_CLIENTI
(NUME_CLIENT,ID_CLIENT,TIP_CLIENT,TARA_CLIENT,ORAS_CLIENT,CLASA_CLIENT
) values ('ELMEC ROMANIA SRL',16615,'MATERIALE',null,'BUC','VENDOR');
Insert into T_CLIENTI
(NUME_CLIENT,ID_CLIENT,TIP_CLIENT,TARA_CLIENT,ORAS_CLIENT,CLASA_CLIENT
) values ('CONFIDENT SERVICES SRL',17481,'MATERIALE',null,'BUC','VENDOR');
Insert into T_CLIENTI
(NUME_CLIENT,ID_CLIENT,TIP_CLIENT,TARA_CLIENT,ORAS_CLIENT,CLASA_CLIENT
) values ('UM 02583 BUCURESTI',17508,'MATERIALE',null,'BUC','VENDOR');
Insert into T_CLIENTI
(NUME_CLIENT,ID_CLIENT,TIP_CLIENT,TARA_CLIENT,ORAS_CLIENT,CLASA_CLIENT
) values ('STAMPILA SRL',17841,'MATERIALE',null,'PLOIESTI','VENDOR');
Insert into T_CLIENTI
(NUME_CLIENT,ID_CLIENT,TIP_CLIENT,TARA_CLIENT,ORAS_CLIENT,CLASA_CLIENT
) values ('MELNIC TRADING SRL',17943,'MATERIALE',null,'BUC','VENDOR');
Insert into T_CLIENTI
(NUME_CLIENT,ID_CLIENT,TIP_CLIENT,TARA_CLIENT,ORAS_CLIENT,CLASA_CLIENT
) values ('FUNKFASHION STUDIO SRL',18081,'MATERIALE',null,'BUCURESTI','VENDOR');
Insert into T_CLIENTI
(NUME_CLIENT,ID_CLIENT,TIP_CLIENT,TARA_CLIENT,ORAS_CLIENT,CLASA_CLIENT
) values ('DECORATEX MOB',18091,'MATERIALE','RO','CONSTANTA','VENDOR');
Insert into T_CLIENTI
(NUME_CLIENT,ID_CLIENT,TIP_CLIENT,TARA_CLIENT,ORAS_CLIENT,CLASA_CLIENT

54
) values ('LUCY SUCCES',4869,'MATERIALE','RO','BUCURESTI','VENDOR');
Insert into T_CLIENTI
(NUME_CLIENT,ID_CLIENT,TIP_CLIENT,TARA_CLIENT,ORAS_CLIENT,CLASA_CLIENT
) values ('DORI INSTAL',18137,'MATERIALE','RO','BUCURESTI','VENDOR');
Insert into T_CLIENTI
(NUME_CLIENT,ID_CLIENT,TIP_CLIENT,TARA_CLIENT,ORAS_CLIENT,CLASA_CLIENT
) values ('3F FARMACIE',18138,'MATERIALE','RO','BUCURESTI','VENDOR');
Insert into T_CLIENTI
(NUME_CLIENT,ID_CLIENT,TIP_CLIENT,TARA_CLIENT,ORAS_CLIENT,CLASA_CLIENT
) values ('K TECH ELECTRONICS',4863,'MATERIALE','RO','BUCURESTI','VENDOR');
Insert into T_CLIENTI
(NUME_CLIENT,ID_CLIENT,TIP_CLIENT,TARA_CLIENT,ORAS_CLIENT,CLASA_CLIENT
) values ('REMODER SRL',4625,'MATERIALE','RO','BUC','VENDOR');
Insert into T_CLIENTI
(NUME_CLIENT,ID_CLIENT,TIP_CLIENT,TARA_CLIENT,ORAS_CLIENT,CLASA_CLIENT
) values ('FIDIC',4340,'MATERIALE','SZ','GENEVA','VENDOR');
Insert into T_CLIENTI
(NUME_CLIENT,ID_CLIENT,TIP_CLIENT,TARA_CLIENT,ORAS_CLIENT,CLASA_CLIENT
) values ('COROLA ROSA',18413,'MATERIALE',null,'BUCURESTI','VENDOR');
Insert into T_CLIENTI
(NUME_CLIENT,ID_CLIENT,TIP_CLIENT,TARA_CLIENT,ORAS_CLIENT,CLASA_CLIENT
) values ('ROM PHOTO - GSM SA',18580,'MATERIALE',null,'BUCURESTI','VENDOR');
Insert into T_CLIENTI
(NUME_CLIENT,ID_CLIENT,TIP_CLIENT,TARA_CLIENT,ORAS_CLIENT,CLASA_CLIENT
) values ('DIOTIS AGROTRANS',18717,'MATERIALE','RO','VOLUNTARI','VENDOR');
Insert into T_CLIENTI
(NUME_CLIENT,ID_CLIENT,TIP_CLIENT,TARA_CLIENT,ORAS_CLIENT,CLASA_CLIENT
) values ('MYTY COM',18723,'MATERIALE','RO','POPESTI LEORDENI','VENDOR');
Insert into T_CLIENTI
(NUME_CLIENT,ID_CLIENT,TIP_CLIENT,TARA_CLIENT,ORAS_CLIENT,CLASA_CLIENT
) values ('ACTIV INVEST',18725,'MATERIALE','RO','SECTOR 5','VENDOR');
Insert into T_CLIENTI
(NUME_CLIENT,ID_CLIENT,TIP_CLIENT,TARA_CLIENT,ORAS_CLIENT,CLASA_CLIENT
) values ('GECA S.A.',18732,'MATERIALE','RO','SECTOR 3','VENDOR');
Insert into T_CLIENTI

55
(NUME_CLIENT,ID_CLIENT,TIP_CLIENT,TARA_CLIENT,ORAS_CLIENT,CLASA_CLIENT
) values ('LINDE GAZ ROMANIA',6064,'MATERIALE','RO','TIMISOARA','VENDOR');
Insert into T_CLIENTI
(NUME_CLIENT,ID_CLIENT,TIP_CLIENT,TARA_CLIENT,ORAS_CLIENT,CLASA_CLIENT
) values ('RADACINI SRL',4242,'MATERIALE','RO','BUCURESTI','VENDOR');
Insert into T_CLIENTI
(NUME_CLIENT,ID_CLIENT,TIP_CLIENT,TARA_CLIENT,ORAS_CLIENT,CLASA_CLIENT
) values ('ROXIRAL 93',15729,'MATERIALE','RO','PLOIESTI','VENDOR');
Insert into T_CLIENTI
(NUME_CLIENT,ID_CLIENT,TIP_CLIENT,TARA_CLIENT,ORAS_CLIENT,CLASA_CLIENT
) values ('ENRICO SERV',3251,'MATERIALE','RO','PLOIESTI','VENDOR');
Insert into T_CLIENTI
(NUME_CLIENT,ID_CLIENT,TIP_CLIENT,TARA_CLIENT,ORAS_CLIENT,CLASA_CLIENT
) values ('CASA EDITORIALA ROYAL
SRL',18968,'MATERIALE','RO','BUCURESTI','VENDOR');
Insert into T_CLIENTI
(NUME_CLIENT,ID_CLIENT,TIP_CLIENT,TARA_CLIENT,ORAS_CLIENT,CLASA_CLIENT
) values ('ACTIV SYSTEMS-SOLUTIONS',18992,'AVANS','RO','BUCURESTI','VENDOR');
Insert into T_CLIENTI
(NUME_CLIENT,ID_CLIENT,TIP_CLIENT,TARA_CLIENT,ORAS_CLIENT,CLASA_CLIENT
) values ('TWILIGHT SERVICE',19057,'MATERIALE','RO','BUCURESTI','VENDOR');
Insert into T_CLIENTI
(NUME_CLIENT,ID_CLIENT,TIP_CLIENT,TARA_CLIENT,ORAS_CLIENT,CLASA_CLIENT
) values ('EDITURA IRECSON SRL',19103,'MATERIALE','RO','BUCURESTI','VENDOR');
Insert into T_CLIENTI
(NUME_CLIENT,ID_CLIENT,TIP_CLIENT,TARA_CLIENT,ORAS_CLIENT,CLASA_CLIENT
) values ('ACTIV SYSTEMS-
SOLUTIONS',18992,'MATERIALE','RO','BUCURESTI','VENDOR');
Insert into T_CLIENTI
(NUME_CLIENT,ID_CLIENT,TIP_CLIENT,TARA_CLIENT,ORAS_CLIENT,CLASA_CLIENT
) values ('ALLIANCE COMPUTERS SRL',19181,'MATERIALE','RO','BUCURESTI','VENDOR');
Insert into T_CLIENTI
(NUME_CLIENT,ID_CLIENT,TIP_CLIENT,TARA_CLIENT,ORAS_CLIENT,CLASA_CLIENT
) values ('ADRIAN SISTEM SRL',19197,'MATERIALE','RO','BUCURESTI','VENDOR');
Insert into T_CLIENTI

56
(NUME_CLIENT,ID_CLIENT,TIP_CLIENT,TARA_CLIENT,ORAS_CLIENT,CLASA_CLIENT
) values ('PACIFIC STAR TRADING
SRL',19231,'MATERIALE','RO','BUCURESTI','VENDOR');
Insert into T_CLIENTI
(NUME_CLIENT,ID_CLIENT,TIP_CLIENT,TARA_CLIENT,ORAS_CLIENT,CLASA_CLIENT
) values ('BEOFON SRL',16012,'MATERIALE','RO','BUCURESTI','VENDOR');
COMMIT;

57

S-ar putea să vă placă și