SQL modellezés Turáni Balázs.

Slides:



Advertisements
Hasonló előadás
2012. tavaszi félév Vitéz Gergely. A diasor ismerete nem helyettesíti a tankönyvet, és a példatárat. A diasor ismerete szükséges, de nem elégséges feltétele.
Advertisements

10. gyakorlat SQL SELECT.
Tananyag: konzultáció
2012. tavaszi félév Véső Tamás. A jelen bemutatóban található adatok, tudnivalók és információk a számonkérendő anyag vázlatát képezik. Ismeretük szükséges,
Multidimenzionális Adatbázisok Alapjai
2012. tavaszi félév Vitéz Gergely. A diasor ismerete nem helyettesíti a tankönyvet, és a példatárat. A diasor ismerete szükséges, de nem elégséges feltétele.
Lekérdezések SQL-ben Relációs algebra A SELECT utasítás
Ablak módszer Rózsa Győző
Analitikus függvények
Analitikus, statisztikai és szélsőérték fv-k Hári Veronika
Analitikus, statisztikai és szélsőérték fv-k Rózsa Győző
PL/SQL folytatás Kurzorok Alprogramok Tárolt eljárások ADATBÁZIS ALAPÚ RENDSZEREK.
Oracle tuning server.101/b10752/toc.htm.
2012. tavaszi félév Vitéz Gergely. A jelen bemutatóban található adatok, tudnivalók és információk a számonkérendő anyag vázlatát képezik. Ismeretük szükséges,
Adatbázisok használata 1 (1. gyakorlat)
Delphi programozás alapjai
2012. tavaszi félév Véső Tamás. A jelen bemutatóban található adatok, tudnivalók és információk a számonkérendő anyag vázlatát képezik. Ismeretük szükséges,
Azonosítók és képzési szabályaik
A táblázatkezelés alapjai 1.
Adatbázis gyakorlat – SUBSELECT – Tarcsi Ádám március.
– Adattáblák & adatok kezelése – Tarcsi Ádám január Adatbázis gyakorlat.
Többtáblás lekérdezések, allekérdezések Rózsa Győző
PL/SQL I. ADATBÁZIS ALAPÚ RENDSZEREK.  PL/SQL = Procedural Language/SQL  utasítást ; zárja le  PL/SQL blokk lezárása: /  kis- és nagybetű egyenértékű.
SQL – DQL (Data Query Language ) adat lekérdezések
Adatbáziskezelés Horváth Ernő.
Adatbázis-kezelés ACCESS program:
Delphi programozás alapjai Nagyváradi Anett PTE PMMK MIT.
2006. október 2.Markó Tamás, PTE TTK1 Az Oracle SQL 4. Összesítés és csoportosítás lekérdezésekben. Halmazműveletek.
2006. október 2.Markó Tamás, PTE TTK1 Az Oracle SQL 5. Nézettáblák létrehozása, módosítása és törlése.
ADATBÁZISOK
ADATBÁZISOK
ADATBÁZISOK
Adattáblák létrehozása, módosítása, tranzakciók, megszorítások Rózsa Győző.
Részletező csoportosítások Rózsa Győző
ADATBÁZIS HASZNÁLAT I. 2. gyakorlat. Figyelem!!! A diasor ismerete nem helyettesíti a tankönyvet, és a példatárat. A diasor ismerete szükséges, de nem.
SQL Server 2005 relációs adattárház technológiák
Összesítés és csoportosítás lekérdezésekben. Halmazműveletek.
Nézettáblák létrehozása, módosítása és törlése
Microsoft Excel Függvények VII..
SQL. SQL = Structured Query Language (= struktúrált lekérdező nyelv). A relációs adatbázis-kezelés szabványos nyelve. Nem algoritmikus nyelv, de algoritmikus.
SQL.
Az SQL nyelv alapjai.
Access XP Kifejezés-szerkesztő Összehasonlító operátorok:
2012. tavaszi félév Véső Tamás. Kérdezze le minden dolgozó nevét, jövedelmét, részlegének nevét és a részlegében dolgozók legkisebb és legnagyobb jövedelmét,
Adattáblák létrehozása, módosítása, tranzakciók, megszorítások Rózsa Győző.
2012. tavaszi félév Véső Tamás Véső Tamás OE­NIK / 29.
Részletező csoportosítások Rózsa Győző
2012. tavaszi félév Vitéz Gergely. A diasor ismerete nem helyettesíti a tankönyvet, és a példatárat. A diasor ismerete szükséges, de nem elégséges feltétele.
A diasor ismerete nem helyettesíti a tankönyvet, és a példatárat. A diasor ismerete szükséges, de nem elégséges feltétele a minimum elégséges érdemjegynek!
Adatbázis használat I. 2. gyakorlat.
ADATBÁZIS HASZNÁLAT I. 3. gyakorlat. Figyelem!!! A diasor ismerete nem helyettesíti a tankönyvet, és a példatárat. A diasor ismerete szükséges, de nem.
Készítette: Tóth Ervin
Az SQL nyelv. SQL Az SQL utasításait két fő csoportba szokták sorolni: DDL (= Data Definition Language): adatstuktúra definiáló utasítások. DML (= Data.
Az osztály tanulmányi előmenetelének tanulmányozása vizsgálata! Függvények magyarázata!
XML adatkezelés 1. témakör Az XML szabvány.
– SQL 3: SELECT - 1. – Tarcsi Ádám, január 31. Adatbázis gyakorlat.
– SELECT - 2. – Tarcsi Ádám március Adatbázis gyakorlat.
SQL SELECT parancsok Kottyán László. A bemutató mintatáblái.
1 Informatikai Szakképzési Portál Adatbázis kezelés DQL – Adatlekérdező nyelv.
Adatbázisok Fleiner Rita, Tankönyv:
Többtáblás lekérdezések, hierarchikus lekérdezések, allekérdezések
Webprogramozó tanfolyam
2. AB gyakorlat Egytáblás csoportosító lekérdezések.
SQL történelem 1970 Edgar F. Codd (IBM) cikke 12 szabály a relációs adatmodellekre 1979 első kereskedelmi forgalmazású relációs adatbáziskezelő 1986 az.
SQL. SQL jellemzői Nem algoritmikus (nem tartalmaz algoritmikus szerkezeteket: ciklus, eljárás, elágazás) Nem rekurzív (önmagát nem hívhatja) Halmazorientált.
Adatbázis-kezelés 3-4. Adatok lekérdezése utasítás általános formája SELECT [ALL/DISTINCT] {*/, …, } FROM [ ], …, [ ] [WHERE GROUP BY, …, HAVING ORDER.
– SELECT - 1. – Tarcsi Ádám január Adatbázis gyakorlat.
Egy lekérdezés végrehajtása SELECT o1 FROM T1 WHERE o2 = … Hogyan jutnak el a megfelelő sorokból a mező értékei a klienshez?
SQL aggregálás, csoportosítás és összekapcsolás Adatbázisok 1.
SQL Több táblás lekérdezések. Halmazműveletek. Alkérdések
Előadás másolata:

SQL modellezés Turáni Balázs

Multidimenzionális tömb Forrás: http://blogs.technet.com/blogfiles/andrew/WindowsLiveWriter/OLAPCubesandMultidimensionalAnalysis_10C03/cube.jpg Mérték oszlopok Select utasítás révén kapott EREDMÉNYHALMAZ MODEL Partíció oszlopok Dimenzió oszlopok Szabályok

Mire jó az SQL modellezés? Lekérdezés eredményéből multidimenzionális tömböt készíthetünk. Ebből a tömbből bizonyos képletek (szabályok) segítségével új értékeket nyerhetünk ki. Szabályok = műveletek, melyek alapvető számtani műveletektől a szimultán rekurziókig széles skálán mozognak.

SQL Modellezés előnye: Ora 10g vezette be > 11gR1>11gR2 Korlátlan adatmennyiséggel képes dolgozni. OLAP illetve OLTP adattáblák esetében egyaránt használható Lényegében az előelemzés eszköze. Modellezési, tervezési lehetőségeket kínál.

Model klauzula Multidimenzionális tömböt a Model klauzula segítségével állítjuk elő. Model klauzula az SQL blokk része.

SELECT + MODEL SELECT SzelekciósLista FROM Táblalista WHERE LogikaiOszlopkifejezés GROUP BY CsoportosítóOszlopkifejezésLista HAVING LogikaiOszlopkifejezés ORDER BY RendezőOszlopkifejezésLista MODEL

Model klauzula alapszintaxisa MAIN <fő_model_neve> PARTITION BY (oszlop <másodlagos_név>) DIMENSION BY (oszlop <másodlagos_név> , oszlop <másodlagos_név>) MEASURES (<oszlop <másodlagos_név> , oszlop<másodlagos_név>) RULES <szabály opciók> RETURN {ALL|UPDATED} ROWS [IGNORE NAV] | [KEEP NAV] [UPDATE | UPSERT | UPSERT ALL] [AUTOMATIC ORDER | SEQUENTIAL ORDER] [ITERATE (<szám>) [UNTIL <feltétel>]]

Partíció oszlopok Lekérdezés eredményhalmazán definiálnak logikai tartományokat (eredményhalmazt blokkokra osztják) A partíciók egymástól függetlenek. Model klauzula szabályai valamennyi partícióra vonatkoznak. Utasítása: PARTITION BY (…)

Dimenzió oszlopok Definiálják a multidimenzionális tömböt. Partíción belüli cellák azonosítására használjuk. Dimenziók egy teljes kombinációja csak egy cellát azonosíthat a tömbön belül. DIMENSION BY (…)

Mérték oszlopok Megegyeznek a csillag sémában lévő ténytábla mérték oszlopaival. Jellemzően numerikus adatokat tartalmaznak. Pl. valamely termék eladási ára, illetve az adott termékből eladott mennyiség…stb. MEASURES (…)

Szabályok Szabályok hozzáférnek a mérték oszlop értékeihez. Ezeket az értékeket módosíthatják is (frissíthetik). Szabályok tömörek, könnyen kezelhetőek, helyettesítő karaktereket és ciklus szerkezeteket is tartalmazhatnak. RULES (…)

1. példa: SELECT region, cat, year, sales FROM sale WHERE region IN ('East', 'West') AND year IN ('1999','2000','2001') MODEL PARTITION BY (region) DIMENSION BY (cat, year) MEASURES (sales) RULES ( sales['PROD1', 2001] = sales['PROD1',1999] + sales['PROD1',2000], sales['PROD2', 2001] = sales['PROD2',1999] + sales['PROD2',2000], sales['PROD3', 2001] = sales['PROD3',1999] + sales['PROD3',2000] ) ORDER BY region, cat, year, sales;

2. példa SELECT prod_type,year, s FROM sale WHERE region IN ('East') AND year IN ('1999','2000','2001') MODEL DIMENSION BY (prod_type, year) MEASURES (sales s) RULES UPSERT ( s['FOOD',2001] = 1.2*s['MOVIE',1999] + s['MOVIE',2000], s['MOVIE', 2001] = s['MOVIE',1999] + s['MOVIE',2000], s['GAME', 2001] = AVG(s)[CV(prod_type), year<2000] ) ORDER BY year, prod_type;

3. példa Összesen kategória egy származtatott érték. SELECT region, prod_type, year, sales FROM sale WHERE region IN ('East', 'West') AND year IN ('1999','2000','2001') MODEL PARTITION BY (region) DIMENSION BY (prod_type, year) MEASURES (sales) RULES ( sales['MOVIE', 2001] = sales['MOVIE', 2000] + sales['MOVIE', 1999], sales['FOOD', 2001] = sales['FOOD',2000], sales['GAME', 2001] = sales['GAME', 2000] + sales['GAME', 1999], sales['ÖSSZESEN',2001] =sales['MOVIE', 2001] + sales['FOOD', 2001] + sales['GAME', 2001] ) ORDER BY region, prod_type, year; Összesen kategória egy származtatott érték.

SQL Model használata: Cellacímzés: Cellacímzés vonatkozhat: Cellák frissíthetők Hivatkozni is lehet rájuk. Formái: s['MOVIE', '2001'] (pozícionális) s[prod_type='MOVIE', YEAR='1999'] (szimbolikus) Cellacímzés vonatkozhat: Egyedi cellákra Cella tartományokra

4. példa: SELECT region,prod_type, year, sales FROM sale WHERE region IN ('East','West') AND prod_type='MOVIE' MODEL -- RETURN UPDATED ROWS PARTITION BY (prod_type) DIMENSION BY (region, year) MEASURES (sales) RULES UPDATE ( sales[region='West', year=2000] = sales['West',1999] + sales['West',1998], sales[region='East', year=2000] = MAX(sales)['East', year BETWEEN 1998 AND 2000] ) ORDER BY year,region;

Szimbolikus tömb feldolgozás AVG(s)[prod_type='MOVIE‘,year BETWEEN '1998' AND '2000'] AVG(s)[prod_type='MOVIE', YEAR<='2000']

UPSERT, UPSERT ALL, UPDATE UPSERT alap értelmezett (bemeneti adatok között nem szereplő cellaértékek létrehozására használhatjuk) Ha: Cella létezik → frissülni fog Nem létezik → létrejön a cella UPDATE (csak frissít, új cellát sohasem szúr be)

5. példa: SELECT region, prod_type, year, sales FROM sale MODEL RETURN UPDATED ROWS PARTITION BY (prod_type) DIMENSION BY (region, year) MEASURES (sales) RULES ( UPDATE sales['West', 2000] = 199999.11, UPSERT sales['West', 2007] = sales['West', 1999] + sales['West', 2000] ) ORDER BY region;

Dimenziók helyettesítésének lehetőségei Egy dimenzióban lévő összes érték megadásához az ANY és IS ANY használható. sales[ ANY,2000] = 1.3*sales['West',1999], sales[region IS ANY, 1999] = sales['West',1999]

Dimenzióértékek elérése CV függvény használatával Egy cella dimenzió-értékének eléréséhez a szabály jobb oldalán használható a CV függvény, amely a szabály bal oldalán lévő megfelelő értékekre hivatkozik. sales[region='West', year=2000] = 1.2*sales['West',1999], sales[region='East', year=2000] = 1.2*sales['East',1999], sales[region='Central', year=2000] =1.2*sales['Central',1999] Tömörebben: sales[ region IN ('West','East', 'Central'), year=2000]= 1.2*sales[CV(region),1999]

Szabályok automatikus rendezése AUTOMATIC ORDER utasítással érhető el. sales['West', 2001] = sales['West', 2000] + sales['West',1999], sales['West', 2000] = 50000, sales['West', 1999] = 40000 Sorrend: 1999-es év 2000-es év 2001-es év Az első az utolsó kettőtől függ.

Hivatkozó modellek Egy főmodell read-only (kizárólag olvasható) tömbök formájában több modellhivatkozást (is) tartalmazhat. Különböző dimenzionalitásban kapcsolhatunk össze modelleket. Adattáblák: ft(régió, év, eladások), cr(régió, ráta), dollar_eladások['West',2001] = eladások['West',2000] * ráta['West']

6. példa: SELECT region, prod_type, year, sales FROM sale WHERE region IN ('West','East') MODEL RETURN UPDATED ROWS MAIN simple_model PARTITION BY (region) DIMENSION BY (prod_type, year) MEASURES (sales) RULES( sales['FOOD',2000] = 150000, sales['FOOD', 2001] = sales['FOOD',1999] + sales['FOOD',2000], sales['MOVIE', 2001] = sales[ 'MOVIE',2000] ) ORDER BY region, prod_type, year;

Megjegyzés Jegyezzük meg, hogy a MODEL klauzula nem frissít, vagy szúr be sorokat az adatbázis tábláiba. A következő lekérdezés jól illusztrálja, hogy az előbbi modelles adatfeldolgozás által a sale adattábla nem módosult. SELECT region, prod_type, year, sales FROM sale WHERE region IN ('West','East') AND year IN (2000, 2001);