<?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 CSV files (double quotes) and parquet files in Talend Studio</title>
    <link>https://community.qlik.com/t5/Talend-Studio/CSV-files-double-quotes-and-parquet-files/m-p/2376635#M138736</link>
    <description>&lt;P&gt;Hi All.&lt;/P&gt;&lt;P&gt;I have 3 questions. If someone can help I will grateful &lt;span class="lia-unicode-emoji" title=":slightly_smiling_face:"&gt;🙂&lt;/span&gt; .&lt;/P&gt;&lt;P&gt; &lt;/P&gt;&lt;P&gt;1.[tFileOutputDelimited] Is there any way to force Talend to add double quotes as the text enclosure but only for such values where there is a field separator inside the string?&lt;/P&gt;&lt;P&gt;Desired output:&lt;/P&gt;&lt;P&gt;e.g. name;age;comment&lt;/P&gt;&lt;P&gt;Agent Smith;30;convalescent&lt;/P&gt;&lt;P&gt;Neo;29;"convalescent;12/04/21"&lt;/P&gt;&lt;P&gt;(only one field (semicolon inside) is double quoted)&lt;/P&gt;&lt;P&gt;Whenever I tried to achieve above I received:&lt;/P&gt;&lt;P&gt;e.g. name;age;comment&lt;/P&gt;&lt;P&gt;"Agent Smith";"30";"convalescent"&lt;/P&gt;&lt;P&gt;"Neo";"29";"convalescent;12/04/21"&lt;/P&gt;&lt;P&gt; &lt;/P&gt;&lt;P&gt;&lt;A href="http://2.Is" alt="http://2.Is" target="_blank"&gt;2.Is&lt;/A&gt; it possible to write Parquete file by using only the standard jobs? And how to do that?&lt;/P&gt;&lt;P&gt; &lt;/P&gt;&lt;P&gt;&lt;A href="http://3.Is" alt="http://3.Is" target="_blank"&gt;3.Is&lt;/A&gt; it possible to call the Big Data Batch child job from standard job? And if it is possible, is it safe/stable and recommended?&lt;/P&gt;&lt;P&gt; &lt;/P&gt;&lt;P&gt; &lt;/P&gt;&lt;P&gt;Best regards,&lt;/P&gt;&lt;P&gt;Jack Strong&lt;/P&gt;</description>
    <pubDate>Tue, 07 Dec 2021 11:32:01 GMT</pubDate>
    <dc:creator>JackStrong</dc:creator>
    <dc:date>2021-12-07T11:32:01Z</dc:date>
    <item>
      <title>CSV files (double quotes) and parquet files</title>
      <link>https://community.qlik.com/t5/Talend-Studio/CSV-files-double-quotes-and-parquet-files/m-p/2376635#M138736</link>
      <description>&lt;P&gt;Hi All.&lt;/P&gt;&lt;P&gt;I have 3 questions. If someone can help I will grateful &lt;span class="lia-unicode-emoji" title=":slightly_smiling_face:"&gt;🙂&lt;/span&gt; .&lt;/P&gt;&lt;P&gt; &lt;/P&gt;&lt;P&gt;1.[tFileOutputDelimited] Is there any way to force Talend to add double quotes as the text enclosure but only for such values where there is a field separator inside the string?&lt;/P&gt;&lt;P&gt;Desired output:&lt;/P&gt;&lt;P&gt;e.g. name;age;comment&lt;/P&gt;&lt;P&gt;Agent Smith;30;convalescent&lt;/P&gt;&lt;P&gt;Neo;29;"convalescent;12/04/21"&lt;/P&gt;&lt;P&gt;(only one field (semicolon inside) is double quoted)&lt;/P&gt;&lt;P&gt;Whenever I tried to achieve above I received:&lt;/P&gt;&lt;P&gt;e.g. name;age;comment&lt;/P&gt;&lt;P&gt;"Agent Smith";"30";"convalescent"&lt;/P&gt;&lt;P&gt;"Neo";"29";"convalescent;12/04/21"&lt;/P&gt;&lt;P&gt; &lt;/P&gt;&lt;P&gt;&lt;A href="http://2.Is" alt="http://2.Is" target="_blank"&gt;2.Is&lt;/A&gt; it possible to write Parquete file by using only the standard jobs? And how to do that?&lt;/P&gt;&lt;P&gt; &lt;/P&gt;&lt;P&gt;&lt;A href="http://3.Is" alt="http://3.Is" target="_blank"&gt;3.Is&lt;/A&gt; it possible to call the Big Data Batch child job from standard job? And if it is possible, is it safe/stable and recommended?&lt;/P&gt;&lt;P&gt; &lt;/P&gt;&lt;P&gt; &lt;/P&gt;&lt;P&gt;Best regards,&lt;/P&gt;&lt;P&gt;Jack Strong&lt;/P&gt;</description>
      <pubDate>Tue, 07 Dec 2021 11:32:01 GMT</pubDate>
      <guid>https://community.qlik.com/t5/Talend-Studio/CSV-files-double-quotes-and-parquet-files/m-p/2376635#M138736</guid>
      <dc:creator>JackStrong</dc:creator>
      <dc:date>2021-12-07T11:32:01Z</dc:date>
    </item>
    <item>
      <title>Re: CSV files (double quotes) and parquet files</title>
      <link>https://community.qlik.com/t5/Talend-Studio/CSV-files-double-quotes-and-parquet-files/m-p/2376636#M138737</link>
      <description>&lt;P&gt;There isn't anything "out of the box" that will do this BUT this is one of the big advantages of Talend Studio. You can build the functionality to do this in a routine.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Here is a very quick example I have just knocked up.....&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;B&gt;package&lt;/B&gt; routines;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;B&gt;public&lt;/B&gt; &lt;B&gt;class&lt;/B&gt; ExtraCSVOptions {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&lt;B&gt;public&lt;/B&gt; &lt;B&gt;static&lt;/B&gt; String wrapSeparatorStrings(String data, String separator, String wrapCharacter) {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;	String returnVal = &lt;B&gt;null&lt;/B&gt;;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;	&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;	&lt;B&gt;if&lt;/B&gt;(data!=&lt;B&gt;null&lt;/B&gt; &amp;amp;&amp;amp; separator!=&lt;B&gt;null&lt;/B&gt; &amp;amp;&amp;amp; wrapCharacter!=&lt;B&gt;null&lt;/B&gt; &amp;amp;&amp;amp; data.indexOf(separator)&amp;gt;-1) {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;		returnVal = wrapCharacter+data+wrapCharacter;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;	}&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;	&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;	&lt;B&gt;return&lt;/B&gt; returnVal;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;}&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;You would use this in a tMap or similar. It would be used for every column. So if you have 3 String columns like this.....&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;myColumn1&lt;/P&gt;&lt;P&gt;myColumn2&lt;/P&gt;&lt;P&gt;myColumn3&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;....you would use the above routine like this (assuming the separator is ";" and the wrap character is ")...&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;routines.ExtraCSVOptions.wrapSeparatorStrings(row1.myColumn1, ";", "\"")&lt;/P&gt;&lt;P&gt;routines.ExtraCSVOptions.wrapSeparatorStrings(row1.myColumn2, ";", "\"")&lt;/P&gt;&lt;P&gt;routines.ExtraCSVOptions.wrapSeparatorStrings(row1.myColumn3, ";", "\"")&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;For Parquet files we have the tFileInputParquet and tFileOutputParquet components.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;You can start jobs via the TMC or TAC using the APIs. &lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Wed, 08 Dec 2021 01:41:54 GMT</pubDate>
      <guid>https://community.qlik.com/t5/Talend-Studio/CSV-files-double-quotes-and-parquet-files/m-p/2376636#M138737</guid>
      <dc:creator>Anonymous</dc:creator>
      <dc:date>2021-12-08T01:41:54Z</dc:date>
    </item>
    <item>
      <title>Re: CSV files (double quotes) and parquet files</title>
      <link>https://community.qlik.com/t5/Talend-Studio/CSV-files-double-quotes-and-parquet-files/m-p/2376637#M138738</link>
      <description>&lt;P&gt;Sorry for being late.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;@rhall, thank you very much.  We added "else if" and it works fine!&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Below whole routine:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;package routines;&lt;/P&gt;&lt;P&gt;public class textWrapper {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;	&amp;nbsp;public static String wrapSeparatorStrings(String data, String separator, String wrapCharacter) {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;	&amp;nbsp;&amp;nbsp;String returnVal = null;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;	&amp;nbsp;&amp;nbsp;if(data!=null &amp;amp;&amp;amp; separator!=null &amp;amp;&amp;amp; wrapCharacter!=null &amp;amp;&amp;amp; data.indexOf(separator)&amp;gt;-1) {&lt;/P&gt;&lt;P&gt;	&amp;nbsp;&amp;nbsp;&amp;nbsp;returnVal = wrapCharacter+data+wrapCharacter;&lt;/P&gt;&lt;P&gt;	&amp;nbsp;&amp;nbsp;}&lt;/P&gt;&lt;P&gt;	&amp;nbsp;&amp;nbsp;else if(data!=null &amp;amp;&amp;amp; separator!=null &amp;amp;&amp;amp; wrapCharacter!=null &amp;amp;&amp;amp; !(data.indexOf(separator)&amp;gt;-1)) {&lt;/P&gt;&lt;P&gt;	&amp;nbsp;&amp;nbsp;&amp;nbsp;returnVal = data;&lt;/P&gt;&lt;P&gt;	&amp;nbsp;&amp;nbsp;}&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;	&amp;nbsp;&amp;nbsp;return returnVal;&lt;/P&gt;&lt;P&gt;	&amp;nbsp;&amp;nbsp;&lt;/P&gt;&lt;P&gt;	&amp;nbsp;}&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Regarding parquet file I'm not sure if I understand.  Are you saying that I can trigger the standard job in TMC and then in some way I can call Big Data job?&lt;/P&gt;</description>
      <pubDate>Mon, 17 Jan 2022 13:08:15 GMT</pubDate>
      <guid>https://community.qlik.com/t5/Talend-Studio/CSV-files-double-quotes-and-parquet-files/m-p/2376637#M138738</guid>
      <dc:creator>JackStrong</dc:creator>
      <dc:date>2022-01-17T13:08:15Z</dc:date>
    </item>
    <item>
      <title>Re: CSV files (double quotes) and parquet files</title>
      <link>https://community.qlik.com/t5/Talend-Studio/CSV-files-double-quotes-and-parquet-files/m-p/2376638#M138739</link>
      <description>&lt;P&gt;Oops, I missed the "else" condition there. I think I was focussed on solving the issue for records affected and overlooked unaffected records. Well spotted.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Regarding reading and writing Parquet files,  the components I mentioned are mentioned here....&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;https://help.talend.com/r/en-US/7.3/parquet/parquet&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;You can make use of the TMC API for running jobs. The swagger API documentation is here...&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;https://api.us.cloud.talend.com/tmc/swagger/swagger-ui.html&lt;/P&gt;</description>
      <pubDate>Mon, 17 Jan 2022 14:40:24 GMT</pubDate>
      <guid>https://community.qlik.com/t5/Talend-Studio/CSV-files-double-quotes-and-parquet-files/m-p/2376638#M138739</guid>
      <dc:creator>Anonymous</dc:creator>
      <dc:date>2022-01-17T14:40:24Z</dc:date>
    </item>
  </channel>
</rss>

