pondělí 30. června 2008

Klonování reportů pomocí XML zobrazení

Omlouvám se za poněkud brutální metodu výroby reportů, ale byla vyvolána potřebou vyvinout poměrně rychle sadu reportů, které jsou hodně podobné.

Ukázkový report vypadá asi takto:


A aby byl hezký, doplníme nadpis s logem ...


... a na závěr jej obdaříme promptem pro výběr distribučního kanálu.


Výsledek:


Nyní potřebujeme podobný report, ten však nebude obsahovat sloupec Rok, ale Mesic. Report vytvoříme pomocí klonování a úpravy XML definice.

Klikneme na záložku "Pokročilé" a celý obsah okna “Žádost XML“ ...


... nabereme do clipboardu. Otevřeme libovolný editor a vložíme do něj obsah schránky.

Ve Wordu vybereme záložku Úpravy – Nahradit a nahradíme slovo Rok slovem Mesic ...


... zvolíme "Nahradit vše". Nyní do clipboardu nabereme upravený text z Wordu a nahradíme jím XML kód v okně “Žádost XML“. Poté zvolíme “Nastavit XML“ a klonovaný report můžeme uložit pod jiným jménem než byl originál.

Ukázka klonovaného reportu:


Můžete si vyzkoušet, že změna funguje i v promptu, dokonce je možné nahradit výběr sloupce Rok v promptu sloupcem Mesic. Funguje dokonce i pro loga (namísto Rok1_logo.jpg se podalo logo Mesic1_logo.jpg) a samozřejmě funguje i pro kontingenční tabulky a grafy.

Je to skvělý pocit, když takto naklonujete komplikovaný report, kde se samotné nahrazení názvů položek provede třeba třicetkrát! Samozřejmě, klonování má své meze. Pokud funguje, je to odměna za dobré a přehledné konstruování reportů a rozumně volené názvy objektů.


Příspěvek vytvořil a zaslal Jiří Doubravský - BI/DW konzultant společnosti PIKE Electronic. Díky!

Prezentováno na 1. Oracle Czech BI/DW Experts Bootcampu v sekci Úlohy, které jsem vyřešil a chci se o ně podělit s ostatními.

čtvrtek 26. června 2008

Zapomenuté heslo uživatele oc4jadmin

V případě, že chcete na OS Windows odinstalovat Oracle BI EE/SE-1, tak jste tázáni na heslo administrátora (oc4jadmin) Oracle Containeru for Java. V případě, že jste heslo zapoměli, pak není možné korektně aplikaci odinstalovat :(

... ale nezoufejte, zapomenuté heslo najdete v Start > All Programs > Oracle Business Intelligence > Stop OC4J > Vlastnosti :)


Poznámka k provozu z pohledu bezpečnosti - máte na výběr:
  • smazat ikonu "Stop OC4J" a vytvořit plnohodnotnou službu Windows pro start a stop OC4J na pozadí, postup najdete zde

  • použít plnohodnotný Oracle Application Server nebo jiný certifikovaný AS, seznam najdete zde

Erik Eckhardt.

pondělí 23. června 2008

Interaktivní mapy na dashboardu

V souvislosti s OBI se často mluví o interaktivnosti, podpoře standardů, otevřenosti řešení. Že to nejsou jen prázdné pojmy se pokusím dokázat v následujícím příspěvku.


O co jde?
Uživatelé jistě ocení rozšíření analytických možností při zachování komfortu prostředí interaktivního dashboardu. Pro zkoumání dat z geografického hlediska můžeme analytikům nabídnout interaktivní mapu, do které jsou zaintegrovány informace z OBI.


