<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Re: csv file read in Talend Studio</title>
    <link>https://community.qlik.com/t5/Talend-Studio/csv-file-read/m-p/2253423#M36764</link>
    <description>&lt;P&gt;There are a couple of ways of doing this using a tFileInputDelimited. The first way is the easiest way, but requires that the number of rows before the header remains the same. In your example, the header row is row 15. So you would simply configure the tFileInputDelimited to have the header at row 15, and it would only select rows after the header. For example, your tFileInputDelimited might look something like this....&lt;/P&gt; 
&lt;P&gt;&amp;nbsp;&lt;/P&gt; 
&lt;P&gt;&lt;SPAN class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Screenshot 2019-02-08 at 20.11.14.png" style="width: 999px;"&gt;&lt;span class="lia-inline-image-display-wrapper" image-alt="0683p000009M1T3.png"&gt;&lt;img src="https://community.qlik.com/t5/image/serverpage/image-id/155419i45DFB6A81DCB89A9/image-size/large?v=v2&amp;amp;px=999" role="button" title="0683p000009M1T3.png" alt="0683p000009M1T3.png" /&gt;&lt;/span&gt;&lt;/SPAN&gt;&lt;/P&gt; 
&lt;P&gt;Alternatively (and probably more likely) you may want to do it more dynamically. You probably do not know how many rows will be used before the header of the set of data you want to import. If that is the case, a relatively easy way of solving this (for your example above) is to configure your tFileInputDelimited to have 5 columns which are all Strings. Then read from row 1 of the file. Now you know that the header row's column A will have "Email Address" in it. So what you do is set up a tMap to look for the first occurrence of this value and only return rows from when this happens. For example, I have knocked up a quick example of a tMap doing this.....&lt;/P&gt; 
&lt;P&gt;&amp;nbsp;&lt;/P&gt; 
&lt;P&gt;&lt;SPAN class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Screenshot 2019-02-08 at 20.31.49.png" style="width: 999px;"&gt;&lt;span class="lia-inline-image-display-wrapper" image-alt="0683p000009M31A.png"&gt;&lt;img src="https://community.qlik.com/t5/image/serverpage/image-id/138825iB00F9259BCEDE8C5/image-size/large?v=v2&amp;amp;px=999" role="button" title="0683p000009M31A.png" alt="0683p000009M31A.png" /&gt;&lt;/span&gt;&lt;/SPAN&gt;&lt;/P&gt; 
&lt;P&gt;&amp;nbsp;&lt;/P&gt; 
&lt;P&gt;I use a tMap variable I call "GoodData". It is set to a Boolean and has the Nullable box ticked (it must be allowed to be null). This works because tMap variables store their values between rows. So what I am doing is using the below code in the tMap variable....&lt;/P&gt; 
&lt;PRE&gt;Var.GoodData==null || Var.GoodData==false ? row1.A.compareToIgnoreCase("Email Address")==0 : Var.GoodData &lt;/PRE&gt; 
&lt;P&gt;....to say, "If the value of GoodData is null OR is false, test the value of Column A for 'Email Address'. If it is that, set the value of GoodData to true. Otherwise set it to false". If GoodData is ever found to be true, it will subsequently always be true.&lt;/P&gt; 
&lt;P&gt;&amp;nbsp;&lt;/P&gt; 
&lt;P&gt;In the output table of the tMap I simply have an output filter that checks the following ....&lt;/P&gt; 
&lt;PRE&gt;Var.GoodData!=null &amp;amp;&amp;amp; Var.GoodData&lt;/PRE&gt; 
&lt;P&gt;....which says "If GoodData is not null and true".&lt;/P&gt; 
&lt;P&gt;&amp;nbsp;&lt;/P&gt; 
&lt;P&gt;So only rows from "Email Address" row onwards are returned.&lt;/P&gt; 
&lt;P&gt;&amp;nbsp;&lt;/P&gt; 
&lt;P&gt;Of course, you may want to remove the Header Row as well and only return the data. This requires a small change, but makes use of a cool piece of functionality that most people don't consider. As I said, tMap variables keep their values between rows. They also are strictly processed from top to bottom. So due to that, you can act upon what happened in the previous data row.&amp;nbsp; Take a look at the layout of my tMap now.....&lt;/P&gt; 
&lt;P&gt;&amp;nbsp;&lt;/P&gt; 
&lt;P&gt;&lt;SPAN class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Screenshot 2019-02-08 at 20.40.54.png" style="width: 999px;"&gt;&lt;span class="lia-inline-image-display-wrapper" image-alt="0683p000009M2kZ.png"&gt;&lt;img src="https://community.qlik.com/t5/image/serverpage/image-id/135393i8D0457D5F7A10DC3/image-size/large?v=v2&amp;amp;px=999" role="button" title="0683p000009M2kZ.png" alt="0683p000009M2kZ.png" /&gt;&lt;/span&gt;&lt;/SPAN&gt;&lt;/P&gt; 
&lt;P&gt;I have a new tMap variable called "DataRow". The other tMap variable is exactly the same as the last time. However it is below the "DataRow" variable. This means the "DataRow" variable is checked first for every row. The code in the "DataRow" variable is below....&lt;/P&gt; 
&lt;PRE&gt;Var.GoodData!=null &amp;amp;&amp;amp; Var.GoodData ?  true : false&lt;/PRE&gt; 
&lt;P&gt;It checks to see if the "GoodData" variable is not null and true. If so, it sets its value to true. Otherwise it is false. Now we know that as soon as column A holds "Email Address", the "GoodData" variable will be set to true and will remain true. But the first time "GoodData" is set to true, "DataRow" has already been set to false. So the output table (which is now filtered using "DataRow) will not release the header row, but it will release the next row and every row after that.&lt;/P&gt; 
&lt;P&gt;&amp;nbsp;&lt;/P&gt; 
&lt;P&gt;Have a play around with this as it is REALLY useful functionality to know about.&lt;/P&gt;</description>
    <pubDate>Fri, 08 Feb 2019 20:47:11 GMT</pubDate>
    <dc:creator>Anonymous</dc:creator>
    <dc:date>2019-02-08T20:47:11Z</dc:date>
    <item>
      <title>csv file read</title>
      <link>https://community.qlik.com/t5/Talend-Studio/csv-file-read/m-p/2253421#M36762</link>
      <description>&lt;P&gt;I have a csv file as below example . How do i read line after Detailed Data and load into the table&amp;nbsp;&lt;/P&gt; 
&lt;P&gt;&amp;nbsp;&lt;/P&gt; 
&lt;P&gt;&lt;SPAN class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Capture.PNG" style="width: 709px;"&gt;&lt;span class="lia-inline-image-display-wrapper" image-alt="0683p000009M310.png"&gt;&lt;img src="https://community.qlik.com/t5/image/serverpage/image-id/152099iDE74B840045A4C27/image-size/large?v=v2&amp;amp;px=999" role="button" title="0683p000009M310.png" alt="0683p000009M310.png" /&gt;&lt;/span&gt;&lt;/SPAN&gt;&lt;/P&gt;</description>
      <pubDate>Sat, 16 Nov 2024 06:38:00 GMT</pubDate>
      <guid>https://community.qlik.com/t5/Talend-Studio/csv-file-read/m-p/2253421#M36762</guid>
      <dc:creator>Karuetl</dc:creator>
      <dc:date>2024-11-16T06:38:00Z</dc:date>
    </item>
    <item>
      <title>Re: csv file read</title>
      <link>https://community.qlik.com/t5/Talend-Studio/csv-file-read/m-p/2253422#M36763</link>
      <description>Put header as 15 in tfileinputdelimited, it will start reading from line 16</description>
      <pubDate>Fri, 08 Feb 2019 20:21:11 GMT</pubDate>
      <guid>https://community.qlik.com/t5/Talend-Studio/csv-file-read/m-p/2253422#M36763</guid>
      <dc:creator>akumar2301</dc:creator>
      <dc:date>2019-02-08T20:21:11Z</dc:date>
    </item>
    <item>
      <title>Re: csv file read</title>
      <link>https://community.qlik.com/t5/Talend-Studio/csv-file-read/m-p/2253423#M36764</link>
      <description>&lt;P&gt;There are a couple of ways of doing this using a tFileInputDelimited. The first way is the easiest way, but requires that the number of rows before the header remains the same. In your example, the header row is row 15. So you would simply configure the tFileInputDelimited to have the header at row 15, and it would only select rows after the header. For example, your tFileInputDelimited might look something like this....&lt;/P&gt; 
&lt;P&gt;&amp;nbsp;&lt;/P&gt; 
&lt;P&gt;&lt;SPAN class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Screenshot 2019-02-08 at 20.11.14.png" style="width: 999px;"&gt;&lt;span class="lia-inline-image-display-wrapper" image-alt="0683p000009M1T3.png"&gt;&lt;img src="https://community.qlik.com/t5/image/serverpage/image-id/155419i45DFB6A81DCB89A9/image-size/large?v=v2&amp;amp;px=999" role="button" title="0683p000009M1T3.png" alt="0683p000009M1T3.png" /&gt;&lt;/span&gt;&lt;/SPAN&gt;&lt;/P&gt; 
&lt;P&gt;Alternatively (and probably more likely) you may want to do it more dynamically. You probably do not know how many rows will be used before the header of the set of data you want to import. If that is the case, a relatively easy way of solving this (for your example above) is to configure your tFileInputDelimited to have 5 columns which are all Strings. Then read from row 1 of the file. Now you know that the header row's column A will have "Email Address" in it. So what you do is set up a tMap to look for the first occurrence of this value and only return rows from when this happens. For example, I have knocked up a quick example of a tMap doing this.....&lt;/P&gt; 
&lt;P&gt;&amp;nbsp;&lt;/P&gt; 
&lt;P&gt;&lt;SPAN class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Screenshot 2019-02-08 at 20.31.49.png" style="width: 999px;"&gt;&lt;span class="lia-inline-image-display-wrapper" image-alt="0683p000009M31A.png"&gt;&lt;img src="https://community.qlik.com/t5/image/serverpage/image-id/138825iB00F9259BCEDE8C5/image-size/large?v=v2&amp;amp;px=999" role="button" title="0683p000009M31A.png" alt="0683p000009M31A.png" /&gt;&lt;/span&gt;&lt;/SPAN&gt;&lt;/P&gt; 
&lt;P&gt;&amp;nbsp;&lt;/P&gt; 
&lt;P&gt;I use a tMap variable I call "GoodData". It is set to a Boolean and has the Nullable box ticked (it must be allowed to be null). This works because tMap variables store their values between rows. So what I am doing is using the below code in the tMap variable....&lt;/P&gt; 
&lt;PRE&gt;Var.GoodData==null || Var.GoodData==false ? row1.A.compareToIgnoreCase("Email Address")==0 : Var.GoodData &lt;/PRE&gt; 
&lt;P&gt;....to say, "If the value of GoodData is null OR is false, test the value of Column A for 'Email Address'. If it is that, set the value of GoodData to true. Otherwise set it to false". If GoodData is ever found to be true, it will subsequently always be true.&lt;/P&gt; 
&lt;P&gt;&amp;nbsp;&lt;/P&gt; 
&lt;P&gt;In the output table of the tMap I simply have an output filter that checks the following ....&lt;/P&gt; 
&lt;PRE&gt;Var.GoodData!=null &amp;amp;&amp;amp; Var.GoodData&lt;/PRE&gt; 
&lt;P&gt;....which says "If GoodData is not null and true".&lt;/P&gt; 
&lt;P&gt;&amp;nbsp;&lt;/P&gt; 
&lt;P&gt;So only rows from "Email Address" row onwards are returned.&lt;/P&gt; 
&lt;P&gt;&amp;nbsp;&lt;/P&gt; 
&lt;P&gt;Of course, you may want to remove the Header Row as well and only return the data. This requires a small change, but makes use of a cool piece of functionality that most people don't consider. As I said, tMap variables keep their values between rows. They also are strictly processed from top to bottom. So due to that, you can act upon what happened in the previous data row.&amp;nbsp; Take a look at the layout of my tMap now.....&lt;/P&gt; 
&lt;P&gt;&amp;nbsp;&lt;/P&gt; 
&lt;P&gt;&lt;SPAN class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Screenshot 2019-02-08 at 20.40.54.png" style="width: 999px;"&gt;&lt;span class="lia-inline-image-display-wrapper" image-alt="0683p000009M2kZ.png"&gt;&lt;img src="https://community.qlik.com/t5/image/serverpage/image-id/135393i8D0457D5F7A10DC3/image-size/large?v=v2&amp;amp;px=999" role="button" title="0683p000009M2kZ.png" alt="0683p000009M2kZ.png" /&gt;&lt;/span&gt;&lt;/SPAN&gt;&lt;/P&gt; 
&lt;P&gt;I have a new tMap variable called "DataRow". The other tMap variable is exactly the same as the last time. However it is below the "DataRow" variable. This means the "DataRow" variable is checked first for every row. The code in the "DataRow" variable is below....&lt;/P&gt; 
&lt;PRE&gt;Var.GoodData!=null &amp;amp;&amp;amp; Var.GoodData ?  true : false&lt;/PRE&gt; 
&lt;P&gt;It checks to see if the "GoodData" variable is not null and true. If so, it sets its value to true. Otherwise it is false. Now we know that as soon as column A holds "Email Address", the "GoodData" variable will be set to true and will remain true. But the first time "GoodData" is set to true, "DataRow" has already been set to false. So the output table (which is now filtered using "DataRow) will not release the header row, but it will release the next row and every row after that.&lt;/P&gt; 
&lt;P&gt;&amp;nbsp;&lt;/P&gt; 
&lt;P&gt;Have a play around with this as it is REALLY useful functionality to know about.&lt;/P&gt;</description>
      <pubDate>Fri, 08 Feb 2019 20:47:11 GMT</pubDate>
      <guid>https://community.qlik.com/t5/Talend-Studio/csv-file-read/m-p/2253423#M36764</guid>
      <dc:creator>Anonymous</dc:creator>
      <dc:date>2019-02-08T20:47:11Z</dc:date>
    </item>
    <item>
      <title>Re: csv file read</title>
      <link>https://community.qlik.com/t5/Talend-Studio/csv-file-read/m-p/2253424#M36765</link>
      <description>&lt;P&gt;Sorry&amp;nbsp;&lt;A href="https://community.qlik.com/s/profile/0053p000007LP7CAAW"&gt;@uganesh&lt;/A&gt;, I didn't see your post before I started typing mine. Didn't mean to re-provide your response as part of my answer&lt;/P&gt;</description>
      <pubDate>Fri, 08 Feb 2019 20:48:47 GMT</pubDate>
      <guid>https://community.qlik.com/t5/Talend-Studio/csv-file-read/m-p/2253424#M36765</guid>
      <dc:creator>Anonymous</dc:creator>
      <dc:date>2019-02-08T20:48:47Z</dc:date>
    </item>
    <item>
      <title>Re: csv file read</title>
      <link>https://community.qlik.com/t5/Talend-Studio/csv-file-read/m-p/2253425#M36766</link>
      <description>&lt;P&gt;&lt;A href="https://community.qlik.com/s/profile/005390000069RuGAAU"&gt;@rhall&lt;/A&gt;&amp;nbsp;No worries.I could just admire the details you have put in your response.&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Fri, 08 Feb 2019 21:11:24 GMT</pubDate>
      <guid>https://community.qlik.com/t5/Talend-Studio/csv-file-read/m-p/2253425#M36766</guid>
      <dc:creator>akumar2301</dc:creator>
      <dc:date>2019-02-08T21:11:24Z</dc:date>
    </item>
    <item>
      <title>Re: csv file read</title>
      <link>https://community.qlik.com/t5/Talend-Studio/csv-file-read/m-p/2253426#M36767</link>
      <description>&lt;P&gt;I got below error&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Execution failed : Job compile errors&lt;BR /&gt;&lt;BR /&gt;Error Line: 1489&lt;BR /&gt;Detail Message: The operator != is undefined for the argument type(s) boolean, null&lt;BR /&gt;There may be some other errors caused by JVM compatibility. Make sure your JVM setup is similar to the studio.&lt;BR /&gt;&lt;BR /&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;i gave as&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Var.GoodData!=null &amp;amp;&amp;amp; Var.GoodData&lt;/P&gt;</description>
      <pubDate>Fri, 08 Feb 2019 21:21:18 GMT</pubDate>
      <guid>https://community.qlik.com/t5/Talend-Studio/csv-file-read/m-p/2253426#M36767</guid>
      <dc:creator>Karuetl</dc:creator>
      <dc:date>2019-02-08T21:21:18Z</dc:date>
    </item>
    <item>
      <title>Re: csv file read</title>
      <link>https://community.qlik.com/t5/Talend-Studio/csv-file-read/m-p/2253427#M36768</link>
      <description>Its working fine but I dont want header to be loaded
&lt;BR /&gt;Email Address;Date Completed;Assigned To;Subject;Email Status
&lt;BR /&gt;</description>
      <pubDate>Fri, 08 Feb 2019 21:36:31 GMT</pubDate>
      <guid>https://community.qlik.com/t5/Talend-Studio/csv-file-read/m-p/2253427#M36768</guid>
      <dc:creator>Karuetl</dc:creator>
      <dc:date>2019-02-08T21:36:31Z</dc:date>
    </item>
    <item>
      <title>Re: csv file read</title>
      <link>https://community.qlik.com/t5/Talend-Studio/csv-file-read/m-p/2253428#M36769</link>
      <description>Look at the example I gave at the end. That will remove the header row</description>
      <pubDate>Sat, 09 Feb 2019 12:56:36 GMT</pubDate>
      <guid>https://community.qlik.com/t5/Talend-Studio/csv-file-read/m-p/2253428#M36769</guid>
      <dc:creator>Anonymous</dc:creator>
      <dc:date>2019-02-09T12:56:36Z</dc:date>
    </item>
    <item>
      <title>Re: csv file read</title>
      <link>https://community.qlik.com/t5/Talend-Studio/csv-file-read/m-p/2253429#M36770</link>
      <description>&lt;P&gt;When the file is .csv it was working fine but now received&amp;nbsp;the file as&amp;nbsp; *.csv.xlsx , it read the rows but did not&amp;nbsp;load anything&amp;nbsp;&lt;/P&gt; 
&lt;P&gt;&amp;nbsp;&lt;/P&gt; 
&lt;P&gt;&lt;SPAN class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="1.PNG" style="width: 629px;"&gt;&lt;span class="lia-inline-image-display-wrapper" image-alt="0683p000009M2Zv.png"&gt;&lt;img src="https://community.qlik.com/t5/image/serverpage/image-id/134118i1E5526AFE392F492/image-size/large?v=v2&amp;amp;px=999" role="button" title="0683p000009M2Zv.png" alt="0683p000009M2Zv.png" /&gt;&lt;/span&gt;&lt;/SPAN&gt;&lt;/P&gt;</description>
      <pubDate>Wed, 06 Mar 2019 16:06:09 GMT</pubDate>
      <guid>https://community.qlik.com/t5/Talend-Studio/csv-file-read/m-p/2253429#M36770</guid>
      <dc:creator>Karuetl</dc:creator>
      <dc:date>2019-03-06T16:06:09Z</dc:date>
    </item>
    <item>
      <title>Re: csv file read</title>
      <link>https://community.qlik.com/t5/Talend-Studio/csv-file-read/m-p/2253430#M36771</link>
      <description>&lt;P&gt;There is a big difference between a CSV file and a XLSX file. A CSV file is a flat file. It can be read with any text editor. A XLSX file is an Excel file and&amp;nbsp; must be read with Excel. I suspect this has happened because you have opened a CSV file with Excel and saved it as XLSX. The tFileInputDelimited component will only read flat files NOT XLSX files.&lt;/P&gt;</description>
      <pubDate>Wed, 06 Mar 2019 16:15:42 GMT</pubDate>
      <guid>https://community.qlik.com/t5/Talend-Studio/csv-file-read/m-p/2253430#M36771</guid>
      <dc:creator>Anonymous</dc:creator>
      <dc:date>2019-03-06T16:15:42Z</dc:date>
    </item>
    <item>
      <title>Re: csv file read</title>
      <link>https://community.qlik.com/t5/Talend-Studio/csv-file-read/m-p/2253431#M36772</link>
      <description>&lt;P&gt;ok thanks&lt;/P&gt;</description>
      <pubDate>Wed, 06 Mar 2019 16:16:38 GMT</pubDate>
      <guid>https://community.qlik.com/t5/Talend-Studio/csv-file-read/m-p/2253431#M36772</guid>
      <dc:creator>Karuetl</dc:creator>
      <dc:date>2019-03-06T16:16:38Z</dc:date>
    </item>
  </channel>
</rss>

