pondělí 29. března 2010

ODI a Soubory jako zdroj nebo cíl (a proč Reverse engineering struktury souboru nic neprovede)

Stejně jako v případě MS Excel nebo MS Access je i pro soubory součástí ODI dodávaná definice technologie včetně konektoru a Znalostních modulů.

Než začnete pracovat se samotným souborem, je potřeba v ODI Topologii pro technologii File, nadefinovat konektor (Data Server) a adresář (Physical Schéma), ve kterém budou soubory umístěny.
Použijte driver com.sunopsis.jdbc.driver.file.FileDriver pomocí kterého bude prováděn reverse engineering. Driver má několik parametrů, tím nejdůležitějším je ENCODING=[encoding_code] (File encoding, default encoding value is ISO8859_1) a možná OPT=TRUE|FALSE (Option optimizes file access on multiprocessor machines for better performances. Using this option on single processor machine may cause performances loss. Default value is FALSE).


Po založení Data Serveru založte Physical Schéma, které ukazuje na adresář se soubory. Je dobré oddělit adresář s daty (schéma) od adresáře s logy a jinými soubory (work schéma), které budou generovány různými „bulk loadery“ při načítání souborů.


Máte-li založené Fyzické schéma, přidejte Logické schéma a kontext.


Reverse-engineering v ODI

Postup pro načtení struktury souboru je jiný než pro databáze:

1. Založte Model, nastavte technologii na File, vyberte Logické schéma, kontext.


2. Do modelu přidejte nový DataStore, na záložce Definition jej pojmenujte (Name) a z adresáře vyberte zdrojový soubor (Resource Name).


3. Na záložce Files nastavte detail ohledně souboru jako je formát (Delimited / Fixed), oddělovač řádků a sloupců.


4. Na záložce Columns klikněte na tlačítko Reverse a ODI provede načtení struktury (jména sloupců, datové typy a šířky) souboru


Pozor! V určitých případech se Vám může stát, že reverse engineering proces nic neprovede. Důvodem je zamknutí DataStore souboru před spuštěním samotného reverse engineering procesu (chování zamykání objektů lze nastavit v menu User parameters / Lock object when opening).
K uzamknutí souboru nejčastěji dochází v případech, kdy během definice souborového DataStore stisknete na tlačítko Apply – tím se DataStore uzamkne (vedle jména souboru je zobrazen zámek) a Reverse sloupců nic neprovede. Vyhnout se tomu můžete tak, že buď změníte chování zamykání objektů a nebo se budete vyvarovat kliknutí na tlačítko Apply před spuštěním Reverse sloupců souboru.


Soubor jako zdroj
V případě, že soubor bude zdrojem, pak využijte dodávané Znalostní moduly pro nahrávání souborů do cílových databází („LKM File to [vaše_cílová_technologie]“ – moduly využívají „bulk loadery“ jednotlivých databází). Pokud žádný modul neodpovídá vaší cílové databázi, pak použijte „LKM File to SQL“ (Loads data from an ASCII or EBCDIC File to any ISO-92 compliant database).

Soubor jako cíl
V případě, že soubor bude cílem, pak můžete:
  1. použít hotové Znalostní moduly pro extrakt dat do souboru

  2. použít utilitu OdiSqlUnload


Erik Eckhardt

čtvrtek 25. března 2010

ODI a MS Excel jako zdroj nebo cíl

Součástí ODI je dodávaná definice technologie pro MS Excel včetně konektoru a Znalostních modulů.

V případě, že se chcete z ODI připojit k souborům MS Excel, pak je nutné (stejně jako pro MS Access) na nějaké MS Windows stanici nadefinovat ODBC zdroj ukazující na požadovaný XLS soubor a samozřejmě mít nainstalovaný XLS ovladač.
Z pohledu ODI by měl na stejném serveru běžet ODI Agent, který bude mít přístup k nadefinovanému ODBC zdroji.



