Kamil Nešetřil

Správa a analýza dat o životním prostředí

Uživatelské nástroje

Nástroje pro tento web


Rozdíly

Zde můžete vidět rozdíly mezi vybranou verzí a aktuální verzí dané stránky.


Předchozí verze
cs:cheatsheet [21.03.2024] (aktuální) – [Tahák pro Pentaho Data Integration] Kamil Nešetřil
Řádek 1: Řádek 1:
 +======Tahák pro Pentaho Data Integration ======
 +//Toto je návod pro práci s Pentaho Data Integration (<nowiki>PDI</nowiki>) – Kettle – zejména s vývojovým prostředím <nowiki>Spoon</nowiki>//. Nejprve si přečtěte [[tools#platforma_pentaho|Obecné informace o PDI a dalších komponentách platformy Pentaho]].
  
 +> [[https://hop.apache.org/|{{ :hop_logo.svg?nolink&40|Apache Hop}}]]Od té doby, kdy byla firma Pentaho koupena korporací Hitachi, vývoj platformy Pentaho stagnuje a web platformy je zmatený. Původní autor PDI (Matt Casters) vytvořil [[hop>https://hop.apache.org/|Apache Hop]], fork PDI, který má konečně elegantní architekturu a je intenzivně vyvíjen. Transfor­mace PDI je možo do něj importovat. Nově funguje [[doc>https://hop.apache.org/blog/2022/12/hop-2.2.0/#_new_data_grid_toolbars_instead_of_right_click_menu|náhled dat na kliknutí]], stejně jako v PDI.
 +
 +{{ :spoon.png?nolink|}}
 +===== Jak začít =====
 +  - Nainstalujte si [[javalang>https://www.java.com/en/download/manual.jsp|Javu (64-bit)]]((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ž 32bitová Java může alokovat. Pokud máte 32bitový operační systém, upravte alokovanou paměť ve spouštěcím skriptu.\\ Je možno využít i [[foss>https://adoptopenjdk.net/?variant=openjdk11&jvmVariant=hotspot|open-source verzi]].\\ 
 +Pokud nemůžete instalovat, použijte [[https://portableapps.com/apps/utilities/OpenJDK64|portable]] verzi.\\ 
 +Při //aktualizaci// Javy je třeba ve Windows ručně aktualizovat cestu k Javě: „Upravit proměnné prostředí systému“ -> „Proměnné prostředí“ -> ''JAVA_HOME'')).
 +  - Stáhněte si [[download>https://www.hitachivantara.com/pentaho/pentaho-plus-platform/data-integration-analytics/pentaho-community-edition.html|Pentaho Data Integration (Community Edition)]].
 +  - Rozbalte archiv ZIP do libovolné složky.
 +  - Spusťte ''<nowiki>Spoon</nowiki>.bat''((tento skript také nastaví prostředí spuštěním dávky ''set-pentaho-env.bat'' – netřeba spouštět samostatně. \\ Případné chyby: viz [[vid>https://www.youtube.com/watch?v=PH6mWe3YVCQ|video]]))
 +  - Přejděte na záložku **Design**. \\ {{:spoon_tabs.png}}
 +  - Přetáhněte položky ze složek vlevo na pracovní plochu vpravo //(drag and drop)//.
 +
 +Níže je seznam některých kroků (//steps//) transformací a dále totéž pro jobs (úlohy vytvořené z více transformací). Jsou zmíněny i triky a tipy, které mi nebyly z dokumentace zřejmé.
 +
 +
 +
 +
 +===== Některé často používané kroky v transformacích =====
 +^ Symbol                         ^ Název                                                                                                                                                 ^ Popis                                                                                                                                                                                                                                                                                                                                                                                                                              ^
 +| {{ :pdi07_textfileinput.png?40&nolink }} | [[hitachi>https://help.hitachivantara.com/Documentation/Pentaho/9.4/Products/Text_File_Input|Text file input]]          | Čtení textových souborů. Používat i pro soubory CSV (nikoliv ''<nowiki>CSV</nowiki> file input'', který neumí zpracovat jednoduše celou složku). Pěkně umí fixed text. Pokud vyberu ''Number of header lines'', tak budu asi potřebovat definovat sloupce ručně, protože uvažuje jen první řádek a ostatní vynechává. Nebo raději pro vývoj upravit záhlaví na jednořádkové a pro produkci použít původní soubory. |
 +|Jiné kroky umožňují načítat data z (a ukládat do) nejrůznějších databází, zdrojů (e-mail, lokální počítač, FTP, HTTP) a souborů (MS Excel, [[wpcs>Shapefile|ESRI SHP]], [[wpcs>JSON]], [[wpcs>YAML]], [[wpcs>RSS]], ZIP atd.) |||
 +| {{ :pdi08_textfileoutput.png?40&nolink }} | [[hitachi>https://help.hitachivantara.com/Documentation/Pentaho/9.4/Products/Text_File_Output|Text file output]]       | Vytvoření textových souborů. Může definovat obrovskou ''length'', díky které nahlásí chybu s pamětí – stačí smazat.                                                                                                                                                                                                                                                                                                            |
 +| {{ :cheatsh17.png?40&nolink }}  | [[hitachi>https://help.hitachivantara.com/Documentation/Pentaho/9.4/Products/Table_Output|Table output]]                         | 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.                                                                                                                                                        |
 +| {{ :pdi03_msexcelwriter.png?40&nolink }} | [[hitachi>https://help.hitachivantara.com/Documentation/Pentaho/9.4/Products/Microsoft_Excel_Writer|Microsoft Excel Writer]]      | Ukládá data do dokumentu ve formátu Microsoft Excel.                                                                                                                                                                                                                                                                                                                                                                           |
 +| {{ :cheatsh05.png?40&nolink }}  | [[https://pentaho-community.atlassian.net/wiki/spaces/EAI/pages/371558145/Filter+Rows|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 [[hitachi>https://help.hitachivantara.com/Documentation/Pentaho/9.4/Products/Switch-Case|Switch-Case]].                                                                                                                                                                       |
 +| {{ :cheatsh06.png?40&nolink }}  | [[https://pentaho-community.atlassian.net/wiki/spaces/EAI/pages/376442115/Formula|Formula]]                                                                                                 | Možno použít pro jednoduché výpočty (např.: ''sloupec_1 * sloupec_2''), pro jednoduché logické podmínky či spojování řetězců. [[cheatsheet#formula|Mé příklady vzorců dole na této stránce]].                                                                                                                                                                                                               |
 +| {{ :pdi06_calculator.png?40&nolink }} | [[hitachi>https://help.hitachivantara.com/Documentation/Pentaho/9.4/Products/Calculator|Calculator]]                       | Vytvoření nového pole pomocí předdefino­vaných vzorců. Je rychlejší než Formula (o řádek výše), ale méně obecný.                                                                                                                                                                                                                                                                                                                |
 +| {{ :cheatsh09.png?40&nolink }}  | [[hitachi>https://help.hitachivantara.com/Documentation/Pentaho/9.4/Products/Group_By|Group by]]                                 | 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.                                                                                                                                                                                                                                              |
 +| {{ :cheatsh14.png?40&nolink }}  | [[hitachi>https://help.hitachivantara.com/Documentation/Pentaho/9.4/Products/Select_Values|Select values]]                       | 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.                                                                                                                                                                                            |
 +| {{ :cheatsh15.png?40&nolink }}  | [[hitachi>https://help.hitachivantara.com/Documentation/Pentaho/9.4/Products/Sort_rows|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!!!**                                                                                                                                                                         |
 +| {{ :cheatsh13.png?40&nolink }}  | [[hitachi>https://help.hitachivantara.com/Documentation/Pentaho/9.4/Products/Replace_in_String|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ů.                                                                                                                                                  |
 +| {{ :cheatsh16.png?40&nolink }}  | [[hitachi>https://help.hitachivantara.com/Documentation/Pentaho/9.4/Products/Split_Fields|Split Fields]]                                                                                       | Rozdělí textový řetězec v jednom sloupci do více sloupců podle zvoleného oddělova­cího znaku či textového řetězce.                                                                                                                                                                                                                                                                                                              |
 +| {{ :pdi16_stremlookup.png?40&nolink }} | [[https://pentaho-community.atlassian.net/wiki/spaces/EAI/pages/371558139/Stream+Lookup|Stream lookup]]                                                                              | //Join//: propojení dvou streamů (tabulek – např. číselníku) aniž by bylo třeba mít záznamy seřazené.                                                                                                                                                                                                                                                                                                                                                                               |
 +| {{ :pdi20_rownorm.png?40&nolink }} | [[hitachi>https://help.hitachivantara.com/Documentation/Pentaho/9.4/Products/Row_Normaliser|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 nastavit řádky různě //                                                                                                                                                                                                    |
 +| {{ :pdi21_rowdenorm.png?40&nolink }} | [[hitachi>https://help.hitachivantara.com/Documentation/Pentaho/9.4/Products/Row_Denormaliser|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)\\ [[resources#microsoft_power_query|Více]]|
 +| {{ :pdi17_setvar.png?40&nolink }} | [[https://pentaho-community.atlassian.net/wiki/spaces/EAI/pages/371558231/Set+Variables|Set Variables]]                                                                                   | Nastav proměnnou. V ostat­ních transformacích je možno je volat jako proměnné i jako parametry. U para­metrů 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.                                                                                                  |
 +| {{ :pdi18_etlmetadatainjec.png?40&nolink }} | [[hitachi>https://help.hitachivantara.com/Documentation/Pentaho/9.4/Products/ETL_metadata_injection|ETL Metadata Injection]]    | Řízení transformací ze streamu. Pokud chci spustit s různými parametry, je třeba kombinovat s ''Transformation Executor'' (níže).\\ [[https://support.pentaho.com/hc/article_attachments/360003635351/PDI_Techniques_-_Design_Guidelines.pdf|Best practices]].\\ [[https://planet.mysql.com/entry/?id=27425|Matt Casters: Parse nasty XLS with dynamic ETL]] \\ Na konci [[http://kettle.bleuel.com/2016/04/14/pentaho-6-1-part-2/|článku]] je příklad včetně zdrojových souborů.\\ Alternativou je spustit transformaci v jobu a zaškrtnout //Execute every input row// – [[vid>https://www.youtube.com/watch?v=A8-oQHFi4VA|video]].|
 +| {{ :pdi19_transformexe.png?40&nolink }} | [[hitachi>https://help.hitachivantara.com/Documentation/Pentaho/9.4/Products/Transformation_Executor|Transformation Executor]]  | Spustí pro každý řádek novou transformaci. Předává proměnné, které se v odkazované transformaci volají ''${takto}''                                                                                                                                                                                                                                                                                                                                                        |
 +| {{ :cheatsh01.png?40&nolink }}  | [[https://pentaho-community.atlassian.net/wiki/spaces/EAI/pages/371558172/Add+Constants|Add Constants]]                                                                                     | Přidání jedné nebo více hodnot (konstant) do polí.                                                                                                                                                                                                                                                                                                                                                                             |
 +| {{ :cheatsh02.png?40&nolink }}  | [[https://pentaho-community.atlassian.net/wiki/spaces/EAI/pages/375133731/Analytic+Query|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.                                                                                                         |
 +| {{ :cheatsh03.png?40&nolink }}  | [[https://pentaho-community.atlassian.net/wiki/spaces/EAI/pages/386803438/Concat+Fields|Concat Fields]]                                                                                     | Slučování více polí do jednoho.                                                                                                                                                                                                                                                                                                                                                                                                |
 +| {{ :cheatsh04.png?40&nolink }}  | [[https://pentaho-community.atlassian.net/wiki/spaces/EAI/pages/371558228/Copy+rows+to+result|Copy rows to result]]                                                                         | Zajišťuje převod dat do další transfor­mace v rámci „jobu“. Pro vývoj netřeba spojovat jobem.                                                                                                                                                                                                                                                                                                                                   |
 +| {{ :cheatsh07.png?40&nolink }}  | [[https://pentaho-community.atlassian.net/wiki/spaces/EAI/pages/372081230/Get+Data+From+XML|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ě.                                                                                     |
 +| {{ :cheatsh08.png?40&nolink }}  | [[hitachi>https://help.hitachivantara.com/Documentation/Pentaho/9.4/Products/Get_rows_from_result|Get rows From result]]         | Zajišťuje načtení dat z transfor­mace, na kterou je tato napojena v rámci „jobu“. Aby bylo možné data načíst, musí být předchozí transfor­mace 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.                                                                                                                              |
 +| {{ :cheatsh10.png?40&nolink }}  | [[https://pentaho-community.atlassian.net/wiki/spaces/EAI/pages/386793725/Mail+step|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ě.                                                                                                                                        |
 +| {{ :cheatsh11.png?40&nolink }}  | [[hitachi>https://help.hitachivantara.com/Documentation/Pentaho/9.4/Products/Modified_Java_Script_Value|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í.                                                                                                                                                                                                                                                             |
 +| {{ :pdi05_udefjavaexp.png?40&nolink }} | [[https://pentaho-community.atlassian.net/wiki/spaces/EAI/pages/376439964/User+Defined+Java+Expression|User Defined Java Expression]]                                                | Vlastní výraz napsaný v jazyce Java. [[java|Mé příklady]].                                                                                                                                                                                                                                                                                                                   |
 +| {{ :cheatsh12.png?40&nolink }}  | [[hitachi>https://help.hitachivantara.com/Documentation/Pentaho/9.4/Products/Pentaho_Reporting_Output|Pentaho Reporting Output]] | Umožňuje vytvářet reporty, podle předem definované šablony vytvořené v PRD. Cesta k šabloně a k souboru, který má být z této šablony vytvořen, musí být dopředu defino­vána. V nastavení komponenty se vybírá formát výstupního reportu (např.: PDF, HTML atd.).                                                                                |
 +| {{ :cheatsh18.png?40&nolink }}  | [[hitachi>https://help.hitachivantara.com/Documentation/Pentaho/9.4/Products/Unique_Rows|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''                                                                                                                                                                                                                    |
 +| {{ :pdi01_msaccessinput.png?40&nolink }}  | [[https://pentaho-community.atlassian.net/wiki/spaces/EAI/pages/371558259/Access+Input|Microsoft Access Input]]                                                                   | Čte data ze souborů ve formátu Microsoft Access.                                                                                                                                                                                                                                                                                                                                                                               |
 +| {{ :pdi02_msaccessoutput.png?40&nolink }} | [[https://pentaho-community.atlassian.net/wiki/spaces/EAI/pages/371558136/Access+Output|Microsoft Access Output]]                                                                 | Ukládá data do tabulky databáze Microsoft Access.                                                                                                                                                                                                                                                                                                                                                                              |
 +| {{ :pdi04_mergejoin.png?40&nolink }} | [[https://pentaho-community.atlassian.net/wiki/spaces/EAI/pages/371558201/Merge+Join|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.                                                                                                                                                                                                                                                                                    |
 +| {{ :pdi09_rowflattener.png?40&nolink }} | [[hitachi>https://help.hitachivantara.com/Documentation/Pentaho/9.4/Products/Row_Flattener|Row flattener]]               | Převod sloupce na řádek                                                                                                                                                                                                                                                                                                                                                   |
 +| {{ :pdi10_addsequence.png?40&nolink }} | [[hitachi>https://help.hitachivantara.com/Documentation/Pentaho/9.4/Products/Add_sequence|Add sequence]]                                                                                | Inkrementace hodnot (indexace řádků apod.)                                                                                                                                                                                                                                                                                                                                                                                     |
 +| {{ :pdi11_xbaseinput.png?40&nolink }} | [[https://pentaho-community.atlassian.net/wiki/spaces/EAI/pages/371558120/XBase+Input|XBase input]]                                                                                   | Čte soubory databázového typu dbf                                                                                                                                                                                                                                                                                                                                                                                              |
 +| {{ :pdi12_getfilenames.png?40&nolink }} | [[https://pentaho-community.atlassian.net/wiki/spaces/EAI/pages/371558124/Get+File+Names|Get file names]]                                                                           | Získá cestu/jméno ke všem souborům ve vybrané složce                                                                                                                                                                                                                                                                                                                                                                           |
 +| {{ :pdi15_regexeval.png?40&nolink }}  | [[hitachi>https://help.hitachivantara.com/Documentation/Pentaho/9.4/Products/Regex_Evaluation|Regex evaluation]]           | Vlastní regulární výraz. Mé příklady dole na této stránce: [[cheatsheet#regularni_vyrazy|Regulární výrazy]].                                                                                                                                                                                                                                                                                        |
 +| {{ :pdi22_blockuntil.png?40&nolink }} | [[https://pentaho-community.atlassian.net/wiki/spaces/EAI/pages/386799999/Block+this+step+until+steps+finish|Block this step until steps finish]]                                          |                                                                                                                                                                 |
 +| | [[https://pentaho-community.atlassian.net/wiki/spaces/EAI/pages/371558152/Dummy+do+nothing|Dummy (do nothing)]] | Spojování větví; zobrazení výsledků (např. ''Filter rows''                                                                |
 +
 +Další kroky jako doplňky pro PDI:
 +  * Google Spreadsheet Input/Output
 +  * [[git>mattyb149/load-text-from-file-plugin|Load Text From File]]
 +    * Extrahuje data např. z PDF či HTML.
 +    * Využívá [[wp>Apache Tika]], který podporuje [[https://tika.apache.org/1.22/formats.html|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á [[https://pdfbox.apache.org|Apache PDFBox]], který umí vyplňovat formuláře, dělit a slučovat soubory PDF atd.
 +  * [[git>pentaho-labs/pentaho-machine-intelligence|Machine Intelligence]] využívá volitelně různé enginy: R, Python, Weka či elegantně v Javě s využitím GPU Nvidia [[https://deeplearning4j.konduit.ai/|Deeplearning4j]].
 +  * [[git>pentaho-labs/pmi-visualization|PMI Visualization]] Plugin – vizualizace v PDI {{:pmi_visu_plugin.jfif?nolink|PMI Visualization – 3D Exploration and Scatter Plot Matrix}}
 +
 +===== Některé často užívané entries v jobs =====
 +^ Symbol ^ Název ^ Popis ^
 +| {{ :cheatsheet_job_02.png?40&nolink }}  | [[https://pentaho-community.atlassian.net/wiki/spaces/EAI/pages/370967988/Start|START]] | Možnosti spouštění jobu. |
 +| {{ :cheatsheet_job_03.png?40&nolink }}  | [[hitachi>https://help.hitachivantara.com/Documentation/Pentaho/9.4/Products/Transformation_(job_entry)|Transformation]] | Spuštění transfor­mace |
 +| {{ :cheatsheet_job_04.png?40&nolink }}  | [[https://pentaho-community.atlassian.net/wiki/spaces/EAI/pages/372703425/Success|Success]] | Možné ukončení jobu. Ignoruje chyby a vynutí úspěšné ukončení jobu. |
 +| {{ :cheatsheet_job_01.png?40&nolink }}  | [[https://pentaho-community.atlassian.net/wiki/spaces/EAI/pages/371558464/Get+a+file+with+FTP|Get a file with FTP]] |  |
 +| {{ :cheatsheet_job_05.png?40&nolink }}  | [[https://pentaho-community.atlassian.net/wiki/spaces/EAI/pages/371558462/Mail|Mail]] |  |
 +| {{ :cheatsheet_job_06.png?40&nolink }}  | [[https://pentaho-community.atlassian.net/wiki/spaces/EAI/pages/372703451/Unzip+file|Unzip file]] |  |
 +| {{ :cheatsheet_job_07.png?40&nolink }}  | [[https://pentaho-community.atlassian.net/wiki/spaces/EAI/pages/372081674/Truncate+tables|Truncate tables]] |  |
 +
 +Oficiální zdroj uvádí všechny kroky [[hitachi>https://help.hitachivantara.com/Documentation/Pentaho/9.4/Products/Transformation_step_reference|transformací]] a entries [[hitachi>https://help.hitachivantara.com/Documentation/Pentaho/9.4/Products/Job_entry_reference|jobů]].\\
 +Tomu v Apache Hop odpovídají [[doc>https://hop.apache.org/manual/latest/pipeline/transforms.html|transforms]] a [[doc>https://hop.apache.org/manual/latest/workflow/actions.html|actions]].
 +
 +=====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ů (regulární výraz odpovídá názvu souborů)
 +^Popis  ^Regulární výraz  ^
 +|Soubory s danou příponou |''.*\.xlsx'' |
 +|Libovolné soubory|''.*'' |
 +|Soubory začínající na ''facts'' | ''facts.*''|
 +
 +**Tabulka** Výběr z textového řetězce
 +^Popis  ^Regulární výraz  ^Vstup  ^Výstup  ^
 +|Mezery a tabulátory |<code reg>[ \t]{1,}</code> | |
 +|Mezi závorkami |<code reg>.*\((.*)\).*</code> |stanice: ČK (9 m n.m) |9 m n.m |
 +|Po mezeře před závorkou |<code reg>[]* (.*) \(.*</code> |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 |<code reg>[+\-]?\d+(\,\d{1,2})?</code> |s desetinnou čárkou\\ |
 +|::: |<code reg>[+\-]?\d+(\.\d{1,2})?</code> |s desetinnou tečkou\\ {{:regex_cislo.png?nolink |}} |
 +|6 až 8 číslic |<code reg>^[0-9]{6,8}$</code> |[[https://stackoverflow.com/questions/4758414/6-digits-regular-expression|Zdroj]]|
 +|Dvě verze téhož jména |<code reg>(Bill|William) Turner</code> | Zdroj již neexistuje|
 +|Jména políček v šachu\\ např. ''A6'' |<code reg>[A-H][1-8]</code> | Zdroj již neexistuje|
 +|Cokoliv začínající číslicí |<code reg>[0-9].*</code> |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+.)$'' | |
 +
 +=====JavaScript=====
 +Zkopírovat hodnoty do prázdných polí na následucících řádcích. Jako je v Excelu //Vyplnit dolů//:
 +<code javascript>
 +var novy_sloupec;
 +if(existujici_sloupec === null)
 +{}
 +else
 +{ novy_sloupec=existujici_sloupec; }</code>
 +
 +=====Formula=====
 +[[pentaho>https://pentaho-community.atlassian.net/wiki/spaces/EAI/pages/376442115/Formula|Dokumentace]], [[doc>https://hop.apache.org/manual/latest/pipeline/transforms/formula.html|Dokumentace Hop]]\\
 +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í. První krok v transformaci však nemůže někam poslat chybové řádky, protože řádky ještě nejsou v PDI.
 +  * Využívat krok [[hitachi>https://help.hitachivantara.com/Documentation/Pentaho/9.4/Products/ETL_metadata_injection|ETL metadata injection]] (viz výše)
 +  * Využívat proměnné a parametry (viz výše)
 +  * Relativní cesty (''${Internal.Entry.Current.Directory}'')
 +  * spojovat pomocí jména souboru,
 +  * Skoky (šipičky – spojení dvou kroků) je možno deaktivovat (ale někdy je to způsobí nefunkčnost zdrojového kroku 
 +  * Ve vzdálené databázi musí být povolen přístup (JDBC) z jiného počítače
 +  * Zaškrtněte: ''Date Format Lenient'', resp. ''Lenient number conversion'', aby bylo rozpoznávání datumu resp. čísla dostatečně benevolentní.
 +  * Klávesové zkratky atd.
 +     * <key>ctrl+🠕</key> = zarovná podle horní hrany; posune řádek nahoru
 +     * 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 transfor­mace a vytvoří se skok (spojující šipka).
 +     * málo užitečný [[https://pentaho-community.atlassian.net/wiki/spaces/EAI/pages/370967107/.12+Graphical+View#id-.12GraphicalView-KeyboardShortcuts|oficiální zdroj]]
 +  * Dobrá praxe
 +      * ukládat vstupní a výstupní soubory odděleně (složky ''in'', ''out''), samostatně si uložit původní zdrojová data (složka ''ZD'')
 +      * Dokumentovat za pomoci poznámek  
 +  * Pro export do SQLite je třeba za pomoci SQL vytvořit tabulku a pak do ní až dávat data (možno však ve stejné transformaci, protože skritpy jsou spouštěny jako první). Více kniha Pentaho Solutions 2010.
 +  * [[https://diethardsteiner.github.io/pdi/2017/04/21/PDI-Get-Metadata.html|Automatically source Metadata for ETL Metadata Injection]] (automaticky z různých Excelů)
 +  * [[git>rpbouman/kettle-cookbook|kettle-cookbook]] Automaticky generovaná dokumentace transformací((novější verze než upravoval David K.)). Lepší než ta, která je přímo v PDI.
 +  * [[https://support.pentaho.com/hc/en-us/articles/360000307943-Pentaho-Data-Integration|Best Practices]] – podrobné pdf
 +  * [[vid>https://iptv.usp.br/portal/video.action?idItem=23309&idVideoVersion=19916|video o historii PDI]]  (nelze stáhnout)
 +  * PBA (Pentaho Server) je možno využít jako repozitář PDI (od v.7)
 +
 +
 +  * **FAQ z již nedostupného webu**
 +    * //When I start ''<nowiki>Spoon</nowiki>.bat'' in a Windows environment nothing happens. How can I solve it?//
 +      * Edit the ''<nowiki>Spoon</nowiki>.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.
 +
 +<html><center><iframe width="560" height="315" src="https://www.youtube.com/embed/A4wZJqovMP8" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe></center></html>
 +
 +
 +===== Literatura =====
 +ROLDÁN, María Carina, 2017. //Learning Pentaho Data Integration 8 CE : Third Edition//. [[https://www.packtpub.com/product/learning-pentaho-data-integration-8-ce-third-edition/9781788292436|Packt Publishing]]. ISBN 978‑1‑78829‑007‑4.