č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

Žádné komentáře: