<?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: Handle Purge – Full Load + CDC from DB2 to Redshift (Implementation Questions) in Qlik Replicate</title>
    <link>https://community.qlik.com/t5/Qlik-Replicate/Handle-Purge-Full-Load-CDC-from-DB2-to-Redshift-Implementation/m-p/2523529#M14657</link>
    <description>&lt;P data-start="86" data-end="243"&gt;Hello&amp;nbsp;&lt;SPAN&gt;Bishnu,&amp;nbsp;&lt;a href="https://community.qlik.com/t5/user/viewprofilepage/user-id/339393"&gt;@Bishnu123&lt;/a&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P data-start="86" data-end="243"&gt;Qlik Replicate supports this scenario with built-in functionality — you simply need to enable the &lt;STRONG data-start="184" data-end="197"&gt;Full Load&lt;/STRONG&gt; and &lt;STRONG data-start="202" data-end="219"&gt;Store Changes&lt;/STRONG&gt; options as shown below:&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="john_wang_0-1752022378202.png" style="width: 999px;"&gt;&lt;img src="https://community.qlik.com/t5/image/serverpage/image-id/181920i98BCC3AE5C88117D/image-size/large?v=v2&amp;amp;px=999" role="button" title="john_wang_0-1752022378202.png" alt="john_wang_0-1752022378202.png" /&gt;&lt;/span&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="john_wang_1-1752022385203.png" style="width: 999px;"&gt;&lt;img src="https://community.qlik.com/t5/image/serverpage/image-id/181921i32D751747F369EBA/image-size/large?v=v2&amp;amp;px=999" role="button" title="john_wang_1-1752022385203.png" alt="john_wang_1-1752022385203.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P data-start="245" data-end="294"&gt;With these settings enabled, Qlik Replicate will:&lt;/P&gt;
&lt;UL data-start="296" data-end="620"&gt;
&lt;LI data-start="296" data-end="374"&gt;
&lt;P data-start="298" data-end="374"&gt;Perform an &lt;STRONG data-start="309" data-end="325"&gt;initial load&lt;/STRONG&gt; from the emp table to the target emp table&lt;/P&gt;
&lt;/LI&gt;
&lt;LI data-start="375" data-end="472"&gt;
&lt;P data-start="377" data-end="472"&gt;Continuously &lt;STRONG data-start="390" data-end="437"&gt;capture all INSERT/UPDATE/DELETE operations&lt;/STRONG&gt; into the emp_incremental table&lt;/P&gt;
&lt;/LI&gt;
&lt;LI data-start="473" data-end="620"&gt;
&lt;P data-start="475" data-end="553"&gt;Optionally, you can add a last_updated_dt column using an expression like:&lt;/P&gt;
&lt;DIV class="contain-inline-size rounded-2xl relative bg-token-sidebar-surface-primary"&gt;
&lt;DIV class="sticky top-9"&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV class="overflow-y-auto p-4" dir="ltr"&gt;&lt;CODE class="whitespace-pre! language-sql"&gt;&lt;SPAN&gt;strftime(&lt;SPAN class="hljs-string"&gt;'%Y-%m-%d %H:%M:%f'&lt;/SPAN&gt;, &lt;SPAN class="hljs-string"&gt;'now'&lt;/SPAN&gt;, &lt;SPAN class="hljs-string"&gt;'localtime'&lt;/SPAN&gt;)
&lt;/SPAN&gt;&lt;/CODE&gt;&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;/LI&gt;
&lt;/UL&gt;
&lt;P data-start="622" data-end="695"&gt;To sync CDC changes from emp_incremental back to emp, you can either:&lt;/P&gt;
&lt;UL data-start="697" data-end="847"&gt;
&lt;LI data-start="697" data-end="752"&gt;
&lt;P data-start="699" data-end="752"&gt;Use your application logic to apply the changes, or&lt;/P&gt;
&lt;/LI&gt;
&lt;LI data-start="753" data-end="847"&gt;
&lt;P data-start="755" data-end="847"&gt;Create a &lt;STRONG data-start="764" data-end="772"&gt;VIEW&lt;/STRONG&gt; that joins emp and emp_incremental, instead of using a MERGE operation&lt;/P&gt;
&lt;/LI&gt;
&lt;/UL&gt;
&lt;H3 data-start="849" data-end="878"&gt;Regarding your questions:&lt;/H3&gt;
&lt;OL data-start="880" data-end="1187"&gt;
&lt;LI data-start="880" data-end="942"&gt;
&lt;P data-start="883" data-end="942"&gt;A single task with straightforward settings is sufficient&lt;/P&gt;
&lt;/LI&gt;
&lt;LI data-start="943" data-end="969"&gt;
&lt;P data-start="946" data-end="969"&gt;See explanation above&lt;/P&gt;
&lt;/LI&gt;
&lt;LI data-start="970" data-end="995"&gt;
&lt;P data-start="973" data-end="995"&gt;Yes, it is supported&lt;/P&gt;
&lt;/LI&gt;
&lt;LI data-start="996" data-end="1016"&gt;
&lt;P data-start="999" data-end="1016"&gt;Addressed above&lt;/P&gt;
&lt;/LI&gt;
&lt;LI data-start="1017" data-end="1187"&gt;
&lt;P data-start="1020" data-end="1187"&gt;Could you clarify what you mean by the "purge" command?&lt;/P&gt;
&lt;/LI&gt;
&lt;/OL&gt;
&lt;P&gt;Regards,&lt;/P&gt;
&lt;P&gt;John.&lt;/P&gt;</description>
    <pubDate>Wed, 09 Jul 2025 00:58:35 GMT</pubDate>
    <dc:creator>john_wang</dc:creator>
    <dc:date>2025-07-09T00:58:35Z</dc:date>
    <item>
      <title>Handle Purge – Full Load + CDC from DB2 to Redshift (Implementation Questions)</title>
      <link>https://community.qlik.com/t5/Qlik-Replicate/Handle-Purge-Full-Load-CDC-from-DB2-to-Redshift-Implementation/m-p/2523475#M14655</link>
      <description>&lt;P data-start="315" data-end="323"&gt;Hi Team,&lt;/P&gt;
&lt;P data-start="325" data-end="538"&gt;I’m working on a use case where I need to implement a &lt;STRONG data-start="379" data-end="408"&gt;full load followed by CDC&lt;/STRONG&gt; from &lt;STRONG data-start="414" data-end="433"&gt;DB2 to Redshift&lt;/STRONG&gt;, and I want to make sure we handle &lt;STRONG data-start="469" data-end="483"&gt;DB2 purges&lt;/STRONG&gt; correctly while retaining historical data in Redshift.&lt;/P&gt;
&lt;HR data-start="540" data-end="543" /&gt;
&lt;H3 data-start="545" data-end="567"&gt;&lt;span class="lia-unicode-emoji" title=":white_heavy_check_mark:"&gt;✅&lt;/span&gt; Scenario Summary&lt;/H3&gt;
&lt;UL data-start="569" data-end="1119"&gt;
&lt;LI data-start="569" data-end="688"&gt;
&lt;P data-start="571" data-end="688"&gt;We perform a &lt;STRONG data-start="584" data-end="618"&gt;full load from DB2 table &lt;CODE data-start="611" data-end="616"&gt;emp&lt;/CODE&gt;&lt;/STRONG&gt; to &lt;STRONG data-start="622" data-end="646"&gt;Redshift table &lt;CODE data-start="639" data-end="644"&gt;emp&lt;/CODE&gt;&lt;/STRONG&gt; before the DB2 team purges older records.&lt;/P&gt;
&lt;/LI&gt;
&lt;LI data-start="689" data-end="803"&gt;
&lt;P data-start="691" data-end="803"&gt;After the purge, we enable &lt;STRONG data-start="718" data-end="750"&gt;CDC (insert, update, delete)&lt;/STRONG&gt; to a separate Redshift table: &lt;STRONG data-start="781" data-end="802"&gt;&lt;CODE data-start="783" data-end="800"&gt;emp_incremental&lt;/CODE&gt;&lt;/STRONG&gt;.&lt;/P&gt;
&lt;/LI&gt;
&lt;LI data-start="804" data-end="922"&gt;
&lt;P data-start="806" data-end="922"&gt;We use a &lt;CODE data-start="815" data-end="822"&gt;MERGE&lt;/CODE&gt; process to sync CDC changes from &lt;CODE data-start="856" data-end="873"&gt;emp_incremental&lt;/CODE&gt; into &lt;CODE data-start="879" data-end="884"&gt;emp&lt;/CODE&gt;, using a &lt;CODE data-start="894" data-end="911"&gt;last_updated_dt&lt;/CODE&gt; timestamp.&lt;/P&gt;
&lt;/LI&gt;
&lt;LI data-start="923" data-end="1008"&gt;
&lt;P data-start="925" data-end="1008"&gt;&lt;STRONG data-start="925" data-end="944"&gt;Natural deletes&lt;/STRONG&gt; from CDC should be processed normally (we do not retain those).&lt;/P&gt;
&lt;/LI&gt;
&lt;LI data-start="1009" data-end="1119"&gt;
&lt;P data-start="1011" data-end="1119"&gt;Our goal is to &lt;STRONG data-start="1026" data-end="1073"&gt;preserve all data that existed before purge&lt;/STRONG&gt;, but allow regular CDC to continue afterward.&lt;/P&gt;
&lt;/LI&gt;
&lt;/UL&gt;
&lt;HR data-start="1121" data-end="1124" /&gt;
&lt;H3 data-start="1126" data-end="1155"&gt;&lt;span class="lia-unicode-emoji" title=":question_mark:"&gt;❓&lt;/span&gt;Implementation Questions&lt;/H3&gt;
&lt;OL data-start="1157" data-end="2053"&gt;
&lt;LI data-start="1157" data-end="1451"&gt;
&lt;P data-start="1160" data-end="1451"&gt;&lt;STRONG data-start="1160" data-end="1219"&gt;Can I implement this from a single Qlik Replicate task?&lt;/STRONG&gt;&lt;BR data-start="1219" data-end="1222" /&gt;Can I map the same DB2 table (&lt;CODE data-start="1255" data-end="1260"&gt;emp&lt;/CODE&gt;) twice — once for &lt;STRONG data-start="1279" data-end="1297"&gt;full load only&lt;/STRONG&gt; to Redshift table &lt;CODE data-start="1316" data-end="1321"&gt;emp&lt;/CODE&gt;, and once for &lt;STRONG data-start="1336" data-end="1348"&gt;CDC only&lt;/STRONG&gt; to Redshift table &lt;CODE data-start="1367" data-end="1384"&gt;emp_incremental&lt;/CODE&gt;?&lt;BR data-start="1385" data-end="1388" /&gt;Or is it recommended to use &lt;STRONG data-start="1419" data-end="1441"&gt;two separate tasks&lt;/STRONG&gt; for this?&lt;/P&gt;
&lt;/LI&gt;
&lt;LI data-start="1453" data-end="1630"&gt;
&lt;P data-start="1456" data-end="1494"&gt;&lt;STRONG data-start="1456" data-end="1490"&gt;How do I configure the task(s)&lt;/STRONG&gt; to:&lt;/P&gt;
&lt;UL data-start="1498" data-end="1630"&gt;
&lt;LI data-start="1498" data-end="1552"&gt;
&lt;P data-start="1500" data-end="1552"&gt;Perform full load only to &lt;CODE data-start="1526" data-end="1531"&gt;emp&lt;/CODE&gt; (once, before purge)&lt;/P&gt;
&lt;/LI&gt;
&lt;LI data-start="1556" data-end="1630"&gt;
&lt;P data-start="1558" data-end="1630"&gt;Apply only CDC (insert/update/delete) to &lt;CODE data-start="1599" data-end="1616"&gt;emp_incremental&lt;/CODE&gt; (after purge)&lt;/P&gt;
&lt;/LI&gt;
&lt;/UL&gt;
&lt;/LI&gt;
&lt;LI data-start="1632" data-end="1755"&gt;
&lt;P data-start="1635" data-end="1755"&gt;Will Qlik capture &lt;STRONG data-start="1653" data-end="1664"&gt;deletes&lt;/STRONG&gt; that happen during or after the purge (from DB2 logs) and apply them to &lt;CODE data-start="1737" data-end="1754"&gt;emp_incremental&lt;/CODE&gt;?&lt;/P&gt;
&lt;/LI&gt;
&lt;LI data-start="1757" data-end="1899"&gt;
&lt;P data-start="1760" data-end="1899"&gt;How can I define and apply a &lt;STRONG data-start="1789" data-end="1822"&gt;&lt;CODE data-start="1791" data-end="1820"&gt;last_updated_dt = GETDATE()&lt;/CODE&gt;&lt;/STRONG&gt; field in both full load and CDC using the &lt;STRONG data-start="1865" data-end="1883"&gt;Derived Column&lt;/STRONG&gt; transformation?&lt;/P&gt;
&lt;/LI&gt;
&lt;LI data-start="1901" data-end="2053"&gt;
&lt;P data-start="1904" data-end="2053"&gt;What are the &lt;STRONG data-start="1917" data-end="1935"&gt;best practices&lt;/STRONG&gt; for ensuring this approach works reliably — especially for purge scenarios — without introducing soft delete columns?&lt;/P&gt;
&lt;/LI&gt;
&lt;/OL&gt;
&lt;HR data-start="2055" data-end="2058" /&gt;
&lt;P data-start="2060" data-end="2092"&gt;Thanks in advance for your help!&lt;/P&gt;
&lt;P data-start="2094" data-end="2125"&gt;Best regards,&lt;/P&gt;
&lt;P data-start="2094" data-end="2125"&gt;Bishnu&lt;/P&gt;</description>
      <pubDate>Tue, 08 Jul 2025 16:13:16 GMT</pubDate>
      <guid>https://community.qlik.com/t5/Qlik-Replicate/Handle-Purge-Full-Load-CDC-from-DB2-to-Redshift-Implementation/m-p/2523475#M14655</guid>
      <dc:creator>Bishnu123</dc:creator>
      <dc:date>2025-07-08T16:13:16Z</dc:date>
    </item>
    <item>
      <title>Re: Handle Purge – Full Load + CDC from DB2 to Redshift (Implementation Questions)</title>
      <link>https://community.qlik.com/t5/Qlik-Replicate/Handle-Purge-Full-Load-CDC-from-DB2-to-Redshift-Implementation/m-p/2523529#M14657</link>
      <description>&lt;P data-start="86" data-end="243"&gt;Hello&amp;nbsp;&lt;SPAN&gt;Bishnu,&amp;nbsp;&lt;a href="https://community.qlik.com/t5/user/viewprofilepage/user-id/339393"&gt;@Bishnu123&lt;/a&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P data-start="86" data-end="243"&gt;Qlik Replicate supports this scenario with built-in functionality — you simply need to enable the &lt;STRONG data-start="184" data-end="197"&gt;Full Load&lt;/STRONG&gt; and &lt;STRONG data-start="202" data-end="219"&gt;Store Changes&lt;/STRONG&gt; options as shown below:&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="john_wang_0-1752022378202.png" style="width: 999px;"&gt;&lt;img src="https://community.qlik.com/t5/image/serverpage/image-id/181920i98BCC3AE5C88117D/image-size/large?v=v2&amp;amp;px=999" role="button" title="john_wang_0-1752022378202.png" alt="john_wang_0-1752022378202.png" /&gt;&lt;/span&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="john_wang_1-1752022385203.png" style="width: 999px;"&gt;&lt;img src="https://community.qlik.com/t5/image/serverpage/image-id/181921i32D751747F369EBA/image-size/large?v=v2&amp;amp;px=999" role="button" title="john_wang_1-1752022385203.png" alt="john_wang_1-1752022385203.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P data-start="245" data-end="294"&gt;With these settings enabled, Qlik Replicate will:&lt;/P&gt;
