HgIS

Správa a analýza dat o životním prostředí
Environmental data management and analysis

Uživatelské nástroje

Nástroje pro tento web


cs:cheatsheet

Tahák pro Pentaho Data Integration

Toto je návod pro práci s Pentaho Data Integration (PDI) – zejména s vývojovým prostředím Spoon. Obecné informace o PDI a dalších komponentách platformy Pentaho.

Jak začít

  1. Nainstalujte si Javu1).
  2. Stáhněte si Pentaho Data Integration (Community Edition!). S verzí 8.1 bývají problémy, proto je lepší používat stále 7.1, má však např. příliš stručné chybové hlášky pro načítání do databáze. Verze 8.2 by měla být v pořádku.
  3. Rozbalte archiv ZIP do libovolné složky.
  4. Spusťte Spoon.bat2)
  5. Přejděte na záložku Design.
  6. Přetáhněte položky ze složek vlevo na pracovní plochu vpravo (drag and drop).

Níže je seznam nejběžnějších kroků (steps) transformací a dále totéž pro jobs (úlohy vytvořené z více transformací).

Přehled často používaných steps v transformacích

Symbol Název Popis
Add Constants Přidání jedné nebo více hodnot (konstant) do polí.
Analytic Query Možnost zohlednit předchozí/nadcházející hodnoty. Data musí být seřazena. Slouží k přístupu k datům v jiných řádcích. Můžeme tak data z několika řádků převést do jednoho řádku s několika novými sloupci. Data je možné seskupit podle vybraných sloupců, aby se slučovala pouze data, která mají něco společného.
Concat Fields Slučování více polí do jednoho.
Copy rows to result Zajišťuje převod dat do další transformace v rámci „jobu“. Pro vývoj netřeba spojovat jobem.
Filter rows Filtrování dat řádků pomocí vybraných podmínek. Datový tok je dále rozdělen na dvě větve podle splnění/nesplnění podmínky. Pokud se mají řádky rozdělit do více než dvou větví, použij Switch-Case.
Formula Tato komponenta se dá použít pro jednoduché výpočty (např.: sloupec_1 * sloupec_2), pro jednoduché logické podmínky či spojování řetězců. Mé příklady vzorců dole na této stránce.
Get data from XML Načítá data z XML souborů. Je možné přímo zvolit datové typy vstupních dat a jejich formát (např. u desetinných čísel). Obsahuje funkci pro automatické načtení sloupců podle tagů v XML souboru. Pokud požadovaná vstupní data nejsou textem mezi počátečním a ukončovacím tagem, ale například atributem tagu, je nutné přidat je ručně.
Get rows From result Zajišťuje načtení dat z transformace, na kterou je tato napojena v rámci „jobu“. Aby bylo možné data načíst, musí být předchozí transformace obsahovat komponentu „Copy rows to result“. V této komponentě se pak nastavují názvy sloupců a jejich datové typy. Pro vývoj netřeba spojovat jobem.
Group by Tato komponenta umožňuje počítat hodnoty pro skupiny dat. V nastavení se vyberou sloupce, které definují skupinu. Počítat se může například průměr, suma, minimum, maximum, atd.
Mail Umožňuje posílat email na předem definované adresy. Je nutné nastavit SMTP server, kterým může být například Gmail a ověření. Text emailu musí být také předem definovaný. K emailu je možné přidat přílohu, jejíž adresa (v souborovém systému) se nastavuje přímo v této komponentě.
Modified Java Script Value Umožňuje vytvářet javascriptové výrazy. Ty mohou být použity například pro upravování textových řetězců (cesty k souborům …). Ale má i spoustu dalších použití.
Pentaho Reporting Output Tato komponenta umožňuje vytvářet reporty, podle předem definované šablony vytvořené v Pentaho Report Designer. Cesta k šabloně a k souboru, který má být z této šablony vytvořen, musí být dopředu definována. V nastavení komponenty se vybírá formát výstupního reportu (např.: PDF, HTML, atd.).
Replace in string Nahradí vybrané znaky/slova v textových řetězcích. Lze použít regulárních výrazů nebo přímo vyhledávací funkce, kterou tato komponenta obsahuje. Nahrazení hledané části je možné za jiný textový řetězec, nebo za hodnotu některého ze sloupců.
Select values Slouží k vybírání, odstraňování a přejmenovávání sloupců. Umožňuje měnit datový typ, nastavovat délku textových řetězců, počty desetinných míst u reálných čísel a další formáty dat.
Sort rows Seřadí data podle vybraného sloupce nebo několika sloupců. Podle nastavení řadí vzestupně nebo sestupně. Zaškrtnutím Only pass unique rows? nevyřadí duplicity na základě řadících kritérií. Klíč je něco jiného. Proč? Teď mi to fungovalo!!!
Split Fields Rozdělí textový řetězec v jednom sloupci do více sloupců podle zvoleného oddělovacího znaku či textového řetězce.
Table output Tato komponenta slouží pro vkládání dat do SQL databáze. Obsahuje průvodce pro vytvoření připojení k databázi. Dále je třeba vybrat cílové schéma a tabulku v databázi. Dokáže také vrátit automaticky generované id záznamu.
Unique rows Odstraní duplicitní řádky. Nastavuje se sloupec, nebo sloupce, při jejichž shodné hodnotě u více řádků se zachová pouze první záznam. Před tímto krokem musí být data seřazena pomocí kroku Sort rows.
Microsoft Access Input Čte data ze souborů ve formátu Microsoft Access.
Microsoft Access Output Ukládá data do tabulky databáze Microsoft Access.
Microsoft Excel Writer Ukládá data do dokumentu ve formátu Microsoft Excel.
Merge Join Spojí řádky dvou načítaných vstupů pomocí vybraného klíče do jednoho výstupu. Vstupy musí být před spojením seřazeny podle vybraného klíče.
User Defined Java Expression Vlastní výraz napsaný v jazyce Java. Mé příklady.
Calculator Vytvoření nového pole pomocí matematických zápisů.
Text file input Čtení textových souborů. Používat pro soubory CSV (nikoliv CSV file input, který neumí zpracovat jednoduše celou složku). Pěkně umí fixed text.
Text file output Vytvoření textových souborů. Může definovat obrovskou length, díky které nahlásí chybu s pamětí – stačí smazat.
Row flattener Převod sloupce na řádek
Add sequence Inkrementace hodnot (indexace řádků apod.)
XBase input Čte soubory databázového typu dbf
Get file names Získá cestu/jméno ke všem souborům ve vybrané složce
Regex evaluation Vlastní regulární výraz. Mé příklady dole na této stránce: Regulární výrazy.
Stream lookup Porovnání dvou či více stejných textových řetězců
Set Variables Nastav proměnnou. V ostatních transformacích je možno je vodat jako proměnné i jako parametry. U parametrů je možno definovat implicitní hodnotu. Parametr může být definován např. pomocí proměnné, ale má i defaultní hodnotu, která se uplatní, pokud proměnná není naplněna. Dříve byla v PDI proměnná, později parametr.
ETL Metadata Injection Řízení transformací ze streamu. Pokud chci spustit s různými parametry, je třeba kombinovat s Transformation Executor (níže).
Best practices.
Matt Casters: Parse nasty XLS with dynamic ETL
Na konci článku je příklad včetně zdrojových souborů.
Transformation Executor Spustí pro každý řádek novou transformaci. Předává proměnné, které se v odkazované transformaci volají ${takto}.
Row Normaliser Type field (název nového sloupce kategorií)
Fieldname (vstupní záhlaví)
Type (hodnoty výstupních kategorií)
New field (výstupní záhlaví hodnot) – nefungovalo mi
Row denormaliser Key označuje vstupní kategorie.
The key field (název vstupního sloupce s kategoriemi),
Group field (co identifikuje celý budoucí řádek – např. filename),
Target fieldname = Key value (jednotlivé kategorie),
Value fieldname (název vstupního sloupce s hodnotami)
Více
Block this step until steps finish

