{"id":223,"date":"2006-12-14T23:32:33","date_gmt":"2006-12-15T06:32:33","guid":{"rendered":"http:\/\/www.nicholasgoodman.com\/bt\/blog\/2006\/12\/14\/simple-chart-from-csv-file\/"},"modified":"2006-12-14T23:32:33","modified_gmt":"2006-12-15T06:32:33","slug":"simple-chart-from-csv-file","status":"publish","type":"post","link":"http:\/\/www.nicholasgoodman.com\/bt\/blog\/2006\/12\/14\/simple-chart-from-csv-file\/","title":{"rendered":"Simple Chart from CSV File"},"content":{"rendered":"<p>There was some requests on the <a href=\"http:\/\/forums.pentaho.org\/forumdisplay.php?f=69\">Pentaho Data Integration forums<\/a> for an example of <a href=\"http:\/\/forums.pentaho.org\/showthread.php?t=49940\">how to generate a simple chart from a CSV file.<\/a><\/p>\n<p>Sometimes people get so lost in the technology, that it&#8217;s tough to just do something pretty simple.&nbsp; I totally get that.&nbsp; Pentaho still has plenty of room for improvement on the usability, especially for people coming to the platform for the first time.<\/p>\n<p>Well, here tis.<\/p>\n<p>Unzip <a href=\"http:\/\/www.nicholasgoodman.com\/entry_images\/examplecsv.zip\">examplecsv.zip<\/a> to <b>pentaho-demo\/pentaho-solutions\/samples\/etl\/<\/b> in the sample server.<\/p>\n<p>Basically, the idea is to turn a csv file (example.csv):<\/p>\n<blockquote><p><b>Year,PresentsNickReceived,PresentsRequested<\/b><br \/>2003,7,4<br \/>2004,9,8<br \/>2005,8,9<br \/>2006,11,8<\/p>\n<\/blockquote>\n<p>into this chart<br \/><img decoding=\"async\" src=\"http:\/\/www.nicholasgoodman.com\/entry_images\/examplecsv.png\" \/><\/p>\n<p>The confusing part, I&#8217;m guessing from the thread, was how data gets from KETTLE to PENTAHO.<\/p>\n<p>Not hard at all actually.<\/p>\n<p>Pentaho initiates (ie, calls Kettles API) the Kettle transform and then &#8220;slurps&#8221; in memory records from a specified step.&nbsp; It&#8217;s the UNIX equivalent of the &#8220;tee&#8221; utility where you&#8217;re just watching data arriving at a certain place.&nbsp; In this example, I&#8217;ve made it even more explicit by naming the &#8220;dummy&#8221; step &#8220;for_pentaho&#8221; so that it&#8217;s clear the step that Pentaho is &#8220;slurping&#8221; the data from.<br \/><img decoding=\"async\" src=\"http:\/\/www.nicholasgoodman.com\/entry_images\/examplecsvkettle.png\" \/><\/p>\n<p>After that, it&#8217;s just a matter of building a chart like any other in the platform.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>There was some requests on the Pentaho Data Integration forums for an example of how to generate a simple chart from a CSV file. Sometimes people get so lost in the technology, that it&#8217;s tough to just do something pretty simple.&nbsp; I totally get that.&nbsp; Pentaho still has plenty of room for improvement on the [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[15,16],"tags":[],"_links":{"self":[{"href":"http:\/\/www.nicholasgoodman.com\/bt\/blog\/wp-json\/wp\/v2\/posts\/223"}],"collection":[{"href":"http:\/\/www.nicholasgoodman.com\/bt\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/www.nicholasgoodman.com\/bt\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/www.nicholasgoodman.com\/bt\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"http:\/\/www.nicholasgoodman.com\/bt\/blog\/wp-json\/wp\/v2\/comments?post=223"}],"version-history":[{"count":0,"href":"http:\/\/www.nicholasgoodman.com\/bt\/blog\/wp-json\/wp\/v2\/posts\/223\/revisions"}],"wp:attachment":[{"href":"http:\/\/www.nicholasgoodman.com\/bt\/blog\/wp-json\/wp\/v2\/media?parent=223"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/www.nicholasgoodman.com\/bt\/blog\/wp-json\/wp\/v2\/categories?post=223"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/www.nicholasgoodman.com\/bt\/blog\/wp-json\/wp\/v2\/tags?post=223"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}