JPivot & Mondrian Urszula Krukar Agnieszka Lewandowska 16 maja 2007 Krukar, Lewandowska (BiHD) JPivot & Mondrian 16 maja 2007 1 / 42
1 Wprowadzenie 2 Pentaho BI Suite 3 Mondrian 4 Schemat kostki 5 JPivot Krukar, Lewandowska (BiHD) JPivot & Mondrian 16 maja 2007 2 / 42
Rynek produktów OLAPowych Krukar, Lewandowska (BiHD) JPivot & Mondrian 16 maja 2007 3 / 42
Najwięksi gracze Krukar, Lewandowska (BiHD) JPivot & Mondrian 16 maja 2007 4 / 42
Open Source Mondrian http://mondrian.pentaho.org/ Palo http://www.palo.net/ serwer MOLAP interfejsy do wielu popularnych baz danych tworzony w pamięci możliwość instalacji jako usługa na serwerze Krukar, Lewandowska (BiHD) JPivot & Mondrian 16 maja 2007 5 / 42
Open Source Mondrian http://mondrian.pentaho.org/ Palo http://www.palo.net/ serwer MOLAP interfejsy do wielu popularnych baz danych tworzony w pamięci możliwość instalacji jako usługa na serwerze Krukar, Lewandowska (BiHD) JPivot & Mondrian 16 maja 2007 5 / 42
Open Source Mondrian http://mondrian.pentaho.org/ Palo http://www.palo.net/ serwer MOLAP interfejsy do wielu popularnych baz danych tworzony w pamięci możliwość instalacji jako usługa na serwerze Krukar, Lewandowska (BiHD) JPivot & Mondrian 16 maja 2007 5 / 42
Pentaho BI Suite Pentaho Business Intelligence Suite Pentaho BI Suite to próba dostarczenia rozwiązania OS na ich potrzeby analizy biznesowej. Jej zaletą jest znacznie szybszy rozwój, ze względu ogromne zaangażowanie społeczności OpenSource. Celem jest nie tylko dostarczenie rozwiązania darmowego, ale również konkurencyjnego pod względem jakości w stosunku do produktów komercyjnych. Krukar, Lewandowska (BiHD) JPivot & Mondrian 16 maja 2007 6 / 42
Raporty Krukar, Lewandowska (BiHD) JPivot & Mondrian 16 maja 2007 7 / 42
Analiza Krukar, Lewandowska (BiHD) JPivot & Mondrian 16 maja 2007 8 / 42
Integracja z MS Excellem Krukar, Lewandowska (BiHD) JPivot & Mondrian 16 maja 2007 9 / 42
Dashboards Krukar, Lewandowska (BiHD) JPivot & Mondrian 16 maja 2007 10 / 42
Integracja danych Krukar, Lewandowska (BiHD) JPivot & Mondrian 16 maja 2007 11 / 42
Eksploracja danych Krukar, Lewandowska (BiHD) JPivot & Mondrian 16 maja 2007 12 / 42
Mondrian serwer OLAP napisany w Javie wspiera analizę bardzo dużych zbiorów danych przechowywanych w relacyjnych bazach danych bez pisania zapytań SQL wspiera wielowymiarową eksploracje danych parsowanie zapytań języka MDX (Multi-Dimensional expression) na SQL Krukar, Lewandowska (BiHD) JPivot & Mondrian 16 maja 2007 13 / 42
Mondrian serwer OLAP napisany w Javie wspiera analizę bardzo dużych zbiorów danych przechowywanych w relacyjnych bazach danych bez pisania zapytań SQL wspiera wielowymiarową eksploracje danych parsowanie zapytań języka MDX (Multi-Dimensional expression) na SQL Krukar, Lewandowska (BiHD) JPivot & Mondrian 16 maja 2007 13 / 42
Mondrian serwer OLAP napisany w Javie wspiera analizę bardzo dużych zbiorów danych przechowywanych w relacyjnych bazach danych bez pisania zapytań SQL wspiera wielowymiarową eksploracje danych parsowanie zapytań języka MDX (Multi-Dimensional expression) na SQL Krukar, Lewandowska (BiHD) JPivot & Mondrian 16 maja 2007 13 / 42
Mondrian serwer OLAP napisany w Javie wspiera analizę bardzo dużych zbiorów danych przechowywanych w relacyjnych bazach danych bez pisania zapytań SQL wspiera wielowymiarową eksploracje danych parsowanie zapytań języka MDX (Multi-Dimensional expression) na SQL Krukar, Lewandowska (BiHD) JPivot & Mondrian 16 maja 2007 13 / 42
Architektura Krukar, Lewandowska (BiHD) JPivot & Mondrian 16 maja 2007 14 / 42
Schemat kostki definicja połączenia między bazą SQL DB, a kostką OLAPową definicja wielowymiarowej bazy danych; składa się z: kostek wymiarów (wraz z podziałem na hierarchie) miar Krukar, Lewandowska (BiHD) JPivot & Mondrian 16 maja 2007 15 / 42
Schemat kostki definicja połączenia między bazą SQL DB, a kostką OLAPową definicja wielowymiarowej bazy danych; składa się z: kostek wymiarów (wraz z podziałem na hierarchie) miar Krukar, Lewandowska (BiHD) JPivot & Mondrian 16 maja 2007 15 / 42
Schemat kostki definicja połączenia między bazą SQL DB, a kostką OLAPową definicja wielowymiarowej bazy danych; składa się z: kostek wymiarów (wraz z podziałem na hierarchie) miar Krukar, Lewandowska (BiHD) JPivot & Mondrian 16 maja 2007 15 / 42
Model hurtowni Krukar, Lewandowska (BiHD) JPivot & Mondrian 16 maja 2007 16 / 42
Kostka W jednym schemacie może być zdefiniowanych ich wiecej niż jedna. Z kilku kostek można stworzyć kostke wirtualną (tag VIRTUAL CUBE). Krukar, Lewandowska (BiHD) JPivot & Mondrian 16 maja 2007 17 / 42
Kostka <Schema name="wycieczki"> <Cube name="kostka Wycieczki" caption="kostka Wycieczki" cache="true" enabled="true"> <Table name="wycieczka"> </Table> </Cube> </Schema> Krukar, Lewandowska (BiHD) JPivot & Mondrian 16 maja 2007 18 / 42
Wymiary W poziomach (tag LEVEL) można definiować własności (tag PROPERTY). Jeden wymiar może się składać z kilku hierarchii. Wymiar może być dzielony przez różne kostki (tag DIMENSION -DIMENSION USAGE), wówczas nie jest definiowany w kostce, tylko w schemacie. Krukar, Lewandowska (BiHD) JPivot & Mondrian 16 maja 2007 19 / 42
Wymiar <Dimension type="standarddimension" foreignkey=" ID_PROMOCJI" name="wymiar Promocja"> <Hierarchy name="hierarchia Promocja" hasall="true" primarykey="id_promocji"> <Table name="promocja"> </Table> <Level name="poziom Promocja" table="promocja" column ="ID_PROMOCJI"> <Property name="czy stala?" column="czy_stala" type ="Boolean"/> </Level> </Hierarchy> </Dimension> Krukar, Lewandowska (BiHD) JPivot & Mondrian 16 maja 2007 20 / 42
Wymiar zdegenerowany <Dimension type="standarddimension" name="wymiar Rodzaj transportu"> <Hierarchy name="hierarchia Rodzaj transportu" hasall=" true"> <Level name="poziom Rodzaj transportu" column=" RODZAJ_TRANSPORTU" type="string" uniquemembers=" false" leveltype="regular" hidememberif="never"> </Level> </Hierarchy> </Dimension> Krukar, Lewandowska (BiHD) JPivot & Mondrian 16 maja 2007 21 / 42
Relacja rodzic-dziecko <Level name="region" column="id_regionu" namecolumn=" NAME" ordinalcolumn="name" parentcolumn=" ID_PARENT" nullparentvalue="brak" type="numeric" uniquemembers="true" leveltype="regular" hidememberif="never"> </Level> Krukar, Lewandowska (BiHD) JPivot & Mondrian 16 maja 2007 22 / 42
Miary Istnieje możliwość zdefiniowania własnych miar z miar istniejących w tabeli faktów (tag CALCULATED MEMBER). Ponadto dzięki możliwością roszerzania języka MDX można definiować własne funkcje (tag USER DEFINED FUNCTION), które mogą być użyte do obliczenia własnych miar. Krukar, Lewandowska (BiHD) JPivot & Mondrian 16 maja 2007 23 / 42
Miara <Measure name="cena" column="cena" aggregator="avg" v i s i b l e="true"> </Measure> Krukar, Lewandowska (BiHD) JPivot & Mondrian 16 maja 2007 24 / 42
Miara wyliczona <CalculatedMember name="profit" caption="profit" formula= "[Measures].[Cena] - [Measures].[Koszt]" dimension=" Measures" v i s i b l e="true"> </CalculatedMember> Krukar, Lewandowska (BiHD) JPivot & Mondrian 16 maja 2007 25 / 42
Kostka wirtualna <VirtualCube name="warehouse and Sales"> <VirtualCubeDimension cubename="sales" name="yearly Income" /> <VirtualCubeDimension cubename="warehouse" name="warehouse "/> <VirtualCubeMeasure cubename="sales" name="[measures].[ Profit Growth]"/> <VirtualCubeMeasure cubename="warehouse" name="[measures].[ Store Invoice]"/> </VirtualCube> Krukar, Lewandowska (BiHD) JPivot & Mondrian 16 maja 2007 26 / 42
Funkcja użytkownika <UserDefinedFunction name="dziel" classname="functions. DivideFunction"> </UserDefinedFunction> Krukar, Lewandowska (BiHD) JPivot & Mondrian 16 maja 2007 27 / 42
Tabele zagregowane Widok zmaterializowany przechowujący wartości zagregowanych miar dla zgrupowanych wymiarów. Optymalizują czas wykonywania zapytań. Krukar, Lewandowska (BiHD) JPivot & Mondrian 16 maja 2007 28 / 42
Tabele zagregowane <Cube name="sales"> <Table name="sales"> <AggName name="agg_1"> <AggFactCount column="row count"/> <AggMeasure name="[measures].[unit Sales]" column="sum units"/> <AggLevel name="[product].[brand]" column="brand"/> </AggName> </Table> <! Rest of the cube definition > </Cube> Krukar, Lewandowska (BiHD) JPivot & Mondrian 16 maja 2007 29 / 42
Funkcje nieomówione i18n system uprawnień Krukar, Lewandowska (BiHD) JPivot & Mondrian 16 maja 2007 30 / 42
Funkcje nieomówione i18n system uprawnień Krukar, Lewandowska (BiHD) JPivot & Mondrian 16 maja 2007 30 / 42
Narzędzia Workshop CubeDesigner ręcznie Krukar, Lewandowska (BiHD) JPivot & Mondrian 16 maja 2007 31 / 42
Narzędzia Workshop CubeDesigner ręcznie Krukar, Lewandowska (BiHD) JPivot & Mondrian 16 maja 2007 31 / 42
Workshop Posiada wiele zalet, w tym: przeglądanie schematu DB weryfikacja poprawności pliku z DB testowanie zapytań MDX uproszczenie tworzenia pliku z definicją kostki Krukar, Lewandowska (BiHD) JPivot & Mondrian 16 maja 2007 32 / 42
Workshop Posiada wiele zalet, w tym: przeglądanie schematu DB weryfikacja poprawności pliku z DB testowanie zapytań MDX uproszczenie tworzenia pliku z definicją kostki Krukar, Lewandowska (BiHD) JPivot & Mondrian 16 maja 2007 32 / 42
Workshop Posiada wiele zalet, w tym: przeglądanie schematu DB weryfikacja poprawności pliku z DB testowanie zapytań MDX uproszczenie tworzenia pliku z definicją kostki Krukar, Lewandowska (BiHD) JPivot & Mondrian 16 maja 2007 32 / 42
Workshop Posiada wiele zalet, w tym: przeglądanie schematu DB weryfikacja poprawności pliku z DB testowanie zapytań MDX uproszczenie tworzenia pliku z definicją kostki Krukar, Lewandowska (BiHD) JPivot & Mondrian 16 maja 2007 32 / 42
Workshop Krukar, Lewandowska (BiHD) JPivot & Mondrian 16 maja 2007 33 / 42
API import mondrian.olap.*; import java.io.printwriter; Connection connection = DriverManager.getConnection( "Provider=mondrian;" + "Jdbc=jdbc:odbc:MondrianFoodMart;" + "Catalog=/WEB-INF/FoodMart.xml;", null, false); Query query = connection.parsequery( "SELECT {[Measures].[Unit Sales], [Measures].[Store Sales]} on columns," + " {[Product].children} on rows " + "FROM [Sales] " + "WHERE ([Time].[1997].[Q1], [Store].[CA].[San Francisco])"); Result result = connection.execute(query); result.print(new PrintWriter(System.out)); Krukar, Lewandowska (BiHD) JPivot & Mondrian 16 maja 2007 34 / 42
Konfiguracja Konfiguracja przechowywana jest w pliku mondrian.properties, który powinien znajdowac się w classpath. Alternatywnie, ustawienia konfiguracyjne można przekazać jako parametry uruchomienia maszyny virtualnej: -Dproperty=value Poprzez plik properties można kontrolować ustawienia Mondriana dotyczące: logowania, wykorzystania tabel zagregowanych, ustawienia pamięci podręcznej, generowania zapytań SQL, monitorowania zużycia pamięci. Krukar, Lewandowska (BiHD) JPivot & Mondrian 16 maja 2007 35 / 42
Przykładowe ustawienia mondrian.rolap.aggregates.use - czy korzystać z tabel zagregowanych mondrian.rolap.star.disablecaching - czy przechowywać wyniki w pamięci pośredniej mondrian.query.limit - limit na liczbę współbieżnych zapytań mondrian.rolap.largedimensionthreshold - kiedy wymiar jest uważany za duży Krukar, Lewandowska (BiHD) JPivot & Mondrian 16 maja 2007 36 / 42
Przykładowe ustawienia mondrian.rolap.aggregates.use - czy korzystać z tabel zagregowanych mondrian.rolap.star.disablecaching - czy przechowywać wyniki w pamięci pośredniej mondrian.query.limit - limit na liczbę współbieżnych zapytań mondrian.rolap.largedimensionthreshold - kiedy wymiar jest uważany za duży Krukar, Lewandowska (BiHD) JPivot & Mondrian 16 maja 2007 36 / 42
Przykładowe ustawienia mondrian.rolap.aggregates.use - czy korzystać z tabel zagregowanych mondrian.rolap.star.disablecaching - czy przechowywać wyniki w pamięci pośredniej mondrian.query.limit - limit na liczbę współbieżnych zapytań mondrian.rolap.largedimensionthreshold - kiedy wymiar jest uważany za duży Krukar, Lewandowska (BiHD) JPivot & Mondrian 16 maja 2007 36 / 42
Przykładowe ustawienia mondrian.rolap.aggregates.use - czy korzystać z tabel zagregowanych mondrian.rolap.star.disablecaching - czy przechowywać wyniki w pamięci pośredniej mondrian.query.limit - limit na liczbę współbieżnych zapytań mondrian.rolap.largedimensionthreshold - kiedy wymiar jest uważany za duży Krukar, Lewandowska (BiHD) JPivot & Mondrian 16 maja 2007 36 / 42
Zarządzanie pamięcią W Javie 5.0 wprowadzono możliwość kontroli zużycia pamięci. Aplikacja może zostać poinformowana o kończącej się pamięci, w reakcji zwolnić zaalokowane zasoby i uniknąć w ten sposób błędu OutOfMemoryError. Mondrian od wersji 3.2 wykorzystuje tą możliwość. mondrian.util.memorymonitor.enable - czy należy monitorować zużycie pamięci mondrian.util.memorymonitor.percentage.threshold - przy jakim zużycie ostrzegać Krukar, Lewandowska (BiHD) JPivot & Mondrian 16 maja 2007 37 / 42
Zarządzanie pamięcią W Javie 5.0 wprowadzono możliwość kontroli zużycia pamięci. Aplikacja może zostać poinformowana o kończącej się pamięci, w reakcji zwolnić zaalokowane zasoby i uniknąć w ten sposób błędu OutOfMemoryError. Mondrian od wersji 3.2 wykorzystuje tą możliwość. mondrian.util.memorymonitor.enable - czy należy monitorować zużycie pamięci mondrian.util.memorymonitor.percentage.threshold - przy jakim zużycie ostrzegać Krukar, Lewandowska (BiHD) JPivot & Mondrian 16 maja 2007 37 / 42
Zarządzanie pamięcią W Javie 5.0 wprowadzono możliwość kontroli zużycia pamięci. Aplikacja może zostać poinformowana o kończącej się pamięci, w reakcji zwolnić zaalokowane zasoby i uniknąć w ten sposób błędu OutOfMemoryError. Mondrian od wersji 3.2 wykorzystuje tą możliwość. mondrian.util.memorymonitor.enable - czy należy monitorować zużycie pamięci mondrian.util.memorymonitor.percentage.threshold - przy jakim zużycie ostrzegać Krukar, Lewandowska (BiHD) JPivot & Mondrian 16 maja 2007 37 / 42
JPivot niestandardowa biblioteka tagów JSP renderuje tabele OLAPowe wykonuje typowe OLAPowe nawigacje, takie jak slice, dice, drill down, roll up współpracuje z Mondrianem Krukar, Lewandowska (BiHD) JPivot & Mondrian 16 maja 2007 38 / 42
JPivot niestandardowa biblioteka tagów JSP renderuje tabele OLAPowe wykonuje typowe OLAPowe nawigacje, takie jak slice, dice, drill down, roll up współpracuje z Mondrianem Krukar, Lewandowska (BiHD) JPivot & Mondrian 16 maja 2007 38 / 42
JPivot niestandardowa biblioteka tagów JSP renderuje tabele OLAPowe wykonuje typowe OLAPowe nawigacje, takie jak slice, dice, drill down, roll up współpracuje z Mondrianem Krukar, Lewandowska (BiHD) JPivot & Mondrian 16 maja 2007 38 / 42
JPivot niestandardowa biblioteka tagów JSP renderuje tabele OLAPowe wykonuje typowe OLAPowe nawigacje, takie jak slice, dice, drill down, roll up współpracuje z Mondrianem Krukar, Lewandowska (BiHD) JPivot & Mondrian 16 maja 2007 38 / 42
Web Component Framework Zbiór reużywalnych znaczników JSP, przeznaczonych do tworzenia formularzy, tabel i drzew na stronach WWW. Buduje drzewo DOM a następnie wykorzystując transformacje XSLT renderuje je. http://jpivot.sourceforge.net/wcf/ Krukar, Lewandowska (BiHD) JPivot & Mondrian 16 maja 2007 39 / 42
Tagi JPivot mondrianquery - wykonuje zapytanie i przechowuje jego treść w atrybucie sesji chart - generuje wykres table - generuje tablele przestawną Krukar, Lewandowska (BiHD) JPivot & Mondrian 16 maja 2007 40 / 42
Tagi JPivot mondrianquery - wykonuje zapytanie i przechowuje jego treść w atrybucie sesji chart - generuje wykres table - generuje tablele przestawną Krukar, Lewandowska (BiHD) JPivot & Mondrian 16 maja 2007 40 / 42
Tagi JPivot mondrianquery - wykonuje zapytanie i przechowuje jego treść w atrybucie sesji chart - generuje wykres table - generuje tablele przestawną Krukar, Lewandowska (BiHD) JPivot & Mondrian 16 maja 2007 40 / 42
Podsumowanie ciekawa alternatywa dla systemów komercyjnych słaba dokumentacja API narzędzia do tworzenia schematów niedoskonałe (ale już są!) warto obserwować rozwój aplikacji Krukar, Lewandowska (BiHD) JPivot & Mondrian 16 maja 2007 41 / 42
Podsumowanie ciekawa alternatywa dla systemów komercyjnych słaba dokumentacja API narzędzia do tworzenia schematów niedoskonałe (ale już są!) warto obserwować rozwój aplikacji Krukar, Lewandowska (BiHD) JPivot & Mondrian 16 maja 2007 41 / 42
Podsumowanie ciekawa alternatywa dla systemów komercyjnych słaba dokumentacja API narzędzia do tworzenia schematów niedoskonałe (ale już są!) warto obserwować rozwój aplikacji Krukar, Lewandowska (BiHD) JPivot & Mondrian 16 maja 2007 41 / 42
Podsumowanie ciekawa alternatywa dla systemów komercyjnych słaba dokumentacja API narzędzia do tworzenia schematów niedoskonałe (ale już są!) warto obserwować rozwój aplikacji Krukar, Lewandowska (BiHD) JPivot & Mondrian 16 maja 2007 41 / 42
Dziękujemy za uwagę! Krukar, Lewandowska (BiHD) JPivot & Mondrian 16 maja 2007 42 / 42