Documente Academic
Documente Profesional
Documente Cultură
1
Mihaela Muntean, Ana-Ramona Bologa
Business Intelligence. Teorie și practică, editura ASE, 2015, ISBN 978-606-
505-858-3
Atributul Număr respectă prima regulă, tabelele 1 și 2 sunt asociate prin acest
câmp. Tabelele 1 și 3 sunt asociate prin atributul Nume. Atributul Număr are
valoare 2 în tabelele 1 și 2 ceea ce înseamnă că Dan este asociat cu vârsta 42.
Valoare 2 din tabela 1 este asociată cu valoare ab a câmpului ID din tabela 3, prin
valoarea Dan a câmpului Nume. Ion din tabela 1 totuși nu este asociat cu ion din
tabela 3. O asociere în modelul asociativ este identică cu o joncțiune SQL externă
completă [Qlikview, 2011a], [Qlikview, 2011b].
2
Mihaela Muntean, Ana-Ramona Bologa
Business Intelligence. Teorie și practică, editura ASE, 2015, ISBN 978-606-
505-858-3
datele despre produse sunt extrase din tabela Articole (baza de date
Oracle). Structura tabelei Articole este prezentata în figura 3.49 și figura
3.50;
4
Mihaela Muntean, Ana-Ramona Bologa
Business Intelligence. Teorie și practică, editura ASE, 2015, ISBN 978-606-
505-858-3
datele despre clienți sunt extrase din tabela Clienti (baza de date Access).
Structura tabelei Clienti este prezentată în figura 3.51 și figura 3.52.
Prima sursă de date care va fi încărcată este fișierul Excel. Se parcurg următorii
pași:
1. Se lansează instrumentul Qlikview. Se selectează din meniul File, opțiunea
New pentru a crea un document Qlikview. Nu se va utiliza opțiunea
Wizard pentru a crea un document. Se închide fereastra Getting Started
Wizard (butonul Cancel). Se va crea automat o pagină cu denumirea
Main;
2. Se selectează din meniu, opțiunea File/Edit script. Se deschide fereastra
Edit Script și se selectează din meniu, opțiunea Tab/Insert tab at cursor.
Se va crea un nou tab: surse de date Excel;
3. În fereastra Edit Script apar o serie de linii de cod (comenzi SET utilizate
pentru a inițializa o serie de variabile ale sistemului);
4. Se selectează tab-ul Data și se bifează caseta Relative paths (scriptul va
cunoaște locația, adică folderul și denumirea fișierului);
5. Click pe butonul Table files și se deschide fereastra Open Local files. Se
alege fișierul exemplu.xlsx. Se alege foaia Vânzări. Și apoi click pe butonul
Open;
6. Fișierul se deschide în fereastra File Wizard:type. Qlikview interpretează
fișierul ca fiind un fișier ce utilizează ca delimitator (,) și cu setul de
caractere ANSI. În fereastra File Wizard: type se fac următoarele setări:
tipul de fișier este Excel (xlsx), se alege foaia corespunzătoare (caseta
Tables: Vânzări), se includ etichetele coloanelor (Labels: embedded
Labels - dacă primul rând al fișierului conține denumirea câmpurilor)
(figura 3.53);
6
Mihaela Muntean, Ana-Ramona Bologa
Business Intelligence. Teorie și practică, editura ASE, 2015, ISBN 978-606-
505-858-3
7
Mihaela Muntean, Ana-Ramona Bologa
Business Intelligence. Teorie și practică, editura ASE, 2015, ISBN 978-606-
505-858-3
A doua sursă de date este tabela Clienti (bază de date Access). Se parcurg
următorii pași:
1. Se selectează din meniu opțiunea File/Edit Script. Se poziționează mouse-
ul la sfârșitul scriptului anterior;
2. Se selectează din caseta Database: OLDB și apoi click pe butonul
Connect;
3. Se deschide fereastra de dialog Data Link Properties. Se selectează OLE
DB Provider for ODBC Drivers;
4. În pagina Connection, se selectează opțiunea Use connection string și
click pe butonul Build. Se deschide fereastra de dialog Select data source;
5. Se selectează tab-ul Machine Data Source. Se selectează MS Access
Database;
6. Se deschide fereastra de dialog Login, click pe butonul Database;
7. Se deschide fereastra de dialog Database. Se alege baza de date
Clienti.accdb (figura 3.54.).
8
Mihaela Muntean, Ana-Ramona Bologa
Business Intelligence. Teorie și practică, editura ASE, 2015, ISBN 978-606-
505-858-3
9
Mihaela Muntean, Ana-Ramona Bologa
Business Intelligence. Teorie și practică, editura ASE, 2015, ISBN 978-606-
505-858-3
Redenumirea atributelor
Uneori atributele pe care nu dorim să le asociem, au aceeași denumire, sau
atributele pe care dorim sa le asociem, nu au aceeași denumire. Pentru a asocia cele
doua tabele logice, se parcurg următorii pași:
1. Se selectează din meniu, opțiunea File/Edit script;
2. Pentru a asocia tabela logică Vanzari cu tabela logică Clienti, trebuie să
redenumim atributul Client din tabela logica Clienti. Pentru a redenumi un
atribut, se utilizează opțiunea AS în scriptul de încărcare. Se salvează și
apoi se execută scriptul (figura 3.56.). Scriptul modificat:
SQL SELECT Adresa, Client as CodClient, CUI, NumeClient
FROM `D:\qlikview\clienti.accdb`.Clienti;
3. Se salvează documentul Qlikview cu denumirea: exemplu.qwv.
10
Mihaela Muntean, Ana-Ramona Bologa
Business Intelligence. Teorie și practică, editura ASE, 2015, ISBN 978-606-
505-858-3
Se asociază alias-ul Judete pentru setul de date încărcat. Se poate seta caseta de
validare Save before Reload, din fereastra User Preferences (opțiunea
Settings/User preferences) și documentul se va salva automat înainte de
reîncărcarea datelor. Se execută scriptul. Modelul este prezentat în figura 3.57.
Încărcarea unui fișier text. Se va încărca fișierul Agenti.tab, un fișier text care
utilizează ca delimitator (tab). Fișierul nu conține etichete/denumirile atributelor.
Se parcurg următorii pași:
1. Se selectează din meniu, opțiunea File/Edit Script. Se poziționează
mouse-ul la sfârșitul scriptului pentru încărcarea fișierului Judete.csv;
2. Click pe butonul Table Files și se alege fișierul Agenti.tab. Apoi, click pe
butonul Open;
3. În fereastra File Wizard: Type, se fac următoarele setari: File
Type=Delimited, Delimiter: tab;
4. Se înlocuiește @1 cu AgentID, @2 cu NumeAgent, @3 cu Pozitie, @4 cu
Oras, @5 cu JudetID (figura 3.58).
5. Click pe butonul Finish. Se va crea următorul script:
Directory;
11
Mihaela Muntean, Ana-Ramona Bologa
Business Intelligence. Teorie și practică, editura ASE, 2015, ISBN 978-606-
505-858-3
Agenti:
LOAD @1 as AgentID, @2 as NumeAgent, @3 as Pozitie, @4 as Oras, @5 as
Judetid FROM agenti.tab (txt, codepage is 1252, no labels, delimiter is '\t', msq);
12
Mihaela Muntean, Ana-Ramona Bologa
Business Intelligence. Teorie și practică, editura ASE, 2015, ISBN 978-606-
505-858-3
13
Mihaela Muntean, Ana-Ramona Bologa
Business Intelligence. Teorie și practică, editura ASE, 2015, ISBN 978-606-
505-858-3
15
Mihaela Muntean, Ana-Ramona Bologa
Business Intelligence. Teorie și practică, editura ASE, 2015, ISBN 978-606-
505-858-3
Figura 3.64. Crearea asocierii dintre tabela logică Vanzari și tabela logică Articole
Se poate utiliza și comanda Qualify prin care denumirea unui atribut este
precedată de denumirea tabelei logice corespunzătoare:
Qualify ArtID;
Vanzari:
LOAD ArtID, VanzID, CodClient, AgentID, cantitate, Vanzarea, Data
FROM exemplu.xlsx (ooxml, embedded labels, table is Vanzari);
16
Mihaela Muntean, Ana-Ramona Bologa
Business Intelligence. Teorie și practică, editura ASE, 2015, ISBN 978-606-
505-858-3
17
Mihaela Muntean, Ana-Ramona Bologa
Business Intelligence. Teorie și practică, editura ASE, 2015, ISBN 978-606-
505-858-3
18
Mihaela Muntean, Ana-Ramona Bologa
Business Intelligence. Teorie și practică, editura ASE, 2015, ISBN 978-606-
505-858-3
Rezultatul:
19
Mihaela Muntean, Ana-Ramona Bologa
Business Intelligence. Teorie și practică, editura ASE, 2015, ISBN 978-606-
505-858-3
20
Mihaela Muntean, Ana-Ramona Bologa
Business Intelligence. Teorie și practică, editura ASE, 2015, ISBN 978-606-
505-858-3
Subset ratio indică procentul de valori distincte ale unui atribut dintr-o
tabelă logică comparativ cu toate valorile distincte ale acelui atribut, din
întregul model de date. Este relevant numai pentru atributele cheie, întrucât
ele sunt prezente în multiple tabele. De exemplu, atributul CodClient, din
tabela logică Vanzari, conține doar 24% din valorile posibile ce există în
model (subset ratio=24% ), adică doar 24% din lista de clienți au făcut
tranzacții;
Tags indică tag-urile aplicate atributului. Unele dintre aceste tag-uri sunt
generate automat (de exemplu, tag-ul care indică dacă atributul este cheie
sau tag-ul care indică tipul de dată). Alte tag-uri pot fi aplicate manual;
Opțional orice comentariu atașat atributului.
Print - se poate tipări modelul de date sau copia în clipboard (copy Image);
Auto-Layout - aranjează automat tabelele logice;
Se poate seta dimensiunea de afișare a modelului (zoom). Implicit 100%;
Se poate selecta Internal table View/Source Table View. Internal Table
view este setarea implicită și arată cum sunt stocate datele în QlikView.
Dacă există chei sintetice, sunt vizualizate. Setarea Source table View
arată cum citește QlikView datele, iar cheile sintetice nu sunt afișate.
23
Mihaela Muntean, Ana-Ramona Bologa
Business Intelligence. Teorie și practică, editura ASE, 2015, ISBN 978-606-
505-858-3
Dobrogea,D:\qlikView\StemaDobrogea.jpg
Transilvania,D:\qlikView\StemaTransilvania.png
Crisana,D:\qlikView\StemaCrisana.png
Bucuresti,D:\qlikView\StemaBucuresti.jpg
Bucovina,D:\qlikView\StemaBucovina.jpg
24
Mihaela Muntean, Ana-Ramona Bologa
Business Intelligence. Teorie și practică, editura ASE, 2015, ISBN 978-606-
505-858-3
Dacă dorim să obținem total cantitate vândută pentru fiecare agent, trebuie să
creăm o expresie de tipul:
Sum (Ianuarie) + Sum(Februarie) + Sum(Martie) + Sum(Aprilie) + Sum(Mai) +
Sum(Iunie)
De aceea, se va modifica structura fișierului de forma:
25
Mihaela Muntean, Ana-Ramona Bologa
Business Intelligence. Teorie și practică, editura ASE, 2015, ISBN 978-606-
505-858-3
26
Mihaela Muntean, Ana-Ramona Bologa
Business Intelligence. Teorie și practică, editura ASE, 2015, ISBN 978-606-
505-858-3
Rezultatul:
27
Mihaela Muntean, Ana-Ramona Bologa
Business Intelligence. Teorie și practică, editura ASE, 2015, ISBN 978-606-
505-858-3
3.3.5.Utilizarea ierarhiilor
Modelul asociativ nu lucrează în mod implicit cu ierarhii, dar se pot crea și
utiliza, dacă dorim. Se consideră fișierul ierarhie.xls cu informații despre regiunile,
județele și orașele României, cu următoarea structură:
28
Mihaela Muntean, Ana-Ramona Bologa
Business Intelligence. Teorie și practică, editura ASE, 2015, ISBN 978-606-
505-858-3
29
Mihaela Muntean, Ana-Ramona Bologa
Business Intelligence. Teorie și practică, editura ASE, 2015, ISBN 978-606-
505-858-3
Rezultatul:
30
Mihaela Muntean, Ana-Ramona Bologa
Business Intelligence. Teorie și practică, editura ASE, 2015, ISBN 978-606-
505-858-3
Tabela logică creată are un atribut pentru fiecare nivel ierarhic și o înregistrare
pentru fiecare nod. Au fost create noi câmpuri: Path, HierarchyLevel (figura 3.74).
31
Mihaela Muntean, Ana-Ramona Bologa
Business Intelligence. Teorie și practică, editura ASE, 2015, ISBN 978-606-
505-858-3
Rezultatul:
32
Mihaela Muntean, Ana-Ramona Bologa
Business Intelligence. Teorie și practică, editura ASE, 2015, ISBN 978-606-
505-858-3
Qlikview va transforma și procesa conținutul sursei astfel încât vom avea toate
atributele (culoare, greutate, diametru, grosime, etc.) stocate în tabele logice
separate și asociate cu obiectul corespunzător (figura 3.81). Fiecare tabelă logică va
avea un număr de rânduri, în funcție de numărul de obiecte care au același atribut.
Articole:
LOAD ARTID, DESCRIERE, PRETUNITAR, COSTUNITAR, STOC,
CATEGORIEID
FROM articole.qvd (qvd);
3.3.7.Realizarea joncțiunilor
Pentru a realiza joncțiuni se utilizează clauza JOIN a comenzii LOAD. Se
realizează o joncțiune de tip outer join (joncțiune externă completă) pe atributele
care au aceeași denumire. Se consideră următorul exemplu:
1. Se va crea un document Qlikview: Jonctiuni.qvw
2. Se selectează din meniu, opțiunea File/Edit Script și se va crea următorul
script:
Tari:
LOAD * INLINE [
Tara, Vanzari_realizate,Vanzari_Preconizate
USA, 1000,800
UK, 800,800
Germania, 900, 700
];
Rezultatul:
Rezultatul:
Rezultatul:
Rezultatul:
35
Mihaela Muntean, Ana-Ramona Bologa
Business Intelligence. Teorie și practică, editura ASE, 2015, ISBN 978-606-
505-858-3
Rezultatul:
Rândurile din al doilea set de date au fost adăugate la primul set de date. Se
poate preciza între paranteze care este setul de date la care se face concatenarea.
36
Mihaela Muntean, Ana-Ramona Bologa
Business Intelligence. Teorie și practică, editura ASE, 2015, ISBN 978-606-
505-858-3
Tari2:
LOAD * INLINE [
Tara, Vanzari_realizate,Vanzari_Preconizate
Italia, 1000,800
Romania, 800,800
Spania, 900, 700
];
Tari1:
LOAD * INLINE [
Tara, Vanzari_realizate,Vanzari_Preconizate
USA, 1000,800
UK, 800,800
Germania, 900, 700
];
Tari2:
noconcatenate LOAD * INLINE [
37
Mihaela Muntean, Ana-Ramona Bologa
Business Intelligence. Teorie și practică, editura ASE, 2015, ISBN 978-606-
505-858-3
Tara, Vanzari_realizate,Vanzari_Preconizate
Italia, 1000,800
Romania, 800,800
Spania, 900, 700
];
38
Mihaela Muntean, Ana-Ramona Bologa
Business Intelligence. Teorie și practică, editura ASE, 2015, ISBN 978-606-
505-858-3
4. Se va crea tabela logică Timp. Se vor încărca elementele de dată din tabela
temporară TempTimp și pentru fiecare element de dată se vor utiliza
diferite funcții calendaristice pentru a extrage o serie de informații utile,
cum ar fi: săptămâna, luna, anul corespunzător, denumirea zilei, prima zi
din săptămâna din care face parte elementul de dată, ultima zi din
săptămâna din care face parte elementul de dată, etc:
39
Mihaela Muntean, Ana-Ramona Bologa
Business Intelligence. Teorie și practică, editura ASE, 2015, ISBN 978-606-
505-858-3
Timp:
Load
TempData As Data,
Week(TempData) As Saptamana,
Month(TempData) As Luna,
Year(TempData) As An,
Week (TempData) & '-'& Year(TempData)as SaptamanasiAn,
WeekDay(TempData) as denumire_zi,
WeekStart(TempData, 0, 0) AS prima_zi_sapt,
WeekEnd(TempData, 0, 0) AS ultima_zi_sapt,
Weekyear(TempData) as anul_pt_sapt,
Month(TempData) & '-' &Year(TempData) AS LunasiAn,
MonthStart(TempData) as prima_zi_luna,
MonthEnd(TempData) as ultima_zi_luna,
'Trim' &Ceil(Month(TempData)/3) AS Trimestru,
QuarterStart(TempData) as prima_zi_trim,
QuarterEnd(TempData) as ultima_zi_trim,
YearEnd(TempData) as ultima_zi_an,
DayNumberOfYear(TempData) as numartotalzile
resident TempTimp
ORDER BY TempData ASC;
//se sterge tabela temporara
DROP TABLE TempTimp;
Se salvează, apoi se execută scriptul. În modelul de date s-a creat tabela logică
Timp asociată cu tabela logică Vanzari (figura 3.85.)
40
Mihaela Muntean, Ana-Ramona Bologa
Business Intelligence. Teorie și practică, editura ASE, 2015, ISBN 978-606-
505-858-3
41
Mihaela Muntean, Ana-Ramona Bologa
Business Intelligence. Teorie și practică, editura ASE, 2015, ISBN 978-606-
505-858-3
42
Mihaela Muntean, Ana-Ramona Bologa
Business Intelligence. Teorie și practică, editura ASE, 2015, ISBN 978-606-
505-858-3
43
Mihaela Muntean, Ana-Ramona Bologa
Business Intelligence. Teorie și practică, editura ASE, 2015, ISBN 978-606-
505-858-3
46
Mihaela Muntean, Ana-Ramona Bologa
Business Intelligence. Teorie și practică, editura ASE, 2015, ISBN 978-606-
505-858-3
Rezultatul:
47
Mihaela Muntean, Ana-Ramona Bologa
Business Intelligence. Teorie și practică, editura ASE, 2015, ISBN 978-606-
505-858-3
10,Octombrie,4
11,Noiembrie,4
12,Decembrie,4
49
Mihaela Muntean, Ana-Ramona Bologa
Business Intelligence. Teorie și practică, editura ASE, 2015, ISBN 978-606-
505-858-3
S-a utilizat (&) pentru a crea cheia compusă și un alias pentru denumirea ei.
Tabela $Syn1table, precum și cheia sintetică au fost eliminate (figura 3.96).
Dependențe circulare
Se consideră următoarele fișiere (csv):
Vazari.csv:
An, Luna, Prodid, Cantitate
2000, 1, 1, 12
2000, 2, 1, 10
2000, 3, 2, 11
2000, 4, 3, 15
2001, 1, 1, 60
2001, 2, 2, 90
2001, 3, 1, 10
2001, 4, 3, 20
Produse.csv:
Prodid, denumire, categorieID
1, produs A,1
50
Mihaela Muntean, Ana-Ramona Bologa
Business Intelligence. Teorie și practică, editura ASE, 2015, ISBN 978-606-
505-858-3
2, produs B,1
3, produs C,2
Buget.csv
categorieID,An,valoare
1, 2000, 2500
1, 2001, 1900
2, 2000, 2000
2, 2001, 1500
51
Mihaela Muntean, Ana-Ramona Bologa
Business Intelligence. Teorie și practică, editura ASE, 2015, ISBN 978-606-
505-858-3
52
Mihaela Muntean, Ana-Ramona Bologa
Business Intelligence. Teorie și practică, editura ASE, 2015, ISBN 978-606-
505-858-3
53
Mihaela Muntean, Ana-Ramona Bologa
Business Intelligence. Teorie și practică, editura ASE, 2015, ISBN 978-606-
505-858-3
În unele cazuri trebuie să utilizam aceeași sursă de date de mai multe ori, în
timpul execuției scriptului. Pentru că sursa este deja încărcată în RAM, se poate
accesa utilizând opțiunea RESIDENT LOAD.
Clauza MAPPING a comenzii LOAD/SELECT se utilizează pentru a crea o
tabelă de mapare temporară. O tabelă de mapare e formată din două coloane: prima
coloană conține valorile de comparație (de exemplu, denumirea tabelei/atributului)
și a doua coloană conține valorile dorite pentru mapare (de exemplu, categoria de
produse). Tabele de mapare sunt stocate temporar în RAM, apoi sunt șterse
automat după execuția scriptului. Conținutul unei tabele de mapare poate fi accesat
utilizând: funcția applymap(), funcția mapsubstring(), comanda
MAP/RENAME. O tabelă de mapare poate fi utilizată și pentru a înlocui valorile
atributelor sau denumirea atributelor, în timpul execuției scriptului.
Modelul rezultat este prezentat în figura 3.99. În figura 3.100 se afișează
conținutul tabelei Tabela.
54
Mihaela Muntean, Ana-Ramona Bologa
Business Intelligence. Teorie și practică, editura ASE, 2015, ISBN 978-606-
505-858-3
Cheile generice conțin informații atât despre nivelele superioare cât și despre
cele inferioare ale ierarhiei (prodid>categorieid) și pot fi utilizate fie numai pentru
nivelul superior sau pentru ambele nivele ale ierarhiei. În acest mod se va realiza o
asociere corectă între înregistrările din tabela rezultată prin concatenare și tabela
logică Produse (înregistrările din tabela logică Vanzari se leagă la nivel de produs,
iar înregistrările din tabela logică Buget se leagă la nivel de categorie și nu la nivel
de produs). Cheile generice trebuie să fie mapate la cheile reale, utilizând tabela de
legătură Produse link tabela (figura 3.101).
55
Mihaela Muntean, Ana-Ramona Bologa
Business Intelligence. Teorie și practică, editura ASE, 2015, ISBN 978-606-
505-858-3
Așa cum am văzut în exemplele anterioare, se pot extrage și încărca date din
baze de date relaționale tranzacționale, cu o structură normalizată. Dar, sursa de
date poate fi și un depozit de date cu o structură stea/fulg de zăpadă/combinații cu
una sau mai multe tabele de fapte și multe tabele dimensionale. În cazul în care
modelul dimensional este o simplă schemă stea /fulg de zăpadă, cu o singură tabelă
de fapte, modelul asociativ creat are o structură identică cu schema stea/fulg de
zăpadă sursă. Situația se schimbă atunci când modelul dimensional include
multiple tabele de fapte cu dimensiuni comune. La încărcarea acestor tabele de
fapte, Qlikview va genera chei sintetice, tabele sintetice și uneori dependențe
circulare care trebuie evitate fie prin:
1. concatenarea tabelelor de fapte;
2. crearea unei tabele de legătură. Tabela de legătură este o soluție bună
pentru acele modele în care avem mai multe tabele de fapte cu granulații
diferite. În acest caz, modelul asociativ trebuie să aibă structura din figura
3.102;
56
Mihaela Muntean, Ana-Ramona Bologa
Business Intelligence. Teorie și practică, editura ASE, 2015, ISBN 978-606-
505-858-3
Vanzari.csv:
An, Luna, Prodid, Cantitate
2000, 1, 1, 12
2000, 2, 1, 10
2000, 3, 2, 11
2000, 4, 3, 15
2001, 1, 1, 60
2001, 2, 2, 90
2001, 3, 1, 10
2001, 4, 3, 20
Produse.csv:
Prodid, denumire, categorieID
1, produs A,1
2, produs B,1
3, produs C,2
Buget.csv
An, prodid, valoare
2000, 1, 2500
2000, 2, 1900
2000, 3, 2000
2001, 1, 1500
2001, 2, 1000
2001,3, 500
Tabela
3. de fapte Tabela
dimensională
Tabela de legătură
Tabela de fapte
Tabela
dimensională
Tabela
dimensională
57
Mihaela Muntean, Ana-Ramona Bologa
Business Intelligence. Teorie și practică, editura ASE, 2015, ISBN 978-606-
505-858-3
Observăm că s-a creat o tabelă sintetică $Syn1 Table cu atributele $Syn1, prodid
și An. Atributele prodid și An sunt comune tabelelor logice Buget și Vanzari.
Pentru a elimina cheia sintetică, vom utiliza o tabelă de legătură. Tabela de legătură
conține toate combinațiile posibile de valori pentru setul de atribute comune și
printr-o cheie unică este asociată la tabelele originale. De asemenea, se va crea o
cheie compusă pentru a asocia cele trei tabele logice. Cheia compusă este obținută
prin concatenarea câmpurilor comune (An&'|'&prodid as cheie). Apoi se vor șterge
atributele comune din model. Scriptul se va modifica astfel:
Vanzari:
Load An&'|'&prodid as cheie, Cantitate, Luna, An, prodid
58
Mihaela Muntean, Ana-Ramona Bologa
Business Intelligence. Teorie și practică, editura ASE, 2015, ISBN 978-606-
505-858-3
FROM vanzari.csv (txt, codepage is 1252, embedded labels, delimiter is ',', msq);
Buget:
Load An&'|'&prodid as cheie, valoare, An, prodid
FROM buget.csv (txt, codepage is 1252, embedded labels, delimiter is ',', msq);
//se utilizează clauza DISTINCT pentru a elimina duplicatele
Legatura:
Load distinct An&'|'&prodid as cheie, An, prodid
resident Vanzari;
concatenate(Legatura)
Load distinct An&'|'&prodid as cheie, An, prodid
resident Buget where not exists (cheie);
Produse:
LOAD prodid, denumire, categorieID
FROM produse.csv (txt, codepage is 1252, embedded labels, delimiter is ',', msq);
drop fields An, prodid from Vanzari;
drop fields An, prodid from Buget;
Se pune următoarea întrebare: Care dintre cele două metode este mai bună:
concatenarea sau utilizarea tabelelor de legătură? Când lucrăm cu seturi mici de
date, ambele metode sunt bune, dar dacă avem seturi mari de date trebuie să ținem
cont de dimensiunea tabelelor de fapte. Din punct de vedere al performanței, este
mai eficient de a concatena tabelele de fapte, se evita încărcarea în memorie a unei
59
Mihaela Muntean, Ana-Ramona Bologa
Business Intelligence. Teorie și practică, editura ASE, 2015, ISBN 978-606-
505-858-3
60