čtvrtek 27. listopadu 2008

ODI - Definice projektů a import KM

Poté co je nadefinovaná topologie můžete začít vytvářet první integrační projekty.

Podívejte se na video ukazující "step-by-step" postup jak v ODI vytvořit Projekt a naimportovat potřebné Knowledge Moduly (KM).


Příští díl bude o tom jak v ODI provést reverse-engineering stávajícího datového modelu.


Peter Hora (Semanta).

pondělí 24. listopadu 2008

Optimalizace dotazů s použitím HINTů

V tomto příspěvku bych se chtěl podělit o zkušenost s atributem Hint, který jsme byli nuceni použít z důvodu optimalizace dotazů.

Po implementaci dashboardu u jednoho nejmenovaného klienta doba trvání všech dotazů probíhala v požadovaných časech (1-3 sekundy). Cca 2 měsíce po nasazení do produkčního provozu došlo k náhlému poklesu výkonnosti dotazů až na několik desítek minut. Toto bylo způsobeno tím, že faktové tabulky se měsíčně „rozmnožovaly“ o cca 10 miliónů záznamů.

Optimalizaci jsme se rozhodli vyřešit nasazením atributů hint v metadatech přímo u fyzické tabulky. Po nasazení se výkon dotazů vrátil do původních požadovaných časových intervalů (u některých dotazů byla doba trvání dotazu dokonce nižší než po zahájení produkčního provozu).

Pro nastavení jednoho HINTu vše funguje jak má:

Např. syntaxe pro použití konkrétního indexu je: INDEX(název_tabulky, název_indexu) Hint se uvádí u tabulek ve Fyzické vrstvě metadata repository:



My jsme ale museli řešit požadavek, kdy u daného dotazu se mohly zadat různé filtry (podmínky) na více hlavních atributů – vždy alespoň na jeden z nich. Na každý daný hlavní atribut byl v databázi použit index na který jsme chtěli nastavit hint. Syntaxe použití více hintů najednou je (opět pro index) tato (oddělovačem je mezera):

INDEX(název_tabulky, název_indexu) INDEX(název_tabulky, název_indexu) INDEX(název_tabulky, název_indexu)
Bohužel použitá verze OBI EE (10.1.3.3.0) neumí tento zápis rozklíčovat.

Řešení je jednoduché („vypocené“): pro 2. a další hint se nesmí použít název fyzické tabulky, ale její alias, pod kterým je uvedena ve výsledném fyzickém SQL.

Naštěstí je tento alias neměnný (zřejmě se generuje z identifikátoru, pod kterým je tabulka uložená v metadatech).

Příklad:

INDEX(F_ATM, IDX_ATM_CARD) INDEX(T1391, IDX_ATM_TERM) INDEX(T1391, IDX_ATM_POSTDAT_AUDIT)



Miroslav Petr (konzultant společnosti Adastra).

středa 19. listopadu 2008

ODI a Topologie

Co je ODI, jak funguje a jaké jsou jeho výhody najdete zde. Kde najít instalační média a jak se instaluje najde zde.


Než v ODI začnete vytvářet samotné datové integrace, tak nejprve musíte zadefinovat „Topology“ – tj. umístění všech zdrojových a cílových systému, které se v ODI budou používat.


V rámci Topologie je potřeba zadefinovat:
  • Fyzickou architekturu – fyzické umístění datových zdrojů (včetně schémat) pro jednotlivé technologie, např.:
    PHY_Arch_D = Tech: Oracle, Host: Praha, Instance: BIDWD, Schema: DWD
    PHY_Arch_T = Tech: Oracle, Host: Brno, Instance: BIDWT, Schema: DWT
    PHY_Arch_P = Tech: Oracle, Host: Praha, Instance: BIDW, Schema: DW


  • Logickou architekturu – alias pro rozdílné fyzické zdroje dat, které mají stejnou datovou strukturu, jsou založené na stejné technologii, ale vystupují v různých kontextech, např.:
    DWH

  • Kontext – “situace”, ve které se mapuje logická architektura na fyzickou architekturu, např.:
    Kontext DEVELOPMENT = DWH <-> PHY_Arch_D
    Kontext TEST = DWH <-> PHY_Arch_T
    Kontext PRODUCTION = DWH <-> PHY_Arch_P



Podívejte se na video ukazující "step-by-step" postup jak v ODI nadefinovat:

  1. Fyzickou architekturu

  2. Logickou architekturu a kontext

Příští díl bude o tom jak v ODI definovat projekty.


Erik Eckhardt a Peter Hora (Semanta).

čtvrtek 13. listopadu 2008