K tomu, abychom zobrazili mapu na dashboardu a provázali ji s dalším obsahem není nutné být programátor a složitě integrovat draze zakoupený geografický software. Stačí využít možností, které nám poskytuje internet. Proč bychom tedy řešili něco, co někdo vyřešil za nás? Například portál atlas.cz nebo Google Maps (viz. ukázka využití Oracle BI v praxi) poskytuje na svých stránkách interaktivní mapy, k nimž je zároveň k dispozici otevřené API rozhraní, kterým je možno zobrazení mapy ovlivňovat. To nám umožní přímo z dashboardu zobrazit požadovaný výsek mapy v patřičném detailu, navíc s označením zvoleného města. Dodatečnou informaci o prodejích ve městě mohu získat v bublině. Ta je sice součástí mapy, ale díky tomu, že na konkrétní report v OBI se lze odkázat pomocí URL, mohu zajistit plnohodnotné zobrazení správně vyfiltrované sestavy týkající se daného města.


Přípravné práce
Předpokladem je, že v prezentační vrstvě máme k dispozici faktovou tabulku s navázanou geografickou dimenzí. V mém případě ji tvoří tabulka českých a slovenských měst (id a název) zařazeným do příslušného regionu a státu. Takto definovanou dimenzi je třeba pro naše účely rozšířit o sloupeček GPS do kterého vložíme GPS souřadnice každého města (upravené URL encoderem, např. pomocí http://www.opinionatedgeek.com/DotNet/Tools/
UrlEncode/Encode.aspx). Ty později využijeme pro volání požadované části mapy. Nový sloupeček je samozřejmě nutné zpropagovat přes fyzický a business model do příslušného prezentačního katalogu.

Faktová tabulka je kromě geografické dimenze dimenzována podle času (rok, měsíc, den) a dle produktů (kategorie produktů, produkt). Jsou v ní uloženy ukazatele Tržby, Náklady, Zisk a prodané jednotky.


Abychom mohli využívat API pro mapy na Atlas.cz, je třeba se zaregistrovat na adrese
http://amapy.atlas.cz/api/registration.aspx. Je zde také k prostudování dokumentace „AMapy API“, zejména příklady použití. Dále je potřeba mít povolené použití HTML a JavaScriptu v rámci Oracle BI reportů a dashboardů, návod naleznete zde.


Trocha JavaScriptu
Předtím, než přistoupíme k tvorbě reportů, je třeba si připravit pomocnou HTML stránku, přes kterou budeme komunikovat s Atlas mapami. Stránku musím umístit do adresáře webového serveru, v mém případě je to adresář Tomcatu (c:\Program Files\Tomcat 6.0\webapps\analytics\), jinak většinou adresář serveru přibaleného k OBI ($BI_HOME\oc4j_bi\j2ee\home\applications\analytics\analytics\).

Stěžejní částí celého postupu je kód této HTML stránky, která v hlavičce "HEAD" obsahuje JavaScriptové volání API funkcí specifikujících zobrazení mapy, v těle "BODY" pak definici velikosti oblasti "DIV", ve které se mapa objeví. Na tuto stránku se pak budeme z OBI odkazovat spolu s parametry, které API funkcím předají informaci o tom, které město se má označit.

Nejprve je třeba v hlavičce zavolat odkaz na JavaScript:

Poté s využitím dokumentace a příkladů k API může JavaScript vypadat například takto:


Kurzívou označená hodnota parametru maxUrl v kódu definuje URL odkaz na report, který se má zobrazit uvnitř mapy v bublině. Příslušný report zatím nemáme vytvořený, doplnění hodnoty můžeme nechat na později.

V samotném těle HTML dokumentu nám již stačí jen zavolat:



Příprava reportů
Nyní již máme vše připraveno k tomu, abychom mohli začít pracovat v Answers. K demonstraci řešení budeme potřebovat tři reporty:
  1. Navigační report – jednoduchý seznam měst, který použijeme pro nastavení mapy.
  2. Mapa – report, který zajistí samotné zobrazení mapy.
  3. Vnitřní report – report, který se objeví v bublině uvnitř mapy.

Navigační report je obyčejný číselník měst, které jsou pro přehlednost rozřazeny do regionů. Později, až budeme mít připravenu dashboardovou stránku zde doplníme ještě navigační link.