Jakmile existuje ODBC zdroj pro Excel, tak můžete v ODI topologii pod technologií MS Excel vytvořit nový Data Server. Jako driver použijte dodávaný JDBC-ODBC bridge (sun.jdbc.odbc.JdbcOdbcDriver), jako URL cestu na výše vytvořený ODBC zdroj (jdbc:odbc:[odbc_dsn_alias]).



Pro vytvořený Data Server založte Fyzické schéma, dále pak Logické schéma a kontext.


Nastavení XLS souboru před Reverse-engineeringem
Před samotným Reverse-engineering procesem se musí v Excelu nadefinovat jména, které pak ODI uvidí jako obyčejné tabulky:

V listu Excelu vyberte oblast buněk a z menu Insert vyberte Name > Define..


pojmenujte a přidejte novou oblast Excelu, která bude v ODI interpretována tabulkou.



Reverse-engineering v ODI
Máte-li nadefinovanou topologii a oblasti v Excelu, můžete provést Reverse-engineering v ODI. Založte Model, nastavte technologii na MS Excel, vyberte Logické schéma a kontext.


Na záložce Selective Reverse proveďte načtení tabulek definovaných v Excelu.



MS Excel jako zdroj
V případě, že Excel bude zdrojem, pak využijte dodávané Znalostní moduly pro nahrávání dat z „any ISO-92 compliant“ databází - tj. LKM, které mají v názvu zdrojové technologie SQL (např. „LKM SQL to Oracle“, „LKM SQL to SQL“ nebo jiné).


MS Excel jako cíl
A/ IKM SQL to SQL Append
V případě, že MS Excel bude cílem, pak ihned můžete začít využívat modul „IKM SQL to SQL Append“. ODI Staging Area je potřeba z cíle (Excel) přesunout na zdroj nebo jiný server.



V případě, že během integrace dat do MS Excel obdržíte následující chybu: [Microsoft][ODBC Excel Driver] Operation must use an updateable query, je potřeba v definici ODBC odznačit Read Only mód.



Potřebujete-li promazat data v cílovém Excelu, pak k dispozici v KM máte volby TRUNCATE a DELETE_ALL:

  • Jestliže u daného KM nastavíte volbu TRUNCATE, pak dostanete chybu: [Microsoft][ODBC Excel Driver] Invalid SQL statement; expected 'DELETE', 'INSERT', 'PROCEDURE', 'SELECT', or 'UPDATE' (TRUNCATE pro Excel není podporován).
  • Jestliže u daného KM nastavíte volbu DELETE_ALL, pak dostanete chybu: [Microsoft][ODBC Excel Driver] Deleting data in a linked table is not supported by this ISAM (DELETE operace přes daný ODBC driver není podporována).

Workaround může být DROP a opětovný CREATE tabulky. Upravte v IKM DELETE krok, nahraďte jej DROPem a dejte na začátek IKM.



B/ "LKM SQL to SQL" a "IKM SQL Incremental Update"
Po menší úpravě můžete začít využívat i moduly „LKM SQL to SQL“ a „IKM SQL Incremental Update“, ale je potřeba:

1. zajistit,
aby prefix pomocných tabulek neobsahoval znak dolar „$“ (stejně jako u MS Access)


2. zajistit, aby se při vytváření pomocné integrační tabulky nepoužil datový typ VARCHAR2 (u sloupce IND_UPDATE), jinak obdržíte chybu: [Microsoft][ODBC Excel Driver] Syntax error in field definition:


3. přidat "AS" mezi 'I' a sloupec IND_UPDATE, jinak dostanete chybu: [Microsoft][ODBC Excel Driver] Syntax error (missing operator) in query expression ''I' IND_UPDATE'.



4. přepsat
krok „Update existing rows“ v KM následujícím způsobem:



Výsledkem je přihrávání nových a aktualizace stávajících záznamů v MS Excel (tzn. v Excelu vznikají a dále zůstávají dva listy / tabulky, které jsou využívány pro nahrávání a integraci dat).




