2017-05-05 81 views
0

我搜索了很多,我注意到有大部分的方式是使用工作或subjob來實現循環。pentaho水壺有多少種類型的迴路?

我認爲這是一個廢物系統的來源?這是一個好方法?

由於某些原因,我需要使用pentaho水壺ETL工具來完成我的工作,我在程序員中編寫代碼並知道循環語法,如'while','for','foreach'和某些特定的迭代器。通知水壺提供的腳本工具 - JavaScript讓開發人員編寫JavaScript代碼或Java代碼。

我想如果我們應該使用javascript步驟而不是job或subjob來實現循環功能?因爲在大多數情況下我只需要迭代一個samll數據流,還有其他方法可以簡單地實現循環函數嗎?

爲什麼水壺沒有實現像「迭代器」這樣的一些步驟?是否有可能通過壺開發人員API實現迭代器?

在此先感謝。

回答

0

Pentaho數據集成使用基於流的設計,這意味着您可以定義流經過轉換或作業的每個記錄中發生的情況。在大多數情況下,這已經替代了您的基本for/while循環,並且還具有高度並行化的額外優勢,因爲轉換中的所有步驟都同時運行。

影響整組記錄(如分組,排序,聚合)的操作在單個步驟中受支持,因此您再也不會看到循環,這是隱含的。

很少,您需要在Javascript步驟中組合一個未知數量字段的循環,解析默認步驟阻塞或使用其他動態結構的無效JSON/XML。

作業和子作業用於組件的控制流和可重用性。他們讓您指定在哪些條件下以哪種順序運行哪些轉換。 你可以在其中實現循環,但是最好是將數據分組,然後將其傳遞給批處理中的子作業或轉換。

我的經驗是,如果你的第一個解決方案涉及到一個循環,你還不夠了解基於流的選項。通常繪製一張分解所有案例的流程圖,可以讓您對轉型在Spoon中看起來像什麼有一個公平的概念。

如果你添加一個例子到你想要使用循環的地方的問題上,也許我可以展示如何在沒有循環的情況下實現它。

我對this other question的回答是一個用於迭代構建JSON對象的Javascript步驟的示例。你會注意到它在沒有我編寫任何循環語法的情況下完成了它的工作,因爲JS步驟本身已經爲通過它的每一行運行。