&lt;UL data-start="296" data-end="620"&gt;
&lt;LI data-start="296" data-end="374"&gt;
&lt;P data-start="298" data-end="374"&gt;Perform an &lt;STRONG data-start="309" data-end="325"&gt;initial load&lt;/STRONG&gt; from the emp table to the target emp table&lt;/P&gt;
&lt;/LI&gt;
&lt;LI data-start="375" data-end="472"&gt;
&lt;P data-start="377" data-end="472"&gt;Continuously &lt;STRONG data-start="390" data-end="437"&gt;capture all INSERT/UPDATE/DELETE operations&lt;/STRONG&gt; into the emp_incremental table&lt;/P&gt;
&lt;/LI&gt;
&lt;LI data-start="473" data-end="620"&gt;
&lt;P data-start="475" data-end="553"&gt;Optionally, you can add a last_updated_dt column using an expression like:&lt;/P&gt;
&lt;DIV class="contain-inline-size rounded-2xl relative bg-token-sidebar-surface-primary"&gt;
&lt;DIV class="sticky top-9"&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV class="overflow-y-auto p-4" dir="ltr"&gt;&lt;CODE class="whitespace-pre! language-sql"&gt;&lt;SPAN&gt;strftime(&lt;SPAN class="hljs-string"&gt;'%Y-%m-%d %H:%M:%f'&lt;/SPAN&gt;, &lt;SPAN class="hljs-string"&gt;'now'&lt;/SPAN&gt;, &lt;SPAN class="hljs-string"&gt;'localtime'&lt;/SPAN&gt;)
&lt;/SPAN&gt;&lt;/CODE&gt;&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;/LI&gt;
&lt;/UL&gt;
&lt;P data-start="622" data-end="695"&gt;To sync CDC changes from emp_incremental back to emp, you can either:&lt;/P&gt;
&lt;UL data-start="697" data-end="847"&gt;
&lt;LI data-start="697" data-end="752"&gt;
&lt;P data-start="699" data-end="752"&gt;Use your application logic to apply the changes, or&lt;/P&gt;
&lt;/LI&gt;
&lt;LI data-start="753" data-end="847"&gt;
&lt;P data-start="755" data-end="847"&gt;Create a &lt;STRONG data-start="764" data-end="772"&gt;VIEW&lt;/STRONG&gt; that joins emp and emp_incremental, instead of using a MERGE operation&lt;/P&gt;
&lt;/LI&gt;
&lt;/UL&gt;
&lt;H3 data-start="849" data-end="878"&gt;Regarding your questions:&lt;/H3&gt;
&lt;OL data-start="880" data-end="1187"&gt;
&lt;LI data-start="880" data-end="942"&gt;
&lt;P data-start="883" data-end="942"&gt;A single task with straightforward settings is sufficient&lt;/P&gt;
&lt;/LI&gt;
&lt;LI data-start="943" data-end="969"&gt;
&lt;P data-start="946" data-end="969"&gt;See explanation above&lt;/P&gt;
&lt;/LI&gt;
&lt;LI data-start="970" data-end="995"&gt;
&lt;P data-start="973" data-end="995"&gt;Yes, it is supported&lt;/P&gt;
&lt;/LI&gt;
&lt;LI data-start="996" data-end="1016"&gt;
&lt;P data-start="999" data-end="1016"&gt;Addressed above&lt;/P&gt;
&lt;/LI&gt;
&lt;LI data-start="1017" data-end="1187"&gt;
&lt;P data-start="1020" data-end="1187"&gt;Could you clarify what you mean by the "purge" command?&lt;/P&gt;
&lt;/LI&gt;
&lt;/OL&gt;
&lt;P&gt;Regards,&lt;/P&gt;
&lt;P&gt;John.&lt;/P&gt;</description>
      <pubDate>Wed, 09 Jul 2025 00:58:35 GMT</pubDate>
      <guid>https://community.qlik.com/t5/Qlik-Replicate/Handle-Purge-Full-Load-CDC-from-DB2-to-Redshift-Implementation/m-p/2523529#M14657</guid>
      <dc:creator>john_wang</dc:creator>
      <dc:date>2025-07-09T00:58:35Z</dc:date>
    </item>
  </channel>
</rss>

