{"id":301,"date":"2013-12-08T20:13:05","date_gmt":"2013-12-09T01:13:05","guid":{"rendered":"http:\/\/pmcgovern.ca\/wp\/?p=301"},"modified":"2015-08-16T12:36:27","modified_gmt":"2015-08-16T16:36:27","slug":"reflections-on-talend","status":"publish","type":"post","link":"https:\/\/pmcgovern.ca\/wp\/?p=301","title":{"rendered":"Reflections on Talend"},"content":{"rendered":"<p>I just finished a project using <a href=\"http:\/\/www.talend.com\/products\/data-integration\">Talend ODI<\/a> to push around mountains of XML and am pleased to say it is well-suited to this kind of grunt work. The learning curve was steeper than I had expected, and it has some annoyances, but I&#8217;ll definitely use it again.<\/p>\n<p>Compared to scripts, Talend makes it much easier to implement major workflow changes. Move the components, or change how they are connected, and you&#8217;re done. If the stock components don&#8217;t do what you want, you can implement your own fairly easily. Runtime parameters are grouped into <a href=\"http:\/\/www.talendforge.org\/tutorials\/tutorial.php?idTuto=34\">contexts<\/a>, so moving from testing to production is fairly painless: just execute with a different context in each environment.<\/p>\n<p>On the down side, error handling is messy. A component can be triggered on an error, but not all components handle errors the same way. I ended up with a rat&#8217;s nest of components and conditions to handle error checking, some of which could have been handled by Talend itself. I also found the way errors in a sub-job bubbled up to its parent confusing.<\/p>\n<p>A serious limitation is Talend has no built-in mechanism to include resources like XSL and property files within a job. These artefacts must reside outside, an external dependency with no standard retrieval mechanism. Yes, only a poor carpenter blames his tools, but I had some oopsies because of bungling the deployment of collateral.<\/p>\n<p>Finally, the differences between iteration and flow connections between components was confusing. As far as I can tell, an iteration connection is used when components must execute in sequence, whereas flow connections are used when they must execute one after the other.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>I just finished a project using Talend ODI to push around mountains of XML and am pleased to say it is well-suited to this kind of grunt work. The learning curve was steeper than I had expected, and it has&#8230;<\/p>\n","protected":false},"author":1,"featured_media":302,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[11],"tags":[],"class_list":["post-301","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-programming"],"_links":{"self":[{"href":"https:\/\/pmcgovern.ca\/wp\/index.php?rest_route=\/wp\/v2\/posts\/301","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/pmcgovern.ca\/wp\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/pmcgovern.ca\/wp\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/pmcgovern.ca\/wp\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/pmcgovern.ca\/wp\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=301"}],"version-history":[{"count":3,"href":"https:\/\/pmcgovern.ca\/wp\/index.php?rest_route=\/wp\/v2\/posts\/301\/revisions"}],"predecessor-version":[{"id":310,"href":"https:\/\/pmcgovern.ca\/wp\/index.php?rest_route=\/wp\/v2\/posts\/301\/revisions\/310"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/pmcgovern.ca\/wp\/index.php?rest_route=\/wp\/v2\/media\/302"}],"wp:attachment":[{"href":"https:\/\/pmcgovern.ca\/wp\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=301"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/pmcgovern.ca\/wp\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=301"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/pmcgovern.ca\/wp\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=301"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}