Erik Eckhardt

pondělí 22. března 2010

ODI a MS Access jako zdroj nebo cíl

Součástí ODI je dodávaná definice technologie pro MS Access včetně konektoru a Znalostních modulů.
V případě, že se chcete z ODI připojit k MS Access databázi, pak je nutné na nějaké MS Windows stanici nadefinovat ODBC zdroj ukazující na požadovanou MS Access databázi a samozřejmě mít nainstalovaný MS Access ovladač.
Z pohledu ODI by měl na stejném serveru běžet ODI Agent, který bude mít přístup k nadefinovanému ODBC zdroji.



Jakmile existuje ODBC zdroj pro MS Access databázi, tak můžete v ODI topologii pod technologií MS Access vytvořit nový Data Server. Jako driver použijte dodávaný JDBC-ODBC bridge (sun.jdbc.odbc.JdbcOdbcDriver), jako URL cestu na výše vytvořený ODBC zdroj (jdbc:odbc:[odbc_dsn_alias]).
Pro vytvořený Data Server založte Fyzické schéma, dále pak Logické schéma a kontext.



Máte-li nadefinovanou topologii, můžete provést Reverse-engineering MS Access databáze: Založte Model, nastavte technologii na MS Access, vyberte Logické schéma, kontext a na záložce Selective Reverse proveďte načtení MS Access modelu.



MS Access jako zdroj
V případě, že MS Access bude zdrojem, pak využijte dodávané Znalostní moduly pro nahrávání dat z „any ISO-92 compliant“ databází - tj. LKM, které mají v názvu zdrojové technologie SQL (např. „LKM SQL to Oracle“, „LKM SQL to SQL“ nebo jiné).


MS Access jako cíl
V případě, že MS Access bude cílem, pak pro:
  • Nahrání - využijte dodávané Znalostní moduly pro nahrávání dat do „any ISO-92 compliant“ databází - tj. LKM, které mají v názvu cílové technologie SQL (např. „LKM SQL to SQL“ nebo jiné).

  • Integraci – využijte dodávaný Znalostní modul „IKM Access Incremental Update“, který zajistí automatickou aktualizaci stávajících dat nebo přihrání dat nových.

POZOR! V případě, že během nahrávání nebo integrace dat do MS Access obdržíte následující chybu:
[Microsoft][ODBC Microsoft Access Driver] Syntax error in CREATE TABLE statement, tak zkontrolujte nastavení Fyzického schématu pro MS Access technologii – prefixy pomocných tabulek nesmí obsahovat znak dolar$“ - nutno odstranit nebo změnit!




Erik Eckhardt

čtvrtek 18. března 2010

ODI a GoldenGate - integrace hotova v ODI 10.1.3.6.0_02

5. března 2010 byla oficiálně uvolněna nová verze ODI (10.1.3.6.0_02), která je již integrována s Oracle GoldenGate - platformou pro heterogenní real-time integrace založené na Change Data Capture z transakčních a archivních logů různých databázových systémů včetně Oracle, IBM DB2, MS SQL Server, Sybase ASE, Teradata, HP NonStop / Tandem (Enscribe, SQL/MP, SQL/MX).

Oracle GoldenGate lze použít pro různé typy scénářů s hlavními požadavky na:
  • přenos transakcí v reálném čase
  • minimální zatížení zdrojových systémů při extrakci dat
  • velmi nízká latence přenosu
  • neomezená vzdálenost mezi zdrojovou a cílovou databází
  • dodržení transakční integrity během výpadku a poruchách sítě
  • přenosy v homogenním nebo heterogenním prostředí
  • přenosy mezi různými verzemi, edicemi a OS platformami
  • ...

Nejběžnější scénáře nasazení Oracle GoldenGate jsou:


Silnou stránkou Oracle GoldenGate je jeho nezávislost na verzích, edicích a dodavatelích zdrojových / cílových databází, a také nezávislost na operačním systému na kterém jsou provozovány.
GoldenGate vám umožní v reálném čase přenášet data z Oracle DB verze 8i běžící na 32-bit Windows do Oracle DB 11g běžící na IBM AIX, nebo mezi Oracle DB Standard Edition a Oracle DB Enterprise Edition, a nebo v heterogenním prostředí mezi různými systémy jako např. z DB2 do MS SQL, Teradaty a zpět.


Integrace mezi ODI a Oracle GoldenGate je pomocí Znalostního modulu „JKM Oracle to Oracle Consistent (OGG)“, který umožňuje přímo z prostředí ODI Designera automaticky generovat infrastrukturu pro GoldenGate, tj. parametrické soubory PRM a OBY.
Real-time Data Warehousing
s pomocí ODI a GoldenGate pak vypadá následovně:



Nová verze ODI je dostupná na stránkách Oracle Support pod označením 9449058.




Erik Eckhardt

pondělí 15. března 2010

Operace dělení nad sloupcem celočíselného datového typu

Pokud jste někdy potřebovali dělit hodnoty ve sloupci, který je v metadata repository definovaný jako datový typ INTEGER, pak zjistíte, že použití pouhého lomítka, jako operátoru pro dělení způsobí jisté nepřesnosti ve výsledku. Následujícím příkladem se pokusím celé chování demonstrovat a také nastínit možné řešení.

Z repository dostupného po nainstalování poslední verze (10.1.3.4.1) Oracle BI Enterprise Edition jsem použil dva sloupce:
Cílová oblast: Sample Sales,
Tabulka: F2 Units – 23 Dimension Total, Sloupec: 8-66 Total # or Orders (Cnt Dt for All Orders)
Tabulka: D2 Market, Sloupec: M01 Market

Zároveň pro přehlednost jsem nastavil filtr na poslední sloupec s jedinou hodnotou „Market 5“.

Výsledná tabulka po přejmenování sloupců vypadala takto:





Faktový sloupec jsem v dotazu zopakoval a nastavil pro něj hodnotu 1/100:









Výsledek byl následující:





Je vidět, že zde nedošlo ke správnému zaokrouhlení. Co s tím, pokud nemám možnost zasáhnout do repository a takovýto správně vypočítaný sloupec si připravit?
Zkusil jsem přidat ještě jednou stejný sloupec do sestavy a použít matematickou funkci pro zaokrouhlování s následným dělením stem:








Funkce ROUND si zřejmě alokuje pro svůj výpočet paměťový prostor pro datový typ, který zvládá desetinné operace (např. FLOAT nebo REAL) a proto výsledek odpovídal mému očekávání:





Petr Zeman (softwarový konzultant OKsystem)

čtvrtek 11. března 2010

OBI Purge cache pomocí Event Polling Table

Na projektu jsme chtěli automaticky vyprázdnít OBI cache po aktualizaci dimenze nebo faktové tabulky. Vzhledem k tomu, že jako ETL používáme ODI, rozhodli jsme se nakonfigurovat OBI Event Polling Table (EVP) s tím, že ODI Knowledge Modul zajistí po aktualizaci tabulky vložení odpovídajícího záznamu do Event Polling Table (více o Event Polling Table viz. dokumentace Oracle BI Server Administration Guide, kapitola Cache Event Processing with an Event Polling Table).

Jedná se v podstatě o velmi triviální záležitost, na webu jsme našli několik jednoduchých step by step postupů konfigurace EVP v ODI. V praxi jsme však narazili na následující problém:

Použita byla databáze Oracle 10gR2 a zakládací skript EVP tabulky dle dokumentace. Po konfiguraci Event Polling Table se v logu NQServer.log objevovali následující chyby v závislosti na tom, jaký ovladač byl použit pro import metadat EVP tabulky:
  • Pokud jsme použili OCI driver:
    - [55004] The prepare operation failed while polling from table UET.
    - [nQSError: 22005] Repository metadata: column has no data type information.
    - [55005] The cache polling delete statement failed for table UET.


  • Pokud jsme použili ODBC driver:
    - [55004] The prepare operation failed while polling from table UET.
    - [nQSError: 22006] Repository metadata: missing column object: ID=0:34.
    - [55005] The cache polling delete statement failed for table S_NQ_EPT.
    - [nQSError: 22006] Repository metadata: missing column object: ID=0:34.

Příčinou byl z hlediska Event Polling nekorektní reverse engineering metadat EVP tabulky do OBI repository. Sloupec UPDATE_TS typu DATE bylo nutno manuálně v OBI repository nastavit na DATETIME.

Přikládám funkční kombinaci zakládacího skriptu EVP tabulky a screenshot metadat EVP v OBI repository:

create table S_NQ_EPT (
UPDATE_TYPE DECIMAL(10,0) DEFAULT 1 NOT NULL,
UPDATE_TS DATE DEFAULT SYSDATE NOT NULL,
DATABASE_NAME VARCHAR2(120) NULL,
CATALOG_NAME VARCHAR2(120) NULL,
SCHEMA_NAME VARCHAR2(120) NULL,
TABLE_NAME VARCHAR2(120) NOT NULL,
OTHER_RESERVED VARCHAR2(120) DEFAULT NULL NULL
) ;



Karel Hübl (Architekt společnosti GEM System International)

pondělí 8. března 2010

Oracle University Vás zve na školení Oracle Data Integrator: Administration and Development

V návaznosti na naše ODI hands-on workshopy připravila Oracle University plnohodnotné školení, které Vás provede celým cyklem vývoje v Data Integratoru. Podrobnější informace o náplni školení naleznete na tomto linku.

Školení se koná ve dnech 3.- 6. 5. 2010 v Praze - Oracle University, Škrétova 12, Praha 2. Máte-li o školení zájem, pak přímo kontaktuje Oracle University na education_cz@oracle.com

pátek 5. března 2010

Seminář: Vlastnosti Oracle Database 11g pro Datové sklady

Dnes dopoledne proběhl seminář o novinkách Oracle Database 11g pro Datové sklady. Všem účastníkům semináře děkujeme! Prezentace ze semináře jsou dostupné níže.


Prezentace ze semináře:

eec.

čtvrtek 4. března 2010

Dva nové kumulativní patche pro ODI - Patch Set 10.1.3.5.6 a 10.1.3.6.0

V lednu 2010 byl uvolněn kumulativní patch pro ODI, který jej povyšuje na verzi 10.1.3.5.6. V únoru 2010 pak patch, který jej povyšuje na verzi 10.1.3.6.0.

Oba dva patche lze aplikovat na jakoukoli verzi počínaje základní 10.1.3.5.0.
Pozor: patch 10.1.3.6.0 mění strukturu Master i Work repository.

Patche jsou ke stažení z Oracle Support pod označením 9377717 (10.1.3.6.0 z 13-FEB-2010) a 9327111 (10.1.3.5.6 z 29-JAN-2010).

Informace o předešlých verzí najdete zde.

Version 10.1.3.6.0
New/Modified Objects

The following KMs have been modified or added in this version:

  • IKM SQL to Hyperion Planning - Modified

Bugs Fixed
  • 8855049 - Random "java.sql.SQLException: Closed Connection" error appears when running scenarios, while updating a session task. Connection to the repository is lost and session stops.

  • 7696856 - Users not having "view/edit data" privileges are able to see table data through interface diagrams.

  • 8993849 - Some session task logs are grayed out for a user with limited privileges in operator.

  • 9309858 - IKM SQL To Hyperion Planning: ERROR_LOG_FILENAME overwrites and does not append log content.

  • 9056142,9188539 - Repository Structure Fix. This patch set includes a fix to the repository structure. Running an upgrade of the Master and work repositories after this patch fix invalid the repository structures. See Repository Structure Fix for more information.

