2005. december 12.Markó Tamás, PTE TTK1 Az Oracle SQL 11. Elemzések támogatása
2005. december 12.Markó Tamás, PTE TTK2 A rádiótelefonokat kérem KIKAPCSOLNI!
2005. december 12.Markó Tamás, PTE TTK3 Felhasznált irodalom Gyári dokumentáció: Data Warehousing Guide 18. fejezet: SQL for Aggregation in Data Warehouses Kende Mária - Nagy István: Oracle példatár 13. fejezet: Részletező csoportosítások és analitikus függvények az SQL-ben
2005. december 12.Markó Tamás, PTE TTK4 Data Warehouse - adattárház Relációs adatbázis, de –lekérdezésekre és elemzésekre tervezték (nem tranzakciók feldolgozására) –általában történelmi adatsorokat tartalmaz, amik tranzakciós rendszerekből származnak –általában több forrásból is gyűjt adatokat –OLAP-eszközök is tartoznak hozzá (lásd a multidimenziós adatmodellről tanultakat) A cégen belül különválik a tranzakciók feldolgozása és az elemzés
2005. december 12.Markó Tamás, PTE TTK5 Az adattárház jellemzői Adott célra készül (pl. az értékesítések elemzésére) Integrált: –több forrásból gyűjt adatokat –ezeket azonos formára hozza Nemfelejtő: –az ide bekerülő adatok többé nem módosulnak –hosszú időn át megmaradnak Lehetővé teszi az időbeli változások tanulmányozását
2005. december 12.Markó Tamás, PTE TTK6 Eltérések a tranzakciókezelő (OLTP) rendszerektől Tranzakciókezelő: kevés index sok kapcsolat 3NF származtatott adatok tárolása ritka mindig naprakész (adatmódosítás gyakran, kevés rekordon) Adattárház: sok index kevés kapcsolat nem normalizált származtatott adatok tárolása gyakori adatfrissítés naponta / hetente, sok új rekord egyszerre
2005. december 12.Markó Tamás, PTE TTK7 Az adattárház szerkezete
2005. december 12.Markó Tamás, PTE TTK8 Adattárházak támogatása SQL-ben Az Oracle-nél csak az Oracle 8i óta Fontos kiterjesztések: –új csoportképzési eszközök –analitikus (elemző) függvények Az analitikus függvények nem részei a szabványos SQL-nek –a szabványosítás napirenden van
2005. december 12.Markó Tamás, PTE TTK9 Új csoportképzési lehetőségek
2005. december 12.Markó Tamás, PTE TTK10 ROLLUP Egyszerre több egymásba ágyazott szinten képez összesítő adatokat Példa: SELECT deptno, job, SUM(sal), COUNT(*) AS letszam FROM scott.emp GROUP BY ROLLUP(deptno, job); részlegenként, azon belül beosztás szerint összesít
2005. december 12.Markó Tamás, PTE TTK11 ROLLUP – az eredmény DEPTNO JOB SUM(SAL) LETSZAM CLERK MANAGER PRESIDENT CLERK ANALYST MANAGER CLERK MANAGER SALESMAN sor kijelölve. összesítés a részlegre főösszesen ezt az információt hagyományosan csak 3 SELECT tudná előállítani
2005. december 12.Markó Tamás, PTE TTK12 CUBE Mindegyik ismérv szerint egyenrangúan képez részcsoportokat Példa: SELECT deptno, job, SUM(sal), COUNT(*) AS letszam FROM scott.emp GROUP BY CUBE(deptno, job); részleg szerint is és beosztás szerint is összesít a sorrend felcserélésével ugyanezeket a sorokat kapjuk (csak más sorrendben)
2005. december 12.Markó Tamás, PTE TTK13 CUBE - az eredmény DEPTNO JOB SUM(SAL) LETSZAM CLERK ANALYST MANAGER SALESMAN PRESIDENT CLERK MANAGER PRESIDENT CLERK ANALYST MANAGER CLERK MANAGER SALESMAN sor kijelölve. főösszesen összesítés a részlegre összesítések a beosztásra összesítés a részlegre azonos részleg és azonos beosztás
2005. december 12.Markó Tamás, PTE TTK14 GROUPING SETS Több csoportosítás is képezhető egy lekérdezésben ugyanazokból a rekordokból Példa: SELECT mgr, deptno, job, SUM(sal), count(*) as letszam FROM scott.emp GROUP BY GROUPING SETS ( (mgr, deptno, job), (deptno, job), (mgr) ); három különböző csoportosítás
2005. december 12.Markó Tamás, PTE TTK15 GROUPING SETS – az eredmény 1. MGR DEPTNO JOB SUM(SAL) LETSZAM CLERK MANAGER PRESIDENT CLERK CLERK ANALYST MANAGER CLERK MANAGER SALESMAN azonos főnök, részleg és beosztás (össz. 14 fő)
2005. december 12.Markó Tamás, PTE TTK16 GROUPING SETS – az eredmény 2. MGR DEPTNO JOB SUM(SAL) LETSZAM CLERK MANAGER PRESIDENT CLERK ANALYST MANAGER CLERK MANAGER SALESMAN sor kijelölve. azonos részleg és beosztás (össz. 14 fő) azonos főnök (össz. 14 fő)
2005. december 12.Markó Tamás, PTE TTK17 Analitikus függvények
2005. december 12.Markó Tamás, PTE TTK18 Analitikus rangfüggvények - példa SELECT ename, sal, RANK() OVER (ORDER BY sal DESC) AS normal, DENSE_RANK() OVER (ORDER BY sal DESC) AS tomor, PERCENT_RANK() OVER (ORDER BY sal DESC) AS szazalek FROM scott.emp; ki hányadik a fizetési rangsorban
Analitikus rangfüggvények - eredmény ENAME SAL NORMAL TOMOR SZAZALEK KING SCOTT FORD JONES BLAKE CLARK ALLEN TURNER MILLER WARD MARTIN ADAMS JAMES SMITH sor kijelölve. ugrás
2005. december 12.Markó Tamás, PTE TTK20 Aggregáló rangfüggvények - példa SELECT RANK(4000) WITHIN GROUP (ORDER BY sal DESC) AS normal, DENSE_RANK(4000) WITHIN GROUP (ORDER BY sal DESC) AS tomor, PERCENT_RANK(4000) WITHIN GROUP (ORDER BY sal DESC) AS szazalek FROM scott.emp; Az eredmény: NORMAL TOMOR SZAZALEK hányadik lenne a 4000 a fizetési rangsorban OVER helyett WITHIN GROUP paraméter!
2005. december 12.Markó Tamás, PTE TTK21 Particionálás A sorok részhalmazaira számítja ki az analitikus függvények értékét Példa: SELECT deptno, ename, sal, RANK() OVER ( PARTITION BY deptno ORDER BY sal DESC) AS sorrend FROM scott.emp ORDER BY deptno, ename; a rangokat minden részlegen belül külön kezeli
2005. december 12. Particionálás - az eredmény DEPTNO ENAME SAL SORREND CLARK KING MILLER ADAMS FORD JONES SCOTT SMITH ALLEN BLAKE JAMES MARTIN TURNER WARD sor kijelölve.
2005. december 12.Markó Tamás, PTE TTK23 Statisztikai függvények Az ismert statisztikai függvények az OVER taggal kiegészítve (a működés más) Példa: göngyölített (kumulált) összeg SELECT ename, sal, SUM(sal) OVER (ORDER BY sal) AS kumulalt FROM scott.emp;
24 Kumulált összeg - az eredmény ENAME SAL KUMULALT SMITH JAMES ADAMS WARD MARTIN MILLER TURNER ALLEN CLARK BLAKE JONES SCOTT FORD KING az azonos értékeket egyszerre adja hozzá az azonos értékeket egyszerre adja hozzá
2005. december 12.Markó Tamás, PTE TTK25 Kumulált összeg particionálással 1. SELECT deptno, ename, sal, SUM(sal) OVER (PARTITION BY deptno ORDER BY sal) AS kumulalt FROM scott.emp; részlegenként külön kezdi a kumulálást
Kumulált összeg particionálással 2. DEPTNO ENAME SAL KUMULALT MILLER CLARK KING SMITH ADAMS JONES SCOTT FORD JAMES WARD MARTIN TURNER ALLEN BLAKE
2005. december 12.Markó Tamás, PTE TTK27 Csúszóátlag SELECT ename, sal, AVG(sal) OVER ( ORDER BY sal ROWS BETWEEN 1 PRECEDING AND 1 FOLLOWING) AS csuszoatlag FROM scott.emp; az előző, az aktuális és a következő sor átlaga
28 Csúszóátlag - eredmény ENAME SAL CSUSZOATLAG SMITH JAMES ADAMS WARD MARTIN MILLER TURNER ALLEN CLARK BLAKE JONES SCOTT FORD KING
2005. december 12.Markó Tamás, PTE TTK29 Az analitikus függvények általános alakja Függvénynév ([paraméter]) OVER (analitikus_tag) –analitikus_tag: [particionálás][rendezés [ablak]]