abclinuxu.cz AbcLinuxu.cz itbiz.cz ITBiz.cz HDmag.cz HDmag.cz abcprace.cz AbcPráce.cz
Inzerujte na AbcPráce.cz od 950 Kč
Rozšířené hledání
×
    dnes 16:44 | IT novinky

    Počítačová hra Tetris slaví 40 let. Alexej Pažitnov dokončil první hratelnou verzi 6. června 1984. Mezitím vznikla celá řada variant. Například Peklo nebo Nebe. Loni měl premiéru film Tetris.

    Ladislav Hagara | Komentářů: 2
    dnes 10:44 | Nová verze

    MicroPython (Wikipedie), tj. implementace Pythonu 3 optimalizovaná pro jednočipové počítače, byl vydán ve verzi 1.23.0. V přehledu novinek je vypíchnuta podpora dynamických USB zařízení nebo nové moduly openamp, tls a vfs.

    Ladislav Hagara | Komentářů: 0
    dnes 10:22 | Nová verze

    Canonical vydal Ubuntu Core 24. Představení na YouTube. Nová verze Ubuntu Core vychází z Ubuntu 24.04 LTS a podporována bude 12 let. Ubuntu Core je určeno pro IoT (internet věcí) a vestavěné systémy.

    Ladislav Hagara | Komentářů: 1
    dnes 01:00 | Nová verze Ladislav Hagara | Komentářů: 0
    včera 19:55 | IT novinky

    Intel na veletrhu Computex 2024 představil (YouTube) mimo jiné procesory Lunar Lake a Xeon 6.

    Ladislav Hagara | Komentářů: 0
    včera 13:44 | IT novinky

    Na blogu Raspberry Pi byl představen Raspberry Pi AI Kit určený vlastníkům Raspberry Pi 5, kteří na něm chtějí experimentovat se světem neuronových sítí, umělé inteligence a strojového učení. Jedná se o spolupráci se společností Hailo. Cena AI Kitu je 70 dolarů.

    Ladislav Hagara | Komentářů: 0
    včera 13:22 | Nová verze

    Byla vydána nová verze 14.1 svobodného unixového operačního systému FreeBSD. Podrobný přehled novinek v poznámkách k vydání.

    Ladislav Hagara | Komentářů: 0
    včera 12:55 | Zajímavý software

    Společnost Kaspersky vydala svůj bezplatný Virus Removal Tool (KVRT) také pro Linux.

    Ladislav Hagara | Komentářů: 11
    včera 12:33 | Nová verze

    Grafický editor dokumentů LyX, založený na TeXu, byl vydán ve verzi 2.4.0 shrnující změny za šest let vývoje. Novinky zahrnují podporu Unicode jako výchozí, export do ePub či DocBook 5 a velké množství vylepšení uživatelského rozhraní a prvků editoru samotného (např. rovnic, tabulek, citací).

    Fluttershy, yay! | Komentářů: 1
    včera 12:00 | Nová verze

    Byla vydána (𝕏) nová verze 7.0 LTS open source monitorovacího systému Zabbix (Wikipedie). Přehled novinek v oznámení na webu, v poznámkách k vydání a v aktualizované dokumentaci.

    Ladislav Hagara | Komentářů: 0
    Rozcestník

    Open source business intelligence – Pentaho: ETL – úlohy

    12. 1. 2011 | Vratislav Beneš | Návody | 3374×

    V minulé části jsme se naučili vytvářet Transformace a nyní si z nich vytvoříme úlohu, která již bude představovat plnohodnotné ETL.

    Obsah

    Výchozí znalosti a předpoklady

    link

    Úspěšné zvládnutí instalace a následné upravení systému vyžaduje:

    1. Základní znalost prostředí Linux
    2. Základní znalost SQL
    3. Nainstalovanou Javu
    4. Základní znalost JavaScriptu
    5. Běžící PostgreSQL s právy pro vytváření databází
    6. Znalost administračních nástrojů pro PostgreSQL
    7. Znalost vytvoření transformace - viz předchozí část

    Job

    link

    Úloha, Job, je takovým managerem transformací. Umožňuje jejich spouštění, ovládání a obsluhování vstupních a výstupních souborů. Ze dvou a více transformací vytváří workflow (sériové nebo paralelní), do kterého můžete zařadit i podúlohy. Do workflow můžete vkládat scripty (SQL, JavaScript, Shell) pro komplexnější transformace. Dílčí transformace ovládá přes parametry, které se dědí z úlohy směrem dolu. Transformace naopak mohou nastavovat i proměnné v úloze, čímž komunikují s ostatními.

    Co umí?

    link

    Úloha se umí spustit a ukončit a mezi tím vykonat spoustu užitečné práce, jako je:

    1. Obsluha vstupních/výstupních souborů

    link
    • vytvoření/zrušení adresáře
    • smazání souboru
    • přejmenování/přesun souborů
    • zazipování/rozzipování archivů
    • porovnání souborů/adresářů

    Všechny tyto činnosti jsou velmi potřebné pro automatizované nahrávání/exportování dat, které si ukážeme na příkladu.

    2. Přenos souborů přes FTP, HTTP, SSH, SFTP

    link

    3. Práce s e-mailem

    link

    ETL nás/zákazníka může informovat o svém běhu a výsledku pomocí e-mailu. Vedle toho e-mail může být také vstupní brána pro data. Některá data mohou být distribuována pomocí e-mailu.

    4. Spouštění skriptů umožňující tvorbu komplexnějších transformací.

    link

    Dílčí data jsou uložena v jednotlivých souborech (1. soubor - informace o povaze pracoviště, 2. soubor - údaje o výrobě na daném pracovišti), ale my je potřebujeme zpracovat v jednom kroku (zajímají nás pouze vybraná pracoviště a na nich vyrobené výrobky)

    5. Řízení toku úlohy pomocí:

    link
    • test připojení databáze
    • test zámku souboru
    • test existence souboru/adresáře/tabulky/sloupce
    • ping vzdáleného počítače (databázový server, FTP, mail server ...)
    • zrušení úlohy
    • vyčkání na dokončení SQL příkazu

    6. Hromadné nahrávání (Bulk loading)do databáze

    link

    Je připraveno pro některé DB systémy jako MySQL, MSSQL nebo MS Access. V testování je i PostgreSQL.

    Na jednoduchém příkladu se postupně naučíme používat některé z výše uvedených schopností.

    Náš příklad bude řešit tento problém: Z adresáře ~/pentaho/data_import/ importuje veškeré csv soubory a přesune je do adresáře ~/pentaho/data_complete/. Z názvu souboru určí datum a pobočku. Výsledná data nahraje do databáze včetně informace o datu a pobočce. Pro import souborů použijeme v minulé části vytvořenou transformaci. Pokud se někomu nepovedlo transformaci vytvořit, může si ji stáhnout zde a importovat do spoon pomocí File – Import from an XML file.

    Příklad

    link

    Start a vytvoření nové úlohy

    link

    1. Spustíme spoon.sh, připojíme se k naší repository (pentaho_pdi)

    2. Z nabídky File nebo pomocí stisknutí ctrl+alt+n vytvoříme novou úlohu Job 1, kterou si uložíme jako pobocky_vyroba

    Vytvoření startovací sekvence a zjištění zjištění seznamu souborů k importu

    link
    1. Z nabídky Design vyberte General a na pracovní plochu spoon přetáhněte ikonku Start.
    2. Obdobně z nabídky File management přetáhněte Add filenames to result a pomocí tažení myškou a stisknutého Shift obě ikony propojte směrem od Start do  Add filenames to result.
    3. Nastavení parametrů Add filenames to result
      1. dvakrát klikněte na ikonku
      2. stiskněte Folder a vyberte ~/pentaho/data_import/ a stiskněte Add Nyní máme definovaný sledovaný adresář, u kterého budeme zjišťovat jeho obsah. Ten posléze budeme postupně zpracovávat. Jelikož jsme si nikterak neomezili výběr souborů, učiníme tak dodatečně.
      3. Ve Files/Folders vyberte nově přidaný adresář ~/pentaho/data_import/ a stiskněte Edit.
    4. Do políčka Wildcard můžete vepsat regulární výraz na výběr vhodných souborů. Nás zajímají pouze soubory typu csv, takže zadejte .*\.csv
    5. Stiskněte OK

    Tento krok nám do nově vytvářeného workflow předá seznam souborů, které bychom měli zpracovat.

    Transformace pro získání pobočky a datu z názvu souboru

    link

    Pokud předem nevíme, kolik souborů budeme importovat, musíme k seznamu přistupovat tak, že v něm je pouze jeden soubor a soubory importovat sekvenčně. Pokud můžeme importovat více souborů současně, pak si následující kroky můžeme paralelizovat. My se ale budeme věnovat sériovému zpracování. Výsledek Add filenames to result musíme nejdříve seřadit, vybrat první element a z názvu souboru vytáhnout jméno pobočky a datum a získané hodnoty uložit do proměnných, které budou použity v dalších krocích. Toto nám zajistí transformace a parametry úlohy.

    Vytvoříme si novou transakci, kterou přidáme do úlohy pobocky_vyrob za Add filenames to result.

    Vytvoření transformace get file name

    1. vytvořte si novou transformaci ctrl+n a pojmenujte ji get file name
    2. z Job na pracovní plochu přetáhněte Get files from result
    3. z Transform přetáhněte Sort rows
    4. z Statistics přetáhněte Sample rows
    5. z Job přetáhněte Set Variables
    6. postupně propojte jednotlivé komponenty v pořadí, jak jsme je přidávali na pracovní plochu

    Výsledek by měl vypadat následovně

    Pentaho

    Nyní si pojďme jednotlivé komponenty popsat a nakonfigurovat

    1. Get files from result převezme výsledek z nadřazené úlohy, v našem případě z  pobocky_vyrob. Vzhledem k funkci komponenty ji není potřeba nikterak konfigurovat.

    2. Sort rows přebírá výsledek Get files from result a chceme, aby nám jej seřadila. Get files from result, ale vrací více informací o souboru (cestu, název souboru, datum, typ aj). My si seřadíme výsledek podle celé cesty. Vzhledem k tomu, že importujeme soubory z jednoho adresáře u něhož neprocházíme podadresáře, pak se řazení podle cesty může zdát být zbytečné, ale nikdy nevíte, kdy se vám vstupní podmínky změní. Do pole Fields klikněte vedle 1 a z nabídky vyberte path. Směr nechme vzestupný (ascending) a rozlišovaní malých/velkých písmen můžete pominout. Vzhledem k tomu, že tato komponenta je univerzální a nemusí řešit pouze malé úlohy jako v našem případě, je nutné mít vždy na paměti povahu zpracovávaných dat. My seřazujeme 6 záznamů, ale pokud předchozí komponenta bude mít na výstupu několik stovek tisíc nebo milionů řádků (např. SQL dotaz) a data se nevejdou do RAM, pak může dojít ke swapování. Pro tento případ je k dispozici položka Sort directory, což je pracovní adresář pro naši úlohu. Další položky týkající se paměti (Sort size, Free memory threshold) je vhodné nastavovat experimentálně, až podle povahy seřazovaných dat. Výsledek by měl být následující:

      Pentaho

    3. Sample rows nám vybere n záznamů ze vstupního toku. My potřebujeme pouze první soubor, který dále budeme zpracovávat, takže do rozsahu výběru (Lines range) zadejte 1.

      Pentaho

    4. O souboru, který jsme vybrali, musíme nějak říct nadřazené úloze, aby s ním mohla pracovat. To zajistíme pomocí proměnných platných i v nadřazené úloze (tzv. parent job). V tuto chvíli nám na vstup přichází jediný záznam, z kterého potřebujeme získat informaci o názvu souboru (pro snadnější určení pobočky a datumu) a cestu k importovanému souboru (pro importní transformaci). Vytvoříme si tedy proměnné soubor_cesta a soubor. Do soubor_cesta načteme pole path a do  soubor načteme filename. Obě proměnné musí být platné i v nadřazené úloze, takže ve Variable scope type vyberte Valid in the parent job.

      Pentaho

    5. Uložte transformaci
    6. Výslednou transformaci zařadíme do toku úlohy pobocky_vyrob za Add filenames to result (generuje zpracovávaný seznam souborů). Vraťte se tedy do pobocky_vyrob a z nabídky General přidejte za Add filenames to result komponentu transformace a propojte je. Dvakrát kliněte na nově přidanou transformaci a zvolte možnost Specify by name and directory pomocí ikonky transformace (4 zelené šipky směřující do středu) vyberte get file name. Tímto jsme naši novou transformaci zařadili do pro ni nadřazené úlohy, ze které ji budeme řídit.

    Pokud se vám něco nepodařilo, pak si hotovou transformaci můžete stáhnout zde a importovat do Spoon pomocí File – Import from an XML file.

    Získání názvu pobočky a datumu exportu

    link

    V proměnných soubor_cesta a soubor máme uložené informace o importovaném souboru. Z jeho názvu potřebujeme separovat informaci o pobočce a datu, z které a kdy pocházejí daná data. Tyto informace v dalším kroku použijeme pro rozlišení záznamů ve výsledné tabulce v databázi (to jsme v minulém díle neřešili). Předchozí komponenta get file name nám naplnila proměnnou soubor textem s názvem souboru ve formátu brno_20101128.csv . Pomocí JavaScriptu z názvu získáme tyto informace: název pobočky, rok, měsíc a den.

    1. Z nabídky Scripting přesuňte na pracovní plochu komponentu JavaScript a propojte ji s get file name.

    2. Ve vlastnostech úlohy vytvořte (pravá myška – job settingsParameters) potřebné proměnné den, měsíc, rok, pobocka, soubor, soubor_cesta.

      Pentaho

    3. Nyní si vytvoříme vlastní script, který nám ze jména souboru vytáhne potřebné informace. Proměnná soubor obsahuje text, takže budeme řešit operace s textovými řetězci. Otevřete si komponentu JavaScript, přejmenujte ji na get info from filename a můžeme začít kódovat. Jednotlivé kroky jsou okomentované přímo v kódu

      //pomocne promenne 
      var pobocka="", rok="", mesic="", den="";
      var x=0;
      
      
      //nacte obsah prametru soubor
      dummy = parent_job.getVariable("soubor");
      
      //ziskame pozici kde konci pobocka zakonceneho _
      x = dummy.indexOf("_");
      
      //z retezce vyjme podretezec s nazvem pobocky
      pobocka = dummy.substring(0,x);
      
      //zkrati nazev souboru o delku nazvu pobocky a _
      dummy = dummy.substring(x,dummy.length());
      
      //jako podretezce nacte jednotlive casti datumu o pevne delce
      rok = dummy.substring(1, 5);
      mesic = dummy.substring(5, 7);
      den = dummy.substring(7, 9);
      
      //ziskane hodnoty ulozi do parametru ulohy
      	  
      	
      parent_job.setVariable("pobocka",pobocka);
      parent_job.setVariable("rok",rok);
      parent_job.setVariable("mesic",mesic);
      parent_job.setVariable("den",den);
      
      result = pobocka;
      
    4. Stiskněte OK

    Test funkcionality – logování událostí

    link

    Než se pustíme do vlastního nahrávání dat, pojďme si nejříve otestovat, co jsme doposud udělali. K tomu nám napomůže log Kettlu. Jako další komponentu do toku úlohy vložte z nabídky Utility objekt Write To Log. Jako ve velké většině jiných systémů je log obrovským zdrojem informací pro ladění a provoz systému. Kettle má několik úrovní logování s rozdílnou úrovní detailu. Pro náš případ nám postačí základní úroveň, tedy Basic. Do těla zprávy, která se bude vypisovat, umístíme všechny zjišťované proměnné den, měsíc, rok, pobocka, soubor, soubor_cesta, a to pomocí zápisu, který nám zaručí výpis jejich hodnot - ${proměnná}.

    Obsah tedy bude

    zpracovava se:
    ${pobocka} - ${rok} / ${mesic} / ${den}
    

    A výsledné nastavení by mělo vypadat následovně:

    Pentaho

    Celá úloha by měla vypadat takto

    Pentaho

    Nyní můžeme naši úlohu spustit. Stiskněte F9 nebo zelenou šipku v horním toolbaru.

    V logu byste měli najít podobné fragmenty

    link

    Tyto soubory byly zpracovávány

    2010/12/22 14:32:01 - Add filenames to result - Starting job entry
    2010/12/22 14:32:01 - Add filenames to result - Processing argument [/home/vratidlo/pentaho/data_import].. wildcard [.*\.csv] ?
    2010/12/22 14:32:01 - Add filenames to result - Adding file [file:///home/vratidlo/pentaho/data_import/ostrava_20101128.csv] to result filenames
    2010/12/22 14:32:01 - Add filenames to result - Adding file [file:///home/vratidlo/pentaho/data_import/brno_20101129.csv] to result filenames
    2010/12/22 14:32:01 - Add filenames to result - Adding file [file:///home/vratidlo/pentaho/data_import/ostrava_20101129.csv] to result filenames
    2010/12/22 14:32:01 - Add filenames to result - Adding file [file:///home/vratidlo/pentaho/data_import/brno_20101128.csv] to result filenames
    2010/12/22 14:32:01 - Add filenames to result - Adding file [file:///home/vratidlo/pentaho/data_import/ostrava_20101130.csv] to result filenames
    2010/12/22 14:32:01 - Add filenames to result - Adding file [file:///home/vratidlo/pentaho/data_import/brno_20101130.csv] to result filenames

    Informace z našeho logu

    2010/12/22 14:32:01 - Info o souboru: - zpracovava se:
    2010/12/22 14:32:01 - Info o souboru: - brno - 2010 / 11 / 28

    Takže, z 6 vstupních souborů byl zpracován pouze jeden, a to ten abecedně první - brno_20101128.csv. Z něj se správně separoval název pobočky brno a i jednotlivé části datumu rok: 2010, měsíc: 11, den: 28.

    Dosavadní úlohu si můžete stáhnout zde a importovat do Spoon pomocí FileImport from an XML file.

    Pro další část log nebudeme potřebovat takže jej vypneme. Pravou myškou klikněte na propojení mezi get info from filename a Write To Log a vyberte položku Disable hop. Tím jsme deaktivovali spouštění této komponenty. Samozřejmě, že můžete komponentu Write To Log smazat, ale může se vám ještě hodit :-)

    Import souborů do databáze

    link

    Nyní víme, jak se jmenuje soubor, který chceme importovat, umíme z jeho názvu přečíst jméno pobočky a datum, pro který jsou data platná. Zbývá nám tedy jen obsah daného soubor importovat do databáze a připojit k němu informaci o pobočce a datumu. V databázi ovšem nemáme žádnou tabulku, která by byla schopna pojmout veškeré výše zmíněné informace. Vytvoříme si tedy novou a tu (pobocky_data), do které jsem v minulém díle použijeme jako dočasnou pro import nových dat. Po každém importu vymažeme její obsah.

    1. Vytvoření nové tabulky
      CREATE TABLE vyroba_data
      (
        pobocka character varying(12) NOT NULL,
        datum_vyroby date NOT NULL,
        smena smallint NOT NULL,
        stroj character varying(12) NOT NULL,
        pocet_vyrobenych_kusu integer,
        CONSTRAINT pk_vyroba_data PRIMARY KEY (pobocka, datum_vyroby, smena, stroj)
      )
      WITH (
        OIDS=FALSE
      );
      ALTER TABLE vyroba_data OWNER TO pentaho_user;
    2. Připojíme transformaci import_datapobocky do toku úlohy za get info from filename
    3. Stávající transformaci (import_datapobocky) musíme upravit tak, aby poslouchala nový parametr obsahující cestu k importovanému souboru – soubor_cesta. To provedeme tak, že otevřeme transformaci a budeme editovat parametry komponenty Text file input, kde změníme položku Selected file na ${soubor_cesta}

      Pentaho

    4. 1.Abychom zajistili, že vždy budeme data nahrávat do prázdné tabulky, zaškrtněte u Table output možnost Truncate table.

      Pentaho

    5. Uložte pozměněnou transformaci
    6. Vraťte se do úlohy pobocky_vyroba a z nabídky Scripting přesuňte na pracovní plochu komponentu SQL a propojte ji s import_datapobocky
    7. Nastavíme připojení Connection na Pentaho data a napíšeme SQL příkaz, který nám vloží data z tabulky pobocky_data do vyroba_data. Jelikož do vyroba_data musíme vložit i informaci o pobočce a datumu, musíme daný SQL script rozšířit o proměnné nesoucí tyto informace. Aby jejich zápis SQL komponenta nebrala jako text, musíme zaškrtnout možnost Use variable substitution?

    SQL dotaz

    INSERT INTO vyroba_data(
                pobocka, datum_vyroby, smena, stroj, pocet_vyrobenych_kusu)
        select '${pobocka}','${rok}-${mesic}-${den}',smena, stroj, pocet_vyrobenych_kusu
        from pobocky_data;
    
    truncate table pobocky_data;
    

    Po dosazení hodnot z proměnných se složí například tento příkaz

    INSERT INTO vyroba_data(
                pobocka, datum_vyroby, smena, stroj, pocet_vyrobenych_kusu)
        select 'brno','2010-11-28',smena, stroj, pocet_vyrobenych_kusu
        from pobocky_data;
    
    truncate table pobocky_data;
    

    Výsledek tedy bude

    Pentaho

    Opět můžete otestovat funcionalitu. Po testu ale nezapomeňte vymazat obsah tabulky vyrobni_data, neboť dosud nemáme vyřešen přesun již importovaných souborů a nahrávaly by se nám stále dokola. To by ovšem vyvolalo výjimku, protože ETL by se snažilo uložit do vyroba_data. Spusťte tedy:

    truncate table vyroba_data;

    Zacyklení přes všechny soubory

    link

    Podle předchozích kroků jste si vytvořili ETL, které vám importuje podle abecedy první soubor definovaného adresáře do tabulky. V daném adresáři jsou ale ještě další soubory k importu. Musíme tedy vytvořit takový proces, který cyklicky bude importovat soubory, přesouvat je do jiného adresáře tak dlouho, dokud bude mít co zpracovávat. Tedy dokud zdrojový adresář nebude prázdný. Musíme tedy vyřešit přesun importovaného souboru do adresáře ~/pentaho/data_complete/, otestovat existenci dalších souborů k importu a ukončení úlohy.

    Přesun souborů do adresáře ~/pentaho/data_complete/ zajistíme pomocí komponenty Move files z nabídky File management. Přidáme ji do toku za komponentu SQL. Nastavení probíhá ve dvou krocích a to, co se bude přesouvat a kam se to bude přesouvat. Na první otázku máme snadnou odpověď neboť chceme přesunout importovaný soubor, který máme uložený v proměnné soubor_cesta. Kam ho chceme přesunout víme také. Takže pojďme si komponentu nakonfigurovat.

    1. Otevřete si komponentu Move files a v záložce General vložte do pole File/Folder source proměnnou ${soubor_cesta}

    2. Cílový adresář ~/pentaho/data_complete/ nastavíte v Destination folder a stiskněte Add.

      Pentaho

    3. Komponenta umí řešit konflikty při existenci souborů, vytvářet adresáře, soubory přejmenovávat, potažmo rozšiřovat jejich název o specifické informace, jako je třeba datum

    Rozhodnutí, zda-li spustit další interaci nebo úlohu, učiníme podle existence dalších souborů k importu. Toto nám zajistí komponenta na testování obsahu adresáře Check if a folder is empty. Tu najdete v nabídce Conditions. Zařaďte ji do toku za Move files. V případě, že tato komponenta odpoví souhlasně, což znamená, že testovaný adresář je prázdný (podle určité metriky), pak by měla úloha skončit úspěšně. Stejně jako pro začátek úlohy máme komponentu Star, tak i pro zakončení existují komponenty. Konkrétně se jedná o Success z nabídky General. Pokud z nějakého důvodu potřebujeme naopak úlohu přerušit, pak z Utility můžeme použít Abort job.

    1. Nastavení Check if a folder is empty je intuitivní. Do Folder name zadejte ~/pentaho/data_import.
    2. Jelikož nás zajímají pouze csv soubory, nastavte filtr pro výběr testovaných souborů na .*\.csv

    Pentaho

    My ale budeme věřit ve zdárný průběh a na pracovní plochu si ještě přesuneme Success :-)

    Každá komponenta v Kettlu svému okolí sděluje, zda-li její běh byl úspěšný, či nikoliv. To dělá pomocí vazeb, které nesou příznak result true nebo false. Doposud jsme řešili pouze úspěšné vykonání předcházející činnosti a všechny naše vazby mezi jednotlivými komponentami byly na bázi „result true“. Komponenta Check if a folder is empty, kterou testujeme obsah adresáře, vrátí při prázdném adresáři True a my tím pádem budeme chtít ukončit úlohu. Obdobně jako v předchozích případech, propojte komponentu Check if a folder is empty a Success. Pokud ovšem adresář obsahuje ještě nějaký soubor csv, pak chceme, aby se nám spustila další iterace. Znovu pomocí myšky a shift propojte Check if a folder is empty s počátkem Add filenames to result. Tím máme vytvořený cyklus. Ale pozor, Add filenames to result má stále původní seznam souborů! Jeho aktualizaci zajistíme zaškrtnutím Clear result filenames

    Pentaho

    Celá úloha pak bude vypadat takto a můžete si ji stáhnout zde

    Po jejím spuštění byste měli mít v tabulce vyroba_data 204 záznamů.

    pentaho_data=> select count(*) from public.vyroba_data;
     count 
    -------
       204
    (1 row)
    

    Spouštění úloh

    link

    Obdobně jako jsme spouštěli z řádky transformaci v minulém díle, tak i úlohu lze ovládat z řádky. Skript, ktrý nám to zajistí se jmenuje kitchten.sh.

    kitchen.sh 
    INFO  22-12 19:03:57,144 - Using "/tmp/vfs_cache" as temporary files store.
    Options:
      -rep        = Repository name
      -user       = Repository username
      -pass       = Repository password
      -job        = The name of the job to launch
      -dir        = The directory (dont forget the leading /)
      -file       = The filename (Job XML) to launch
      -level      = The logging level (Basic, Detailed, Debug, Rowlevel, Error, Nothing)
      -logfile    = The logging file to write to
      -listdir    = List the directories in the repository
      -listjobs   = List the jobs in the specified directory
      -listrep    = List the available repositories
      -norep      = Do not log into the repository
      -version    = show the version, revision and build date
      -param      = Set a named parameter =. For example -param:FOO=bar
      -listparam  = List information concerning the defined parameters in the specified job.
      -export     = Exports all linked resources of the specified job. The argument is the name of a ZIP file.
    

    A stejně jako jsme si minule vytvořili automatické spouštění transakce pomocí crontabu, tak analogicky můžeme naplánovat start úlohy. Jiný způsob souštění přímo z Pentaho si ukážeme v dalších dílech.

    ETL pro export

    link

    ETL neslouží pouze k importování dat, ale také k exportu. V našem příkladu jsme zpracovávali provozní data z poboček. Ta ale musel být něčím generována. Stejně tak archivace dat může být úlohou pro ETL. S blížícím se koncem roku spoustu systémů čekají roční uzávěrky, jejichž závěry budou předávány do jiných systémů (dcera -> matka apd).

    Závěrečné shrnutí

    link

    Náš příklad by mohl někomu připadat, že se jedná o kanón na vrabce, ale praxe ukazuje, že bez podobných nástrojů jako Kettle by bylo nahrávání dat z rozdílných zdrojů téměř neřešitelné. ETL jsem mocné prvky každého BI řešení a častokrát na jejich realizaci stojí a padá celé řešení. Ono pokud by správně neproběhlo nahrávání dat, tak není ani co zpracovávat.

    Kettle představuje velmi šikovný nástroj na vytváření a provoz ETL. Díky platformě Java lze provozovat na různých platformách. A díky úložišti metadat v databázi je celkem snadno přenositelný.

    Tento článek nemá ambici detailně popsat používání Kettlu, ale spíše vám poodkrýt možnost nahrávání dat (nemusí se jednat jen o data pro Pentaho). Pro bližší studium bych vás rád odkázal na stránky Kettlu.

    Příště si povíme o datových skladech

    Na shledanou s Pentaho


    Autor je pracovníkem společnosti OptiSolutions s.r.o.

    Společnost OptiSolutions s.r.o. se zabývá poskytováním řešení v oblasti CRM a Business Intelligence založených na Open Source technologiích SugarCRM a Pentaho.

           

    Hodnocení: 67 %

            špatnédobré        

    Nástroje: Tisk bez diskuse

    Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

    Komentáře

    Vložit další komentář

    12.1.2011 07:16 vlk
    Rozbalit Rozbalit vše Nefukcne linky na obrazky.
    HTTP ERROR: 500

    /mnt/abclinuxu/data/abclinuxu_data/abclinuxu/images/clanky/benes/pdi_job_add_filenames_cyc.png (Permission denied)

    RequestURI=/images/clanky/benes/pdi_job_add_filenames_cyc.png
    Luboš Doležel (Doli) avatar 12.1.2011 09:33 Luboš Doležel (Doli) | skóre: 98 | blog: Doliho blog | Kladensko
    Rozbalit Rozbalit vše Re: Nefukcne linky na obrazky.
    :-( Díky, opraveno.
    15.1.2011 17:34 archen | skóre: 4
    Rozbalit Rozbalit vše Talend versus Pentaho
    Pracuji na projektu, kde se v části uplatňuje (neuplatňuje) produkt Talend. Máte nějaké zkušenosti s tímto "konkurentem" Pentaho? Jestliže ano, můžete vypsat nějaké krátké srovnání?

    Díky.

    Ladislav
    EmperorWantsToControlOuterSpaceYodaWantsToExploreInnerSpaceThat'sTheFundamentalDiffBetweenGoodandBadSidesOfTheForce
    17.1.2011 15:28 vratidlo007 | skóre: 21
    Rozbalit Rozbalit vše Re: Talend versus Pentaho
    Ahoj, bohuzel s Talend zkusenost nemam, takze nemohu kvalifikovane oba nastroje srovnat. Ale neco malo jsem poGooglil a nasel toto

    17.1.2011 17:05 archen | skóre: 4
    Rozbalit Rozbalit vše Re: Talend versus Pentaho
    Hm, jasné. BTW ten link jsem taky vygooglil, ale i tak díky. Děláte v pentahoo nějaký větší projekt v heterogenním prostředí, nebo si s ním spíše hrajete?

    Jde mi o oblasti: HTTP POST/GET Data mining Webové služby XML

    resp. Jak zvládá tyto oblasti, dále jak lehce se dá Pentahoo ohýbat. Např. napsání vlastní komponenty, úprava stávající, když nefunguje tak, jak má, apod.

    S pozdravem,

    Ladislav Jech
    EmperorWantsToControlOuterSpaceYodaWantsToExploreInnerSpaceThat'sTheFundamentalDiffBetweenGoodandBadSidesOfTheForce
    17.1.2011 21:31 vratidlo007 | skóre: 21
    Rozbalit Rozbalit vše Re: Talend versus Pentaho

    Pentaho nas tak trosku zivi :-) Nasi zakaznici v nem maji sva firemni data a Pentaho jim pomaha v rizeni jejich firem. Mame zakazniky, kteri v nem maji desitky GB dat a pristupuje k nim desitky uzivatelu. Pokud se jedna o datamining, tak primo Pentaho nabizi Weku, coz je sam o sobe vynikajici SW na datamining. A Weka se da prave pres Kettle propojit primo s daty a vytvorit tak automatizovany proces.

    Pentaho je rozsiritelne plug-iny. Stejne tak se daji psat i vlastni komponenty do Kettlu.

    17.1.2011 21:46 archen | skóre: 4
    Rozbalit Rozbalit vše Re: Talend versus Pentaho
    Jasné:-). Hm, mrknu na to. Vypadá to docela zajímavě. Já už střídavě pracuji právě s Talend na jednom projektu. A abych pravdu řekl, ačkoli je to velice zajímavý produkt, tak má svá úskalí v tom, na co ho je dobré nasadit a na co ne.

    Bohužel v mém případě jsem narazil na řadu bugů, které jsou na druhou stranu velice rychle opravovány. Zároveň i při požadavku na novou funkcionalitu, když jsem poskytnul základní sadu kódů pro nový plugin, byly tyto nové komponenty společností po diskuzi s vývojáři opět celkem rychle zařazeny do oficiálního repositáře (samozřejmě po úpravě mého bastlu :-) ). Chvilkama jsem měl pocit, že by to bylo lepší celé napsat v Javě (Talend je javový projekt), a myslí si to více lidí, jelikož je to při určitém typu použití velmi problematické, resp. někdy potřebuji začít tam, kde dostupné komponenty končí, takže si stejně vytvářim vlastní tzv. rutiny, v podstatě javovské metody.

    No každopádně díky za info o alternativě k Talend, Pentahoo jde na věc trochu jinak, možná v některém ohledu i lépe. Zkusím si ho nainstalit a ošahat.

    Good luck s projekty.

    Ladislav
    EmperorWantsToControlOuterSpaceYodaWantsToExploreInnerSpaceThat'sTheFundamentalDiffBetweenGoodandBadSidesOfTheForce
    10.2.2011 10:44 PaSe
    Rozbalit Rozbalit vše Re: Open source business intelligence – Pentaho: ETL – úlohy
    Zdravim. Prosim o info o cenach Petanho pro komercni vyuziti - vyvoj BI&MIS&DWH projektů pro zakazniky, pripadne ceny skoleni, jsou-li k dispozici.
    22.3.2011 21:05 Duffy
    Rozbalit Rozbalit vše Re: Open source business intelligence – Pentaho: ETL – úlohy
    Dobry den, poslite nam prosim na seba kontakt na adresu sales@optisolutions.cz.

    Ozveme sa vam.

    Dakujem

    Založit nové vláknoNahoru

    ISSN 1214-1267   www.czech-server.cz
    © 1999-2015 Nitemedia s. r. o. Všechna práva vyhrazena.