-- -- user_molap2/user_molap2@lab10g -- set serveroutput on exec DBMS_AW.EXECUTE('AW CREATE test_ws;') exec DBMS_AW.EXECUTE('AW DELETE test_ws;') exec DBMS_AW.EXECUTE('UPDATE; COMMIT;') exec DBMS_AW.EXECUTE('AW ATTACH test_ws RW;') ------------------------------------------------------------ -- definiowanie wymiarów ------------------------------------------------------------ exec DBMS_AW.EXECUTE('DEFINE sklepy DIMENSION TEXT W 15; - DEFINE produkty DIMENSION TEXT W 20; - DEFINE czas DIMENSION TEXT W 15;') ------------------------------------------------------------ -- definiowanie miar/kostek ------------------------------------------------------------ exec DBMS_AW.EXECUTE('DEFINE l_sztuk VARIABLE DECIMAL ;') exec DBMS_AW.EXECUTE('DEFINE wartosc VARIABLE DECIMAL ;') ------------------------------------------------------------ -- wypełnianie wymiarów danymi ------------------------------------------------------------ -- wczytanie danych do wymiaru z tabeli sklepy -- exec DBMS_AW.EXECUTE('DELETE wczytaj_sklepy;'); exec DBMS_AW.EXECUTE('INFILE olap_dir/wczytaj_sklepy.sql'); exec DBMS_AW.EXECUTE('COMPILE wczytaj_sklepy'); exec DBMS_AW.EXECUTE('CALL wczytaj_sklepy'); exec DBMS_AW.EXECUTE('SHOW VALUES (sklepy);') exec DBMS_AW.EXECUTE('REPORT sklepy;') exec DBMS_AW.EXECUTE('MAINTAIN produkty ADD ''Eternity'' ''Polo'' ''Adidas'' ''STR8'' - ''Rioja'' ''Bordeaux'' ''Żubrówka'' ''Dębowa'';') exec DBMS_AW.EXECUTE('SHOW VALUES (produkty);') exec DBMS_AW.EXECUTE('MAINTAIN czas ADD ''styczeń'' ''luty'' ''marzec'';') exec DBMS_AW.EXECUTE('SHOW VALUES (czas);') ------------------------------------------------------------ -- wypełnianie miar/kostek danymi wczytanymi z tabeli faktów -- wykorzystanie programu i kursora ------------------------------------------------------------ create or replace view v_sprzedaz as select sk.nazwa sklep, pr.prod_nazwa produkt, cz.nazwa_miesiaca miesiac, sp.l_sztuk, sp.wartosc from sprzedaz sp, sklepy sk, produkty pr, czas cz where sp.sklep_id=sk.sklep_id and sp.produkt_id=pr.produkt_id and sp.data=cz.data; exec DBMS_AW.EXECUTE('REPORT W 18 DOWN produkty W 7 ACROSS sklepy: l_sztuk;') exec DBMS_AW.EXECUTE('DELETE wczytaj_sprzedaz1'); exec DBMS_AW.EXECUTE('INFILE olap_dir/wczytaj_sprzedaz1.sql'); exec DBMS_AW.EXECUTE('COMPILE wczytaj_sprzedaz1'); exec DBMS_AW.EXECUTE('CALL wczytaj_sprzedaz1'); exec DBMS_AW.EXECUTE('REPORT W 18 DOWN produkty W 7 ACROSS sklepy: l_sztuk;') ------------------------------------------------------------ -- wyświetlanie kostki ------------------------------------------------------------ set linesize 110 exec DBMS_AW.EXECUTE('ALLSTAT;') exec DBMS_AW.EXECUTE('REPORT W 18 DOWN produkty W 7 ACROSS sklepy: l_sztuk;') ------------------------------------------------------------ ------------------------------------------------------------ -- CONCAT DIMENSION ------------------------------------------------------------ ------------------------------------------------------------ exec DBMS_AW.EXECUTE('DEFINE d_prod_nazwa DIMENSION TEXT W 17; - DEFINE d_prod_rodzaj DIMENSION TEXT W 16; - DEFINE d_prod_kategoria DIMENSION TEXT W 10;') exec DBMS_AW.EXECUTE('DEFINE d_produkty DIMENSION CONCAT (d_prod_kategoria - d_prod_rodzaj - d_prod_nazwa);') exec DBMS_AW.EXECUTE('DEFINE rel_d_produkty RELATION d_produkty ;') --exec DBMS_AW.EXECUTE('DEFINE sklepy DIMENSION TEXT W 15; - -- DEFINE czas DIMENSION TEXT W 15;') exec DBMS_AW.EXECUTE('DEFINE sprzedane VARIABLE DECIMAL ;') exec DBMS_AW.EXECUTE('REPORT d_produkty;') exec DBMS_AW.EXECUTE('DELETE wczytaj_produkty;'); exec DBMS_AW.EXECUTE('INFILE olap_dir/wczytaj_produkty.sql'); exec DBMS_AW.EXECUTE('COMPILE wczytaj_produkty'); exec DBMS_AW.EXECUTE('CALL wczytaj_produkty'); exec DBMS_AW.EXECUTE('REPORT W 40 d_produkty d_prod_nazwa;') exec DBMS_AW.EXECUTE('REPORT W 40 d_prod_nazwa;') exec DBMS_AW.EXECUTE('REPORT W 50 DOWN d_produkty W 50 rel_d_produkty;') exec DBMS_AW.EXECUTE('DELETE wczytaj_sprzedaz2'); exec DBMS_AW.EXECUTE('INFILE olap_dir/wczytaj_sprzedaz2.sql'); exec DBMS_AW.EXECUTE('COMPILE wczytaj_sprzedaz2'); exec DBMS_AW.EXECUTE('CALL wczytaj_sprzedaz2'); exec DBMS_AW.EXECUTE('REPORT W 18 DOWN d_prod_nazwa W 7 ACROSS sklepy: sprzedane'); ------------------------------------------------------------ -- AGGREGATION MAP w wymiarze produkty ------------------------------------------------------------ exec DBMS_AW.EXECUTE('INFILE olap_dir/def_aggmap_prod.sql'); exec DBMS_AW.EXECUTE('DESCRIBE prod_aggmap;') --exec DBMS_AW.EXECUTE('DELETE prod_aggmap;'); exec DBMS_AW.EXECUTE('ALLSTAT') --exec DBMS_AW.EXECUTE('sprzedane(sklepy ''SKLEP1'', d_prod_nazwa ''STR8'', czas ''styczeń'')=10;') --exec DBMS_AW.EXECUTE('sprzedane(sklepy ''SKLEP1'', d_prod_nazwa ''Polo'', czas ''styczeń'')=10;') exec DBMS_AW.EXECUTE('REPORT W 35 DOWN d_produkty sprzedane;') exec DBMS_AW.EXECUTE('AGGREGATE sprzedane USING prod_aggmap;') exec DBMS_AW.EXECUTE('REPORT W 35 DOWN d_produkty sprzedane;') exec DBMS_AW.EXECUTE('ALLSTAT;') exec DBMS_AW.EXECUTE('REPORT W 35 TOTAL (sprzedane, d_prod_nazwa);') --exec DBMS_AW.EXECUTE('REPORT TOTAL (sprzedane d_prod_nazwa);') exec DBMS_AW.EXECUTE('REPORT W 35 TOTAL (sprzedane d_prod_rodzaj);') exec DBMS_AW.EXECUTE('REPORT W 35 TOTAL (sprzedane d_prod_kategoria);') exec DBMS_AW.EXECUTE('REPORT W 35 TOTAL (sprzedane, d_produkty);') exec DBMS_AW.EXECUTE('LIMIT czas TO FIRST 4; - REPORT HEADING ''Largest'' LARGEST(sprzedane, d_prod_nazwa);') exec DBMS_AW.EXECUTE('ALLSTAT; - REPORT WIDTH 18 HEADING ''Średnia/Sklep'' AVERAGE(sprzedane, sklepy);') ------------------------------------------- exec DBMS_AW.EXECUTE('UPDATE; COMMIT;') exec DBMS_AW.EXECUTE('AW DETACH test_ws;') exec DBMS_AW.EXECUTE('AW DELETE test_ws;')