Zobrazení samotné mapy zajistíme zvláštním reportem, ve kterém využijeme typ zobrazení Narrative. Do výběru zařadíme sloupce Město, GPS a ID_mesta a přidáme filtr na jedno z měst. Ten slouží jako defaultní nastavení (v tomto případě nedoporučuji využít filtr typu „Is Prompted“ / "Obsahuje výzvu").

Do složeného zobrazení zařadíme jediný prvek Narrative (Popis) a do jeho těla vložíme následující HTML kód:


Kde místo localhost:8080 doplňte jméno a port vlastního serveru. Tím zajistíme zobrazení dříve připravené stránky jako součást reportu. Zároveň v URL předáváme parametry pomocí proměnných @číslo_sloupce, pomocí kterých je API funkcím předávána informace o tom, které město má být zobrazeno.


Třetím krokem je report, který se objeví v bublině uvnitř mapy. V něm uživateli předložíme podrobné informace o zvoleném městě. V mém případě jsem k městu zařadil několik ukazatelů s vazbou na časovou dimenzi (rok). Do filtru zařadíme číselný sloupec ID_mesta jako „Is Prompted“, který využijeme pro předání parametru.

Report upravíme do požadovaného zobrazení.


Po uložení se můžeme zpět vrátit k editaci HTML stránky s JavaSriptem a doplnit k hodnotě parametru maxURL správnou cestu k tomuto reportu.

http://localhost:8080/analytics/saw.dll?GO&Path=/shared//& Action=Navigate&P0=1&P1=eq&P2=Obchody.ID_mesta&P3='+id_mesta

V argumentu P2 je zadáno jméno tabulky a sloupečku (prezentační), dle kterého filtruji, do P3 předávám hodnotu JavaScript proměnné id_mesta. Více o zobrazení reportu či dashboardu pomocí URL naleznete v administrátorské dokumentaci k prezentačnímu serveru (Presentation Services Administration Guide) v kapitole Integrating Oracle BI Presentation Services into Corporate Environments Using HTTP.


Tvorba Dashboardu a revize výsledku
Nyní nám už stačí jen všechny připravené komponenty poskládat na jeden dashboard. Pro naše účely si vytvoříme zvláštní dashboard, nebo alespoň samostatnou stránku. Na něj zařadíme jednak navigační report a také samotný report s mapou.


Po uložení dashboardu se ještě vrátíme k editaci navigačního reportu, kde ve vlastnostech sloupce Město nastavíme navigaci na hodnoty. Jako cíl zvolíme právě vytvořenou dashboardovou stránku.



Rekapitulace - Fungující řešení dle popsaného postupu by mělo vypadat následovně:
V navigačním reportu na dashboardu klikneme na jedno z měst. Na akci zareaguje report s mapou, který označí vybrané město. V bublině uvnitř mapy, která ukazuje na zvolené město, se po maximalizaci zobrazí detailní report ke konkrétnímu městu.

A podrobněji:
  1. Kliknutím na konkrétní město v navigačním reportu si zavoláme znovu stránku, kterou máme zobrazenu. Na kliknutí ale zareaguje filtr v reportu s mapou (který není chráněný) a nastaví se zvolené město.
  2. Report s mapou přiřadí zvolenému městu příslušné ID_mesta a gps souřadnici. Tyto hodnoty předá jako URL parametry externí HTML stránce, kterou jsme si na začátku připravili.
  3. Tato stránka je schopna ve svém JavaScript kódu využít předané parametry jednak pro specifické volání API funkcí map na Atlas.cz a jednak pro sestavení URL pro zobrazení reportu v bublině pomocí URL.

Příspěvek vytvořil a zaslal Jakub Genža - BI/DW konzultant společnosti Sophia Solutions. Jakube díky!

Prezentováno na 1. Oracle Czech BI/DW Experts Bootcampu v sekci Úlohy, které jsem vyřešil a chci se o ně podělit s ostatními.

středa 18. června 2008