Další kroky jsou dostupné na Marketplace jako doplňky pro PDI:

  • Google Spreadsheet Input/Output
    • extrahuje data např. z PDF či HTML
    • využívá Apache Tika, který podporuje různé formáty pouze metadata k: DWG, GDAL, HDF, NetCDF, Matlab a nějakým geografickým formátům
    • pro PDF používá Apache PDFBox, který umí vyplňovat formuláře, dělit a slučovat soubory PDF atd.
  • Machine Intelligence (blog post) využívá volitelně různé enginy: R, Python, Weka či elegantně v Javě s využitím GPU Nvidia Deeplearning4j.

Přehled často užívaných entries v jobs

Symbol Název Popis
START Možnosti spouštění jobu.
Transformation Spuštění transformace
Success Možné ukončení jobu. Ignoruje chyby a vynutí úspěšné ukončení jobu.
Get a file with FTP
Mail
Unzip file
Truncate tables

Oficiální zdroj uvádí všechny kroky transformací a entries jobů.

Regulární výrazy

Regulárních výrazů je více typů. Zde jsou uvedeny tak, jak fungují v PDI.

Tabulka Výběr vstupních souborů (PDI neumožňuje vybírat jména vstupních souborů obecněji)

Popis Regulární výraz
Soubory s danou příponou .*\.xlsx

