<?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: How to achieve the functionality of Recursive CTE in Talend, without using Database in Talend Studio</title>
    <link>https://community.qlik.com/t5/Talend-Studio/How-to-achieve-the-functionality-of-Recursive-CTE-in-Talend/m-p/2317113#M87598</link>
    <description>&lt;P&gt;Recursion is a really useful tool, but it is also not the most efficient tool in the box when it comes to memory. So you must be careful when using it. Talend does not support recursion within Jobs, but you can use recursive routines to solve problems like this. Below is a routine that I have edited to suit your requirement....&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;&lt;B&gt;package&lt;/B&gt; routines;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;B&gt;import&lt;/B&gt; java.util.HashMap;&lt;/P&gt;&lt;P&gt;&lt;B&gt;import&lt;/B&gt; java.util.Map;&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; RecursiveRelationship {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&lt;B&gt;private&lt;/B&gt; &lt;B&gt;static&lt;/B&gt; Map&amp;lt;String,RecursiveRelationship&amp;gt; &lt;I&gt;rrMap&lt;/I&gt;= &lt;B&gt;new&lt;/B&gt; HashMap&amp;lt;&amp;gt;();&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&lt;B&gt;private&lt;/B&gt; String child;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&lt;B&gt;private&lt;/B&gt; String parent;&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; String getParent() {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;B&gt;return&lt;/B&gt; parent;&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;&lt;B&gt;public&lt;/B&gt; &lt;B&gt;static&lt;/B&gt; RecursiveRelationship createChild(String child, String parent){&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;RecursiveRelationship e= &lt;B&gt;new&lt;/B&gt; RecursiveRelationship(child, parent);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;I&gt;rrMap&lt;/I&gt;.put(child,e);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;B&gt;return&lt;/B&gt; e;&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;&lt;B&gt;private&lt;/B&gt; RecursiveRelationship(String child, String parent) {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;B&gt;this&lt;/B&gt;.child = child;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;B&gt;this&lt;/B&gt;.parent = parent;&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;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&lt;B&gt;private&lt;/B&gt; String getRelationship(String child){&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;B&gt;if&lt;/B&gt; (RecursiveRelationship.&lt;I&gt;rrMap&lt;/I&gt;.get(child).getParent() == &lt;B&gt;null&lt;/B&gt;) {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;B&gt;return&lt;/B&gt; child;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;B&gt;else&lt;/B&gt; {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;B&gt;return&lt;/B&gt; getRelationship(RecursiveRelationship.&lt;I&gt;rrMap&lt;/I&gt;.get(child).getParent()) + "/" +&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;child;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;}&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;@Override&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&lt;B&gt;public&lt;/B&gt; String toString() {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;String relationship = getRelationship(child).equals(parent)?"":getRelationship(child);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;B&gt;return&lt;/B&gt; child + "," + relationship;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;}&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;P&gt;*********************************************************************&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;To use this, I set up a quick job with your data in a tFixedFlowInput component linking to a tJavaFlex. In the START CODE section of the tJavaFlex, I used this code......&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;java.util.List&amp;lt;RecursiveRelationship&amp;gt; emps = &lt;B&gt;new&lt;/B&gt; java.util.ArrayList&amp;lt;&amp;gt;();&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;In the MAIN CODE section, I used this code......&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;emps.add(RecursiveRelationship.createChild(row1.ID,row1.Parent_ID));&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;In the END CODE section, I used this code.....&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;B&gt;for&lt;/B&gt;(RecursiveRelationship emp:emps){&lt;/P&gt;&lt;P&gt;System.out.println(emp.toString());&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Obviously if you cant to pass this data to other components you will need to put the for loop in a new tJavaFlex that starts a SubJob (the "for" in the START CODE, the "emp.toString()" in the MAIN CODE and the closing parenthesis in the END CODE) and that will pass the output one row at a time.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;The output I got was as follows. I added my own parent child data as well to test it....&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Parent ID| Child&lt;/P&gt;&lt;P&gt;null | 001&lt;/P&gt;&lt;P&gt;001 | 002&lt;/P&gt;&lt;P&gt;002 | 003&lt;/P&gt;&lt;P&gt;003 | 004&lt;/P&gt;&lt;P&gt;004 | 005&lt;/P&gt;&lt;P&gt;null | a&lt;/P&gt;&lt;P&gt;a | b&lt;/P&gt;&lt;P&gt;c | d&lt;/P&gt;&lt;P&gt;b | c&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;The output was this.........&lt;/P&gt;&lt;P&gt;001,001&lt;/P&gt;&lt;P&gt;002,001/002&lt;/P&gt;&lt;P&gt;003,001/002/003&lt;/P&gt;&lt;P&gt;004,001/002/003/004&lt;/P&gt;&lt;P&gt;005,001/002/003/004/005&lt;/P&gt;&lt;P&gt;a,a&lt;/P&gt;&lt;P&gt;b,a/b&lt;/P&gt;&lt;P&gt;d,a/b/c/d&lt;/P&gt;&lt;P&gt;c,a/b/c&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
    <pubDate>Mon, 11 Jan 2021 14:57:48 GMT</pubDate>
    <dc:creator>Anonymous</dc:creator>
    <dc:date>2021-01-11T14:57:48Z</dc:date>
    <item>
      <title>How to achieve the functionality of Recursive CTE in Talend, without using Database</title>
      <link>https://community.qlik.com/t5/Talend-Studio/How-to-achieve-the-functionality-of-Recursive-CTE-in-Talend/m-p/2317112#M87597</link>
      <description>&lt;P&gt;Hi All,&lt;/P&gt;&lt;P&gt;Could someone please help me with the below scenario. I have to find the genealogy for the below input table. I achieved this using Recursive CTE functionality during discovery phase of my project . But now the architecture of my project got changed for Alpha phase.&lt;/P&gt;&lt;P&gt;We are using Azure Data lake storage , this Azure data lake will be mounted on Azure Data bricks.&amp;nbsp;we are using Azure delta lake tables to access the files in ADLS. Recursive CTE functionality is not supported in Azure Delta lake.&amp;nbsp;&lt;/P&gt;&lt;P&gt;I have to achieve this functionality in Talend Data fabric cloud version only. Could someone please tell me how to achieve this in Talend itself without using database. Please find the below input table structure and the expected&amp;nbsp;output as well.&lt;/P&gt;&lt;P&gt;Input table&lt;/P&gt;&lt;P&gt;Parent_ID ID&lt;/P&gt;&lt;P&gt;NULL	001&lt;/P&gt;&lt;P&gt;001 002&lt;/P&gt;&lt;P&gt;002 003&lt;/P&gt;&lt;P&gt;003 004&lt;/P&gt;&lt;P&gt;004 005&lt;/P&gt;&lt;P&gt;Expected Output&lt;/P&gt;&lt;P&gt;Lvl	ID     Geneology&lt;/P&gt;&lt;P&gt;1	001   001&lt;/P&gt;&lt;P&gt;2	002   001/002&lt;/P&gt;&lt;P&gt;3	003   001/002/003&lt;/P&gt;&lt;P&gt;4	004   001/002/003/004&lt;/P&gt;&lt;P&gt;5	005   001/002/003/004/005&lt;/P&gt;&lt;P&gt;Kind Regards,&lt;/P&gt;&lt;P&gt;Gopinath P&lt;/P&gt;</description>
      <pubDate>Sat, 16 Nov 2024 00:52:06 GMT</pubDate>
      <guid>https://community.qlik.com/t5/Talend-Studio/How-to-achieve-the-functionality-of-Recursive-CTE-in-Talend/m-p/2317112#M87597</guid>
      <dc:creator>GP1608113771</dc:creator>
      <dc:date>2024-11-16T00:52:06Z</dc:date>
    </item>
    <item>
      <title>Re: How to achieve the functionality of Recursive CTE in Talend, without using Database</title>
      <link>https://community.qlik.com/t5/Talend-Studio/How-to-achieve-the-functionality-of-Recursive-CTE-in-Talend/m-p/2317113#M87598</link>
      <description>&lt;P&gt;Recursion is a really useful tool, but it is also not the most efficient tool in the box when it comes to memory. So you must be careful when using it. Talend does not support recursion within Jobs, but you can use recursive routines to solve problems like this. Below is a routine that I have edited to suit your requirement....&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;&lt;B&gt;package&lt;/B&gt; routines;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;B&gt;import&lt;/B&gt; java.util.HashMap;&lt;/P&gt;&lt;P&gt;&lt;B&gt;import&lt;/B&gt; java.util.Map;&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; RecursiveRelationship {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&lt;B&gt;private&lt;/B&gt; &lt;B&gt;static&lt;/B&gt; Map&amp;lt;String,RecursiveRelationship&amp;gt; &lt;I&gt;rrMap&lt;/I&gt;= &lt;B&gt;new&lt;/B&gt; HashMap&amp;lt;&amp;gt;();&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&lt;B&gt;private&lt;/B&gt; String child;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&lt;B&gt;private&lt;/B&gt; String parent;&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; String getParent() {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;B&gt;return&lt;/B&gt; parent;&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;&lt;B&gt;public&lt;/B&gt; &lt;B&gt;static&lt;/B&gt; RecursiveRelationship createChild(String child, String parent){&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;RecursiveRelationship e= &lt;B&gt;new&lt;/B&gt; RecursiveRelationship(child, parent);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;I&gt;rrMap&lt;/I&gt;.put(child,e);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;B&gt;return&lt;/B&gt; e;&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;&lt;B&gt;private&lt;/B&gt; RecursiveRelationship(String child, String parent) {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;B&gt;this&lt;/B&gt;.child = child;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;B&gt;this&lt;/B&gt;.parent = parent;&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;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&lt;B&gt;private&lt;/B&gt; String getRelationship(String child){&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;B&gt;if&lt;/B&gt; (RecursiveRelationship.&lt;I&gt;rrMap&lt;/I&gt;.get(child).getParent() == &lt;B&gt;null&lt;/B&gt;) {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;B&gt;return&lt;/B&gt; child;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;B&gt;else&lt;/B&gt; {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;B&gt;return&lt;/B&gt; getRelationship(RecursiveRelationship.&lt;I&gt;rrMap&lt;/I&gt;.get(child).getParent()) + "/" +&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;child;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;}&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;@Override&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&lt;B&gt;public&lt;/B&gt; String toString() {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;String relationship = getRelationship(child).equals(parent)?"":getRelationship(child);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;B&gt;return&lt;/B&gt; child + "," + relationship;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;}&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;P&gt;*********************************************************************&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;To use this, I set up a quick job with your data in a tFixedFlowInput component linking to a tJavaFlex. In the START CODE section of the tJavaFlex, I used this code......&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;java.util.List&amp;lt;RecursiveRelationship&amp;gt; emps = &lt;B&gt;new&lt;/B&gt; java.util.ArrayList&amp;lt;&amp;gt;();&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;In the MAIN CODE section, I used this code......&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;emps.add(RecursiveRelationship.createChild(row1.ID,row1.Parent_ID));&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;In the END CODE section, I used this code.....&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;B&gt;for&lt;/B&gt;(RecursiveRelationship emp:emps){&lt;/P&gt;&lt;P&gt;System.out.println(emp.toString());&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Obviously if you cant to pass this data to other components you will need to put the for loop in a new tJavaFlex that starts a SubJob (the "for" in the START CODE, the "emp.toString()" in the MAIN CODE and the closing parenthesis in the END CODE) and that will pass the output one row at a time.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;The output I got was as follows. I added my own parent child data as well to test it....&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Parent ID| Child&lt;/P&gt;&lt;P&gt;null | 001&lt;/P&gt;&lt;P&gt;001 | 002&lt;/P&gt;&lt;P&gt;002 | 003&lt;/P&gt;&lt;P&gt;003 | 004&lt;/P&gt;&lt;P&gt;004 | 005&lt;/P&gt;&lt;P&gt;null | a&lt;/P&gt;&lt;P&gt;a | b&lt;/P&gt;&lt;P&gt;c | d&lt;/P&gt;&lt;P&gt;b | c&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;The output was this.........&lt;/P&gt;&lt;P&gt;001,001&lt;/P&gt;&lt;P&gt;002,001/002&lt;/P&gt;&lt;P&gt;003,001/002/003&lt;/P&gt;&lt;P&gt;004,001/002/003/004&lt;/P&gt;&lt;P&gt;005,001/002/003/004/005&lt;/P&gt;&lt;P&gt;a,a&lt;/P&gt;&lt;P&gt;b,a/b&lt;/P&gt;&lt;P&gt;d,a/b/c/d&lt;/P&gt;&lt;P&gt;c,a/b/c&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Mon, 11 Jan 2021 14:57:48 GMT</pubDate>
      <guid>https://community.qlik.com/t5/Talend-Studio/How-to-achieve-the-functionality-of-Recursive-CTE-in-Talend/m-p/2317113#M87598</guid>
      <dc:creator>Anonymous</dc:creator>
      <dc:date>2021-01-11T14:57:48Z</dc:date>
    </item>
  </channel>
</rss>