Oracle Data Integrator - prezentace ze semináře Oracle Coffee

Dnes ráno proběhl pravidelný seminář - Ranní káva s Oracle technologiemi, tentokrát na téma Oracle Data Integrator. Prezentaci ze semináře si můžete stáhnout zde.


eec.

pondělí 16. června 2008

Oracle BI Metadata repository – VII. Nasazení do provozu

V článku "Oracle BI Metadata repository – VI. Nastavení časové dimenze a tvorba ukazatelů pro časové porovnávání" je popsán "step-by-step" postup jak se v Business modelu nastaví časová dimenze, a jak se vytvoří ukazatele pro časové porovnávaní typu "období"Ago a "období"ToDate.

Cílem dnešního a zároveň posledního článku v sérii o základech budování BI Metadata repository (pro OBI EE / OBI SE One) je ukázat "step-by-step" postup, jak vše výše/dříve uvedené dát do provozu, a tím zpřístupnit koncovým uživatelům pro reporting a analýzy.

Výsledné BI Metadata repository zpřístupněné uživatelům pro reporting a analýzy


1. BI Metadata repository uložte a nechte zkontrolovat konzistenci (Chybové zprávy typu Warning můžete ignorovat)


2. Zavřete Oracle BI Administration Tool

3. Zastavte službu Oracle BI Server (v případě, že běží)


4. Nastavte nově vytvořené BI Metadata repository „EECDWH.rpd“ jako „defaultní“ repository, které se bude startovat při spuštění Oracle BI Serveru.
  • a/ otevřete soubor "BI_HOME"\server\Config\NQSConfig.INI

  • b/ do sekce [ REPOSITORY ] vložte řádek: Star = EECDWH.rpd, DEFAULT;

  • c/ ostatní repository (řádky Star=) zakomentujte pomocí #

5. Nastartujte službu Oracle BI Server
Poznámka: Jestliže vyměníte celé repository nebo jste ve stávajícím provedli
(offline) změny v Prezentační vrstvě, vyplatí se po startu BI Serveru restartovat i BI Presentation Server. V případě, že tak neuděláte, pak musíte manuálně "Znovu načíst soubory a metadata" (Menu Správa služeb Oracle BI Presentation Services) a promazat Cache internetového prohlížeče (Ctrl+F5) - jinak se může stát, že neuvidíte provedené změny.