Tabulka Výběr z textového řetězce

Popis Regulární výraz Vstup Výstup
Mezi závorkami
.*\((.*)\).*
stanice: ČK (9 m n.m) 9 m n.m
Po mezeře před závorkou
[]* (.*) \(.*
stanice: ČK (9 m n.m) ČK
Do znaku čárka, středník či tečka([^\s?:(?!;).]+).*
Do znaku čárka, středník či tečka apod.([^\s]+).*

Tabulka Validace textového řetězce

Popis Regulární výraz Detail
Validace čísla
napsaného jako text
s ne více než dvěma
desetinnými místy
[+\-]?\d+(\,\d{1,2})?
s desetinnou čárkou
Zdroj
[+\-]?\d+(\.\d{1,2})?
s desetinnou tečkou
Zdroj
6 až 8 číslic
^[0-9]{6,8}$
Zdroj
Dvě verze téhož jména
(Bill|William) Turner
Zdroj
Jména políček v šachu
např. A6
[A-H][1-8]
Zdroj
Cokoliv začínající nulou.
[0-9].*
Skutečně? Ve „Filter Rows“ je to možno udělat přímo bez regulárních výrazů.
Číslo s desetinnou tečkou (může být i záporné)^-?(\d+\.\d*)$
Číslo s tečkou na konci^(\d+.)$

Formula

Dokumentace
Názvy sloupců se zadávají v hranatých závorkách.

year([datum]) – Z plnohodnotného datumu v sloupečku datum vezme rok.
[rok]&"-"&[měsíc]&"-15" – Z textu odpovídajícímu roku a měsíci vytvoří datum (15. den)
IF(AND([nazev_veliciny]="souřadnice:"; [sloupec]="1");"x";"") – To jsem nepoužil, protože je to lepší udělat pomocí Lookup tabulky.
IF([x]>0;-1*[y];[x]) – Když jsou zamíchány souřadnice S-JTSK kladné a záporné.
IF([bottom_depth]>[predchozi];[predchozi];0) – Výpočet top_depth z bottom_depth. Sloupec predchozi se vypočítá pomocí Analytic Query.

Dílčí tipy

  • nenechat prázdné řádky ve vstupním dialogu –> smaž
  • chyby odvádět do samostatných větví, metadata injection, proměnné a parametry, relativní cesty – výhody a nevýhody, spojovat pomocí jména souboru, vypínání skoků, v DB musí být povolen přístup přes JDBC z jiného počítače
  • PBA (Pentaho Server) je možno využít jako repozitář PDI (od v.7)
  • klávesové zkratky atd.
    • ctrl + šipka nahoru = zarovná podle horní hrany
    • zmáčknutím mezerníku na stepu se ukážou atributy, dvojklik prostředním tlačítkem → description
    • označit krok, na který chci navázat + dvojklik na nový krok v nabídce vlevo → nový krok se přidá do transformace a vytvoří se skok (spojující šipka).
    • málo užitečný oficiální zdroj
  • Pro export do SQLite je třeba za pomoci SQL vytvořit tabulku a pak do ní až dávat data. Více kniha Pentaho Solutions 2010.
  • kettle-cookbook Automaticky generovaná dokumentace transformací3). Lepší než ta, která je přímo v PDI.
  • Best Practices – podrobné pdf
  • video o historii PDI (nelze stáhnout)
    • When I start Spoon.bat in a Windows environment nothing happens. How can I solve it?
      • Edit the Spoon.bat file and:
        • Replace in the last line start javaw with only java.
        • Add a pause in the next line.
        • Save and try it again.
    • How to use JNDI?
      • If you look inside the PDI main directory you'll see a sub-directory called simple-jndi, which contains a file named jdbc.properties. You should change this file so the JNDI information matches the one you use in your application server.
1)
Je třeba 64bit: Měl jsem 32bitový Firefox, který mi tedy stahoval 32bitvou Javu – ta mi nefungovala, protože spouštěcí skript PDI vyhradil více paměti než 32bit Java může alokovat. Pokud máte 32bitový operační systém, upravte alokovanou paměť ve spouštěcím skriptu.
2)
tento skript také nastaví prostředí spuštěním dávky set-pentaho-env.bat – netřeba spouštět samostatně
3)
novější verze než upravoval David K.
Tato stránka využívá cookies pro analýzu provozu. Používáním stránky souhlasíte s ukládáním těchto cookies na vašem počítači.Více informací
cs/cheatsheet.txt · Poslední úprava: 2019-04-12

Nástroje pro stránku