Jak s pomocí BI Delivers ukládat sestavy BI Answers do souborů

Článek popisuje postup jak s pomocí komponenty BI Delivers lze generovat reporty vytvořené v BI Answers přímo do souborů na filesystému. Podmínkou fungování je zprovoznění služby Oracle BI Scheduler - postup najdete zde.


1. NASTAVENÍ SLUŽBY JAVAHOST PRO ODESÍLÁNÍ IBOTŮ DO VLASTNÍCH JAVA TŘÍD

Konfigurační soubor služby JavaHost je na cestě [OracleBI]\web\javahost\config\config.xml. V tomto souboru je třeba nastavit v tagu "Scheduler" hodnotu "Enabled" na „True“ a přidat nebo odkomentovat tag "DefaultUserJarFilePath". Celý tag pak vypadá takto:


Dále je nutné zvýšit výchozí hodnoty pro PDF a InputStream (změňte nebo přidejte kamkoliv do config.xml):


Uložte soubor a přestartujte službu Oracle BI Java Host.


2. VLASTNÍ JAVA TŘÍDA PRO UKLÁDÁNÍ REPORTŮ DO SOUBORU

Pro vytvoření jednoduchého programu pro ukládání reportů do souboru jsem použil DeliveryManager API, které je součástí Oracle BI Publisheru a Scheduler API. Tato API jsou obsažená ve třech souborech *.jar, které je třeba přibalit do vlastního *.jar souboru s programem. Jsou to následující: xdocore.jar, versioninfo.jar a schedulerrpccalls.jar.

Vytvořený soubor jsem pojmenoval okdeliver.jar. Abyste mohli vlastní třídu používat, umístěte soubor okdeliver.jar na BI server na cestu, kterou jste nastavili v předchozím kroku jako DefaultUserJarFilePath. Třída samotná je nazvaná cz.oksystem.mis.delivery.Deliver. Tento plný název je třeba uvádět v místě jejího použití (viz níže). Zdrojový kód třídy je uveden na konci článku.


3. PRESENTATION SERVICES A OPRÁVNĚNÍ PRO PRÁCI S DELIVERY

Po instalaci Oracle BI nemá v Presentation Services nikdo oprávnění pro práci s iBoty a Delivery. To je třeba přidat. Přihlaste se proto jako uživatel ze skupiny Administrators – například Administrator k webovému rozhraní Presentation Services a zvolte Nastavení – Správa v pravé horní části okna. Otevře se okno pro administraci Prezentation Services:


Zde zvolte první odkaz –Správa – skupiny a uživatele Katalog prezentace. Zvolte Upravit u skupiny Presentation Server Administrators, dále pak Přidat nového člena – Zobrazit uživatele a skupiny a nakonec klikněte na Přidat u uživatele SchedulerAdmin.


Dvakrát potvrďte operaci tlačítkem Dokončeno. Pokračujte kliknutím na odkaz Správa oprávnění a dále srolujte k části s oprávněními pro Delivers:


Klikněte na odkaz „není povoleno“ na každém řádku v části Delivers a přidejte oprávnění pro skupinu Presentation Server Administrators. Akci potvrďte tlačítkem Dokončeno. Jakmile budete mít přidělena oprávnění tak, jak je vidět na obrázku výše, potvrďte celou akci tlačítkem Dokončeno v horní části okna a nakonec klikněte na tlačítko Zavřít okno.

DŮLEŽITÁ POZNÁMKA: Pokud autentizace BI je nastavena proti externímu zdroji, nesmí být uživatel, který vytváří a spouští iBoty současně v metadata repository. Pokud se tak stane, nebude probíhat spouštění iBotů (chyba: [nQSError: 10018] Access for the requested connection is refused. [nQSError: 13024] Successful completion of init block 'AUTH_IB' is required.).

V testovacím prostředí byl založen uživatel iBoter pouze v LDAP, zařazený do skupiny Administrators. Pod tímto uživatelem je třeba se jednou přihlásit a odhlásit, aby vznikl jeho záznam v Presentation Services katalogu. Poté se přihlašte jako Administrator a přidejte ho do skupiny Presentation Server Administrators jak je popsáno výše. Všechny další kroky při vytváření a správě iBotů provádějte jako uživatel iBoter. Uživatel SchedulerAdmin, který je superuživatelem pro službu Oracle BI Scheduler musí být zařazený v Presentation Server Administrators v každém případě! (jinak nastane při provádění iBotu chyba: [nQSError: 77006] Oracle BI Presentation Server Error: Access denied.).