6. Spusťte webový prohlížeč s adresou Oracle BI (http://localhost:9704/analytics) a zalogujte se


7. Vyberte BI Answers > Cílová oblast „Prodeje“ ...


... a na základě zpřístupněných BI metadat vyzkoušejte jejich funkcionalitu - jako je drilování po hierarchii, výpočet zisku, pořadí, level-based ukazatele, poměrové ukazatele a ukazatele zobrazující minulost



Více návodů k OBI EE / OBI SE One naleznete v sekcích OBI EE FAQ a OBI SE ONE - FAQ. Kompletní přehled všech článků seřazený dle kategorií najdete zde.

Erik Eckhardt.

čtvrtek 12. června 2008

Zobrazení celkového počtu záznamů ve výběru

Jak bylo popsáno v příspěvku „Počet záznamů u kombinovaných dotazů“, přidáme-li do libovolného výběru sloupec obsahující funkci COUNT(1), pak hodnota tohoto sloupce ukazuje pořadové číslo řádku ve výběru.

Tuto vlastnost lze velmi jednoduše použít také k zobrazení číselného údaje podávajícího informaci o celkovém počtu řádku, které daný výběr obsahuje.

Příklad použití: Máme velmi jednoduchý výběr


Jak je zřejmé z kriterií je výstup všech produktů, jejichž počet v roce 2006 je větší nebo rovný 100 000 ks.


Je zřejmé, že toto kriterium splňuje více produktů. Pro zjištění kolik si pomocí funkce RCOUNT(1) zobrazíme pro každý řádek jeho pořadové číslo


Výsledkem je:


A použijeme-li na sloupec RCOUNT(1) agregační funkci MAX() ….


Pak dostaneme výstup


Poslední sloupec již obsahuje počet řádku. Z estetických důvodu jej ve volbě “Formát sloupce“ označíme jako skrytý a protože jeho hodnota je stejná ve všech řádcích, umístíme jej do zobrazení "Popis".


A výsledkem složeného rozložení je pak



Příspěvek vytvořil a zaslal Jiří Doubravský - BI/DW konzultant
společnosti PIKE Electronic. Díky!

(Požadavek pro řešení této úlohy vznikl na 1. Oracle Czech BI/DW Experts Bootcampu).

pondělí 9. června 2008

Oracle BI Metadata repository – VI. Nastavení časové dimenze a tvorba ukazatelů pro časové porovnávání

V článku "Oracle BI Metadata repository – V. Nastavení hierarchií pro dimenze, tvorba level-based a poměrových ukazatelů" je popsán "step-by-step" postup jak se v Business modelu vytvářejí hierarchie pro dimenze, a jak se na jejich základě vytvářejí level-based a poměrové ukazatele.

Cílem tohoto článku je ukázat "step-by-step" postup jak se v Business modelu nastaví časová dimenze, jak se vytvoří ukazatele pro časové porovnávaní (např. Výnosy zobrazující stav před určitým obdobím nebo YearToDate Výnosy). Dále pak, jak se jednoduše vytvoří ukazatele zobrazující změny (např. rozdíl, procenta, index), a nakonec, jak lze vše rozkategorizovat do složek a zpřístupnit koncovým uživatelům pro analytiku.

Výsledná Prezentační vrstva a Business model doplněny o ukazatele pro časové porovnávání


A/ Nastavení časové dimenze
Poznámka: Potřebujete-li vytvářet ukazatele typu "obdobíAgo" nebo "obdobíToDate", pak je nutné označit hierarchii časové dimenze příznakem "Time dimension".
V případě samotné fyzické tabulky pro časovou dimenzi je vhodné, aby datový typ sloupců pro jednotlivé úrovně (např. ROK=2008, MĚSÍC=200812) byl řetězec (STRING) - není vhodné používat číselný typ (NUMBER). Důvod je ten, že v případě použití číselného typu se ve fyzické vrstvě BI metadata repository použije typ DOUBLE (samozřejmě záleží o jaký fyzický datový typ jde), který pro "ROK=2008" bude zobrazovat hodnotu "2008,00". Toto pak může zapříčinit nesprávné fungování a počítání "Ago" ukazatelů
při drilování hodnot.

1. V Business Modelu „Prodeje“ vyberte stávající hierarchii časové dimenze DIM_OBDOBI > pravé tlačítko myši > Properties ... > a zde zaškrtněte checkbox "Time dimension"


2. Na úroveň KVARTAL v hierarchii DIM_OBDOBI přidejte sloupec KVARTAL_ID (sloupec z dimenze D_OBDOBI$ - jde o PK tabulky) a označte jej jako nový logický klíč (Drag&Drop přesuňte sloupec z dimenze do hierarchie > pravé tlačítko myši > New Logical Level Key ...)
Poznámka: Chronological key je sloupec obsahující postupně se zvětšující hodnotu v čase. Na datové typu klíče nezáleží, může jím být typ číselný, řetězec nebo datum. Klíčem by měl být zvolen sloupec, který je primárním klíčem dimenzní tabulky, tj. přes tento sloupec je proveden join mezi tabulkou dimenzní a faktovou.


3. Sloupec KVARTAL_ID označte jako Chronological Key (vyberte úroveň KVARTAL > pravé tlačítko myši > Properties ... > záložka Keys)



B/ Tvorba ukazatele zobrazující stav před obdobím
1. Do faktové tabulky F_PRODEJ$ založte nový logický sloupec pro ukazatel VYNOS_PRED_CTVRTLETIM, který bude počítán z již stávajícího ukazatele (v Business Modelu „Prodeje“ vyberte tabulku F_PRODEJ$ > pravé tlačítko myši > New Object > Logical Column ... > pojmenujte jej VYNOS_PRED_CTVRTLETIM > zaškrtněte Use existing logical columns as the source)


2. V Expression Builderu vytvořte výpočet pro zobrazení stavu před obdobím (Vyberte Functions > Time Series Functions > Ago > Insert)


3. Do AGO funkce za "Measure" doplňte Výnosy, za "Level" úroveň Čtvrtletí a za "Number of Periods" doplňte "1" (jedno čtvrtletí vzad).


4. Výsledkem je nově založený ukazatel VYNOS_PRED_CTVRTLETIM


5. Stejným způsobem založte ukazatele NAKLAD_PRED_CTVRTLETIM, VYNOS_PRED_ROKEM a NAKLAD_PRED_ROKEM (jako "Level" u ročních ukazatelů zvolte úroveň "Rok")


B/ Tvorba ukazatele YearToDate
1. Do faktové tabulky F_PRODEJ$ založte nový logický sloupec pro ukazatel VYNOS_YEAR_TODATE, který bude počítán z již stávajícího ukazatele (v Business Modelu „Prodeje“ vyberte tabulku F_PRODEJ$ > pravé tlačítko myši > New Object > Logical Column ... > pojmenujte jej VYNOS_YEAR_TODATE > zaškrtněte Use existing logical columns as the source)


2. V Expression Builderu vytvořte výpočet pro zobrazení stavu ToDate (Vyberte Functions > Time Series Functions > ToDate > Insert)


3. Do ToDate funkce za "Measure" doplňte Výnosy, za "Level" úroveň Rok.


4. Výsledkem je nově založený ukazatel VYNOS_YEAR_TODATE


5. Stejným způsobem založte ukazatel NAKLAD_YEAR_TODATE


C/ Tvorba ukazatelů zobrazující změnu mezi současností a minulostí
Poznámka: Pro účely porovnávání dvou ukazatelů je k dispozici
"Calculation Wizard", který Vám usnadní tvorbu typických ukazatelů jako jsou Změna, Procentní změna, Index nebo Procenta, a na víc Vám pomůže ošetřit výjimky jako je dělení nulou nebo práce s NULL hodnotou.

1. Ve faktové tabulce F_PRODEJ$ vyberte sloupec VYNOS > pravé tlačítko myši > Calculation Wizard


2. Vyberte ukazatele, které chce porovnávat s ukazatelem Výnos (vyberte VYNOS_PRED_CTVRTLETIM a VYNOS_PRED_ROKEM)


3. Pro oba ukazatele nechte vygenerovat ukazatele zobrazující změnu a změnu v procentech


4. Calculation Wizard vygeneruje čtyři nové ukazatele


5. Stejným způsobem postupujte i pro ukazatel Náklad


C/ Kategorizace, přesun a přejmenování nových ukazatelů v Prezentační vrstvě
Poznámka: Pro zjednodušení orientace koncových uživatelů při návrhu reportů lze prezentační metadata kategorizovat do různých podsložek. Výsledkem pak může být podobná stromová struktura:


1. Přesuňte a přejmenujte nově vytvořené ukazatele do Prezentační vrstvy


2. V Prezentační vrstvě vyberte oblast „Prodeje > pravé tlačítko myši > New Presentation Table


3. Složku pojmenujte „- Výnosy“


4. Stejným způsobem vytvořte složky se jmény „- Náklady“ a „- Zisk“



5. Do nově vytvořených složek rozdělte (Drag&Drop) dle významu ukazatele ze složky Prodej

Výsledkem jsou nově založené ukazatele zobrazující stav před obdobím, kumulativní ukazatele zobrazující YearToDate a ukazatele zobrazující změnu mezi současností a minulostí.



Příští a zároveň poslední díl bude věnován tomu, jak toto všechno dát do provozu a tím zpřístupnit koncovým uživatelům pro reporting a analýzy.
Erik Eckhardt.