Version 10.1.3.5.6
New/Modified Objects

The following KMs have been modified or added in this version:

  • LKM DB2 400 Journal to SQL - Modified

  • JKM DB2 400 Simple (Journal) - Modified

  • IKM Oracle Slowly Changing Dimensions - Modified

  • LKM SAP ERP to Oracle (SQLLDR) - Modified

  • RKM SAP ERP - Modified

  • LKM SAP BW to Oracle (SQLLDR) - Modified

  • RKM SAP BW - Modified

Bugs Fixed
  • 6870772 - Unable to reverse engineer a Datastore or to insert/update a Datastore containing a LOB family type object.

  • 6667705 - Version restore operation causes a deadlock and prevents simultaneous users from updating other repository objects.

  • 8855049 - While updating a session task, repository connections are closed abruptly there by causing "closed connection" exception .

  • 8967643 - "java.lang.NumberFormatException:" when attempting to connect to a set of XSD files.

  • 9103310 - With no overwrite on change configured, IKM Oracle Slowly Changing Dimension fails at step 272 "Updating Existing Row".

  • 9235923 - Missing KMS in the impexp folder, LKM DB2 400 Journal to SQL and JKM DB2 400 Simple (Journal).

  • 9094083 - LKM SAP ERP to Oracle (SQLLDR) : File separator changed to \n for UNIX systems.

  • 9170437 - RKM SAP ERP: Retrieve list of SAP modules dynamically.

  • 9094083 - LKM SAP BW to Oracle (SQLLDR) : File separator changed to \n for UNIX systems.

  • 9249552 - SAP BW RKM : Obsolete step "INSTALL RFC FUNCTIONS" removed from KM.

  • 8848077 - OdiSAPAleServer and OdiSAPAleClient cannot connect to recent sap Netweaver systems. This is due to an incompatibility of these tools with JCO 3. To use a compatible version of the tools. Alter the SAPALE tools calls to use with OdiSAPAleServer3 and OdiSAPAleClient3 instead.

  • 9201073 - Cannot load metadata that includes shared members into HFM 11.1.1.3


Erik Eckhardt

pondělí 1. března 2010

BI Publisher a stálé zapnutí Režimu dostupnosti

BI Publisher umožňuje uživatelům přistupovat k sestavám ve dvou režimech:
  1. Standardní režim
  2. Režim dostupnosti
Standardní režim | Režim dostupnosti

Standardní režim je více vhodný pro vývojáře a administrátory sestav – umožňuje definovat a konfigurovat jednotlivé sestavy v repository (po levé straně jsou k dispozici různá menu).

Režim dostupnosti je více vhodný pro koncové uživatele – nabízí sestavy v přehledné stromové struktuře bez jakýchkoli dodatečný menu – uživatel vybere sestavu a ta se mu buď ihned spustí nebo naplánuje její vygenerování.

Do jaké režimu se má BI Publisher po zalogování přepnou je potřeba vybrat na logovací obrazovce. Režim dostupnosti je standardně vypnutý – tj. uživatel jej musí explicitně zapínat.


V případě, že uživatel opomene zapnout Režim dostupnosti, pak lze dodatečně zapnout v rámci menu Předvolby. Pozor: předvolba se po odlogování přepíše opět nastavením logovací obrazovky.


Proto požadují-li vaši uživatelé, aby byl Režim dostupnosti stále zapnut, pak lze využít menší workaround v podobě upravení logovací stránky.


Jak na to
  1. Logovací stránku login.jsp najdete v adresáři vašeho J2EE containeru, v mém případě ...\OracleBI\oc4j_bi\j2ee\home\applications\xmlpserver\xmlpserver\login.jsp

  2. Soubor login.jsp si zálohujte

  3. Soubor login.jsp otevře v notepadu a vyhledejte input type="checkbox"

  4. Za input type="checkbox" doplňte checked="yes"



Poté již bude Režim dostupnosti standardně zapnut!



Erik Eckhardt