4. VYTVOŘENÍ IBOTU A NASTAVENÍ JEHO DORUČENÍ DO VLASTNÍ TŘÍDY

Ve webovém rozhraní Presentation Services zvolte Další produkty – Delivers. Dále klikněte na odkaz Vytvořit nového agenta iBot. Na následujícím obrázku je vidět okno se záložkami pro vytváření a konfiguraci iBotů:


První záložka, kterou budete měnit (pokud je třeba) je Plán (konfigurace pro Scheduler). Zde je nastaveno jako výchozí jednorázové okamžité vykonání iBota. Nastavte plán podle vlastních požadavků. Dále na záložce Adresáti ponechte označeno „Já“ (musí být alespoň jeden adresát iBota, jinak iBot nevrátí žádná data). Na záložce Obsah doručení vyberte sestavu, která má být iBotem vykonávána (tlačítko Vybrat obsah...) a potom zvolte v roletě „Odeslat obsah jako“ příslušný formát (např. Příloha (PDF)). Otestované jako funkční jsou formáty PDF, CSV, XLS (Excel i Excel 2000). Na záložce Cíle odznačte všechna zaškrtnutá pole a zaškrtněte pouze Oracle BI Server Mezipaměť v sekci Systémové služby.

Nejdůležitější část konfigurace iBotu provedete na záložce Pokročilé. Klikněte na první tlačítko Přidat akci a z nabídky zvolte „vlastní program Java“ . Do pole Název třídy vyplňte cz.oksystem.mis.delivery.Deliver. Do pole Cesta třídy napište okdeliver.jar. Přepněte radibuton Výsledky na hodnotu „Předat programu Java obsah doručení“ a přidejte dva Jiné parametry. První uvádí cestu souboru včetně jeho názvu bez koncovky a druhý uvádí koncovku (typ) souboru. Koncovka musí odpovídat zvolenému formátu odesílaného obsahu (viz Odeslat obsah jako na záložce Obsah doručení). Na obrázku níže si všimněte především dvojitých zpětných lomítek v uváděné cestě:


Třída Deliver přidá k názvu souboru ještě časové razítko ve formátu _rrrr-MM-dd-hh-mm-ss a soubor uloží v příslušném formátu na uvedenou cestu (adresáře v cestě musejí existovat).


Zdrojový kód třídy cz.oksystem.mis.delivery.Deliver

package cz.oksystem.mis.delivery;

import com.siebel.analytics.scheduler.javahostrpccalls.SchedulerJavaExtension;
import com.siebel.analytics.scheduler.javahostrpccalls.SchedulerJobException;
import com.siebel.analytics.scheduler.javahostrpccalls.SchedulerJobInfo;
import java.io.FileInputStream;
import java.sql.Timestamp;
import java.util.Date;
import java.util.StringTokenizer;
import oracle.apps.xdo.delivery.DeliveryManager;
import oracle.apps.xdo.delivery.DeliveryRequest;
import oracle.apps.xdo.delivery.local.LocalPropertyDefinitions;

public class Deliver implements SchedulerJavaExtension{

public Deliver() {
}

public void run(SchedulerJobInfo jobInfo) throws SchedulerJobException {
try {
String filename = "c:\\mis-import\\sestava";
String extense = "pdf";
if (jobInfo.parameterCount() > 0) {
filename = jobInfo.parameter(0);
extense = jobInfo.parameter(1);
}
Date dnes = new Date();
Timestamp timestamp = new Timestamp(dnes.getTime());
String razitko = timestamp.toString();
razitko = replaceAllWords(razitko," ", "-");
razitko = replaceAllWords(razitko,":", "-");
razitko = razitko.substring(0,razitko.length()-4);
String cesta = filename + "_" + razitko + "." + extense;
FileInputStream fileInputStr = new FileInputStream(jobInfo.getResultSetFile());
DeliveryManager delMan = new DeliveryManager();
DeliveryRequest delReq = delMan.createRequest(DeliveryManager.TYPE_LOCAL);
delReq.addProperty(LocalPropertyDefinitions.LOCAL_DESTINATION, cesta);
delReq.setDocument(fileInputStr);
delReq.submit();
delReq.close();
}
catch(Exception ex) {
throw new SchedulerJobException(1, 1, ex.getMessage());
}
}

public void cancel() {
}

private String replaceAllWords(String original, String find, String replacement) {
StringBuilder result = new StringBuilder(original.length());
String delimiters = "$+-*/(),.: ";
StringTokenizer st = new StringTokenizer(original, delimiters, true);
String navrat = null;
while (st.hasMoreTokens()) {
String w = st.nextToken();
if (w.equals(find)) {
result.append(replacement);
} else {
result.append(w);
}
}
navrat = result.toString();
return navrat;
}
}



Petr Zeman (konzultant společnosti OKsystem).

pondělí 3. listopadu 2008

2. Oracle Czech BI/DW Experts Bootcamp

V pátek 31.10.2008 proběhl 2. Oracle Czech BI/DW Experts Bootcamp, kterého se zúčastnilo 18 vybraných konzultantů od 13 Oracle partnerů:
  • Jaroslav Vlček (Adastra)
  • Miroslav Petr (Adastra)
  • Jan Gottinger (CCA)
  • Jan Pospíšil (CD Telematika)
  • Petr Jurászek (IT SYSTEMS)
  • Radovan Man (K2 atmitec)
  • David Glivický (K2 atmitec)
  • Václav Bíba (NESS|Logos)
  • Jindřich Štěpánek (OK system)
  • Petr Zeman (OK system)
  • Jiří Doubravský (Pike Electronics)
  • Michal Tomek (Neit Consulting)
  • Lukáš Hrnčíř (Neit Consulting)
  • Jiří Bohuslav (Sophias)
  • Jakub Genža (Sophias)
  • Michal Kocman (Telefónica O2 Services)
  • Michal Zima (Teura)
  • Peter Hora (Semanta)

Agenda setkání byla následující:

09:30 Zahájení a představení
09:40 Předání cen

09:45 Novinky – Oracle Exadata

10:00 1. workshop – Tipy, triky a zkušenosti z projektů

12:00 Oběd

13:15 1. workshop – Tipy, triky a zkušenosti z projektů (pokračování)

15:15 Novinky – Oracle Essbase

15:30 2. workshop – Co jsem v dokumentaci nenašel

17:30 Novinky – Oracle BI 10.1.3.4.0

17:45 Metalink3

18:00 Večeře, volná diskuse a zábava ...


Prezentace z 1. workshopu – Tipy, triky a zkušenosti z projektů:
13 prezentujících, 28 příspěvků:

Jan Gottinger (CCA)
  1. Autentizace pomocí SSO
  2. Distribuce změn k zákazníkům
  3. Spojení 2 tabulek (union)
  4. Instalace OBI do prostředí VMware

Petr Zeman (OK System)
  1. BI Delivers a generování reportů do file systemu
  2. BI Publisher a integrace s BI Serverem a LDAPem
  3. Latin2 a ODBC na Linux/Unix platformě

Václav Bíba (Ness | Logos)
  1. „Nedimenzionální“ reporting v OBIEE
  2. Problém kumulací v pivot tabulce
  3. Informace o počtu záznamů sestavy

Radovan Man (K2)
  1. Integrace Oracle BI do IS K2 (Komunikace s OBI pomocí webové služby a GO URL)
  2. HTML stránky získané pomocí WS a GO URL obsahují v cestách k javascriptům a kaskádovým stylům předponu „Missing_“

Jakub Genža (Sophias)
  1. Použití writebacku pro stanovení hranic tachometru + zjištění omezení
  2. Možnost uživatelské změny svého hesla na strance „My Account“ včetně grafické úpravy
  3. Nastavení Delivery profilu (především email adresy) pomocí SA SYSTEM Subject Area pro použití v BI Delivers

Jiří Bohuslav (Sophias)
  1. Problémy s registrací a odregistrací lokací v OWB (uložení registračních údajů, nechtěná ztráta runtime history)

Miroslav Petr (Adastra)
  1. Zkušenosti s vytvářením, používaním a výkonností vlastních ukazatelů
  2. Optimalizace dotazů v OBI s použitím hints


Jiří Doubravský (PIKE)
  1. Použití zobrazení “výběr sloupce“ pro výběr hodnoty hierarchie

Michal Tomek (NEIT)
  1. Downgrade repository např. 10.1.3.3.2 -> 10.1.3.3.1

Michal Kocman (O2 Services)
  1. Nevyrovnaná stromová struktura dimenze, hierachie s rozdílnými listovými úrovněmi
  2. Přechod od Expressu bez AWM, velký objem AW => rozdělení, výpočty

Petr Jurášek (IT Systems)
  1. Zvláštní nápočty penetrací

Peter Hora (Semanta)
  1. Embedded video v reporte
  2. Simulacia výstupu waterfall chart
  3. Ergonomie reportov

Michal Zima (Teura)
  1. Jak nejlépe přistupovat k vývoji, testování a produkci u metadata repository
  2. Jak nejlépe přistupovat k vývoji, testování a produkci u web katalogu