<?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 implement soft delete handling in Qlik Replicate from DB2 to Redshift? in Qlik Replicate</title>
    <link>https://community.qlik.com/t5/Qlik-Replicate/How-to-implement-soft-delete-handling-in-Qlik-Replicate-from-DB2/m-p/2522371#M14602</link>
    <description>&lt;P&gt;Hello&amp;nbsp;&lt;a href="https://community.qlik.com/t5/user/viewprofilepage/user-id/339393"&gt;@Bishnu123&lt;/a&gt;&amp;nbsp;,&lt;/P&gt;
&lt;P&gt;Function&amp;nbsp;&lt;SPAN&gt;&lt;A href="https://help.qlik.com/en-US/replicate/May2025/Content/Global_Common/Content/SharedEMReplicate/Customize%20Tasks/tasks_expressOther.htm#Other:~:text=operation_indicator(value_on_delete%2C%20value_on_update,the%20source%20endpoint." target="_blank" rel="noopener"&gt;&lt;FONT face="courier new,courier"&gt;operation_indicator&lt;/FONT&gt; &lt;/A&gt;can be used to support &lt;STRONG&gt;soft-delete&lt;/STRONG&gt;.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;When the&amp;nbsp;&lt;FONT face="courier new,courier"&gt;&lt;SPAN class="API_syntax_input"&gt;operation_indicator&lt;/SPAN&gt;&amp;nbsp;&lt;/FONT&gt;function is invoked on its own or as part of an expression, records deleted from the source table will&amp;nbsp;&lt;SPAN class="_Override"&gt;not&lt;/SPAN&gt;&amp;nbsp;be deleted from the corresponding target table. Instead, the corresponding target record will be flagged (with a user-provided value) to indicate that it was deleted from the source. For example if I add a new column "&lt;STRONG&gt;soft_delete&lt;/STRONG&gt;" and its expression is like:&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;operation_indicator('DELETE', 'UPDATE', 'INSERT')&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="john_wang_0-1750905359661.png" style="width: 999px;"&gt;&lt;img src="https://community.qlik.com/t5/image/serverpage/image-id/181641iBBA2498F77622720/image-size/large?v=v2&amp;amp;px=999" role="button" title="john_wang_0-1750905359661.png" alt="john_wang_0-1750905359661.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;if the record is deleted from source side, the flag "&lt;STRONG&gt;soft_delete&lt;/STRONG&gt;" column's value is "DELETE".&lt;/P&gt;
&lt;P&gt;Hope this helps.&lt;/P&gt;
&lt;P&gt;John.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
    <pubDate>Thu, 26 Jun 2025 02:38:49 GMT</pubDate>
    <dc:creator>john_wang</dc:creator>
    <dc:date>2025-06-26T02:38:49Z</dc:date>
    <item>
      <title>How to implement soft delete handling in Qlik Replicate from DB2 to Redshift?</title>
      <link>https://community.qlik.com/t5/Qlik-Replicate/How-to-implement-soft-delete-handling-in-Qlik-Replicate-from-DB2/m-p/2522359#M14601</link>
      <description>&lt;P data-start="325" data-end="343"&gt;Hi Qlik Community,&lt;/P&gt;
&lt;P data-start="345" data-end="483"&gt;I'm working on a &lt;STRONG data-start="362" data-end="385"&gt;Qlik Replicate task&lt;/STRONG&gt; where the &lt;STRONG data-start="396" data-end="417"&gt;source is&amp;nbsp; DB2 LUW&amp;nbsp;&lt;/STRONG&gt;&amp;nbsp;and the &lt;STRONG data-start="426" data-end="455"&gt;target is Amazon Redshift&lt;/STRONG&gt;, using &lt;STRONG data-start="463" data-end="482"&gt;Full Load + CDC&lt;/STRONG&gt;.&lt;/P&gt;
&lt;P data-start="485" data-end="654"&gt;I want to implement &lt;STRONG data-start="505" data-end="526"&gt;soft delete logic&lt;/STRONG&gt; — so that when a row is deleted in DB2, it is &lt;STRONG data-start="573" data-end="602"&gt;not removed from Redshift&lt;/STRONG&gt;, but instead &lt;STRONG data-start="616" data-end="653"&gt;updated with a "soft delete flag"&lt;/STRONG&gt;.&lt;/P&gt;
&lt;HR data-start="656" data-end="659" /&gt;
&lt;H3 data-start="661" data-end="676"&gt;&amp;nbsp;Use Case:&lt;/H3&gt;
&lt;H4 data-start="678" data-end="696"&gt;Source (DB2):&lt;/H4&gt;
&lt;DIV class="_tableContainer_16hzy_1"&gt;
&lt;DIV class="_tableWrapper_16hzy_14 group flex w-fit flex-col-reverse" tabindex="-1"&gt;
&lt;TABLE class="w-fit min-w-(--thread-content-width)" data-start="698" data-end="827"&gt;
&lt;THEAD data-start="698" data-end="723"&gt;
&lt;TR data-start="698" data-end="723"&gt;
&lt;TH data-start="698" data-end="703" data-col-size="sm"&gt;id&lt;/TH&gt;
&lt;TH data-start="703" data-end="710" data-col-size="sm"&gt;name&lt;/TH&gt;
&lt;TH data-start="710" data-end="723" data-col-size="sm"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; phone&lt;/TH&gt;
&lt;/TR&gt;
&lt;/THEAD&gt;
&lt;TBODY data-start="750" data-end="827"&gt;
&lt;TR data-start="750" data-end="775"&gt;
&lt;TD data-start="750" data-end="755" data-col-size="sm"&gt;1&lt;/TD&gt;
&lt;TD data-col-size="sm" data-start="755" data-end="762"&gt;abc&lt;/TD&gt;
&lt;TD data-col-size="sm" data-start="762" data-end="775"&gt;23456789&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR data-start="776" data-end="801"&gt;
&lt;TD data-start="776" data-end="781" data-col-size="sm"&gt;2&lt;/TD&gt;
&lt;TD data-col-size="sm" data-start="781" data-end="788"&gt;dce&lt;/TD&gt;
&lt;TD data-col-size="sm" data-start="788" data-end="801"&gt;1234567890&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR data-start="802" data-end="827"&gt;
&lt;TD data-start="802" data-end="807" data-col-size="sm"&gt;3&lt;/TD&gt;
&lt;TD data-col-size="sm" data-start="807" data-end="814"&gt;efd&lt;/TD&gt;
&lt;TD data-col-size="sm" data-start="814" data-end="827"&gt;1234567890&lt;/TD&gt;
&lt;/TR&gt;
&lt;/TBODY&gt;
&lt;/TABLE&gt;
&lt;DIV class="sticky end-(--thread-content-margin) h-0 self-end select-none"&gt;
&lt;DIV class="absolute end-0 flex items-end"&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;H4 data-start="829" data-end="848"&gt;Action in DB2:&lt;/H4&gt;
&lt;UL data-start="849" data-end="880"&gt;
&lt;LI data-start="849" data-end="880"&gt;
&lt;P data-start="851" data-end="880"&gt;Row with &lt;CODE data-start="860" data-end="868"&gt;id = 3&lt;/CODE&gt; is deleted.&lt;/P&gt;
&lt;/LI&gt;
&lt;/UL&gt;
&lt;H4 data-start="882" data-end="914"&gt;Desired result in Redshift:&lt;/H4&gt;
&lt;DIV class="_tableContainer_16hzy_1"&gt;
&lt;DIV class="_tableWrapper_16hzy_14 group flex w-fit flex-col-reverse" tabindex="-1"&gt;
&lt;TABLE class="w-fit min-w-(--thread-content-width)" style="border-style: solid;" data-start="916" data-end="1225"&gt;
&lt;THEAD data-start="916" data-end="977"&gt;
&lt;TR data-start="916" data-end="977"&gt;
&lt;TH width="40px" data-start="916" data-end="921" data-col-size="sm"&gt;id&lt;/TH&gt;
&lt;TH width="40px" data-start="921" data-end="928" data-col-size="sm"&gt;name&lt;/TH&gt;
&lt;TH width="100px" data-start="928" data-end="940" data-col-size="sm"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;phone&lt;/TH&gt;
&lt;TH width="65px" data-start="940" data-end="953" data-col-size="sm"&gt;is_deleted&lt;/TH&gt;
&lt;TH width="160px" data-start="953" data-end="977" data-col-size="sm"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;deleted_at&lt;/TH&gt;
&lt;/TR&gt;
&lt;/THEAD&gt;
&lt;TBODY data-start="1040" data-end="1225"&gt;
&lt;TR data-start="1040" data-end="1101"&gt;
&lt;TD width="40px" data-start="1040" data-end="1045" data-col-size="sm"&gt;1&lt;/TD&gt;
&lt;TD width="40px" data-start="1045" data-end="1052" data-col-size="sm"&gt;abc&lt;/TD&gt;
&lt;TD width="100px" data-start="1052" data-end="1064" data-col-size="sm"&gt;23456789&lt;/TD&gt;
&lt;TD width="65px" data-col-size="sm" data-start="1064" data-end="1077"&gt;false&lt;/TD&gt;
&lt;TD width="160px" data-col-size="sm" data-start="1077" data-end="1101"&gt;NULL&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR data-start="1102" data-end="1163"&gt;
&lt;TD width="40px" data-start="1102" data-end="1107" data-col-size="sm"&gt;2&lt;/TD&gt;
&lt;TD width="40px" data-start="1107" data-end="1114" data-col-size="sm"&gt;dce&lt;/TD&gt;
&lt;TD width="100px" data-col-size="sm" data-start="1114" data-end="1126"&gt;1234567890&lt;/TD&gt;
&lt;TD width="65px" data-col-size="sm" data-start="1126" data-end="1139"&gt;false&lt;/TD&gt;
&lt;TD width="160px" data-col-size="sm" data-start="1139" data-end="1163"&gt;NULL&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR data-start="1164" data-end="1225"&gt;
&lt;TD width="40px" data-start="1164" data-end="1169" data-col-size="sm"&gt;3&lt;/TD&gt;
&lt;TD width="40px" data-col-size="sm" data-start="1169" data-end="1176"&gt;efd&lt;/TD&gt;
&lt;TD width="100px" data-col-size="sm" data-start="1176" data-end="1188"&gt;1234567890&lt;/TD&gt;
&lt;TD width="65px" data-col-size="sm" data-start="1188" data-end="1201"&gt;true&lt;/TD&gt;
&lt;TD width="160px" data-col-size="sm" data-start="1201" data-end="1225"&gt;2025-06-25 15:00:00&lt;/TD&gt;
&lt;/TR&gt;
&lt;/TBODY&gt;
&lt;/TABLE&gt;
&lt;DIV class="sticky end-(--thread-content-margin) h-0 self-end select-none"&gt;
&lt;DIV class="absolute end-0 flex items-end"&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;HR data-start="1227" data-end="1230" /&gt;
&lt;H3 data-start="1232" data-end="1259"&gt;&lt;span class="lia-unicode-emoji" title=":wrench:"&gt;🔧&lt;/span&gt; My Current Settings:&lt;/H3&gt;
&lt;UL data-start="1261" data-end="1615"&gt;
&lt;LI data-start="1261" data-end="1297"&gt;
&lt;P data-start="1263" data-end="1297"&gt;Full Load: &lt;CODE data-start="1274" data-end="1297"&gt;Drop and Create Table&lt;/CODE&gt;&lt;/P&gt;
&lt;/LI&gt;
&lt;LI data-start="1298" data-end="1412"&gt;
&lt;P data-start="1300" data-end="1304"&gt;CDC:&lt;/P&gt;
&lt;P data-start="1923" data-end="1989"&gt;Any tips, validation, or best practices would be much appreciated.&lt;/P&gt;
&lt;P data-start="1991" data-end="2009"&gt;Thanks in advance!&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;/LI&gt;
&lt;/UL&gt;</description>
      <pubDate>Wed, 25 Jun 2025 20:14:55 GMT</pubDate>
      <guid>https://community.qlik.com/t5/Qlik-Replicate/How-to-implement-soft-delete-handling-in-Qlik-Replicate-from-DB2/m-p/2522359#M14601</guid>
      <dc:creator>Bishnu123</dc:creator>
      <dc:date>2025-06-25T20:14:55Z</dc:date>
    </item>
    <item>
      <title>Re: How to implement soft delete handling in Qlik Replicate from DB2 to Redshift?</title>
      <link>https://community.qlik.com/t5/Qlik-Replicate/How-to-implement-soft-delete-handling-in-Qlik-Replicate-from-DB2/m-p/2522371#M14602</link>
      <description>&lt;P&gt;Hello&amp;nbsp;&lt;a href="https://community.qlik.com/t5/user/viewprofilepage/user-id/339393"&gt;@Bishnu123&lt;/a&gt;&amp;nbsp;,&lt;/P&gt;
&lt;P&gt;Function&amp;nbsp;&lt;SPAN&gt;&lt;A href="https://help.qlik.com/en-US/replicate/May2025/Content/Global_Common/Content/SharedEMReplicate/Customize%20Tasks/tasks_expressOther.htm#Other:~:text=operation_indicator(value_on_delete%2C%20value_on_update,the%20source%20endpoint." target="_blank" rel="noopener"&gt;&lt;FONT face="courier new,courier"&gt;operation_indicator&lt;/FONT&gt; &lt;/A&gt;can be used to support &lt;STRONG&gt;soft-delete&lt;/STRONG&gt;.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;When the&amp;nbsp;&lt;FONT face="courier new,courier"&gt;&lt;SPAN class="API_syntax_input"&gt;operation_indicator&lt;/SPAN&gt;&amp;nbsp;&lt;/FONT&gt;function is invoked on its own or as part of an expression, records deleted from the source table will&amp;nbsp;&lt;SPAN class="_Override"&gt;not&lt;/SPAN&gt;&amp;nbsp;be deleted from the corresponding target table. Instead, the corresponding target record will be flagged (with a user-provided value) to indicate that it was deleted from the source. For example if I add a new column "&lt;STRONG&gt;soft_delete&lt;/STRONG&gt;" and its expression is like:&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;operation_indicator('DELETE', 'UPDATE', 'INSERT')&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="john_wang_0-1750905359661.png" style="width: 999px;"&gt;&lt;img src="https://community.qlik.com/t5/image/serverpage/image-id/181641iBBA2498F77622720/image-size/large?v=v2&amp;amp;px=999" role="button" title="john_wang_0-1750905359661.png" alt="john_wang_0-1750905359661.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;if the record is deleted from source side, the flag "&lt;STRONG&gt;soft_delete&lt;/STRONG&gt;" column's value is "DELETE".&lt;/P&gt;
&lt;P&gt;Hope this helps.&lt;/P&gt;
&lt;P&gt;John.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Thu, 26 Jun 2025 02:38:49 GMT</pubDate>
      <guid>https://community.qlik.com/t5/Qlik-Replicate/How-to-implement-soft-delete-handling-in-Qlik-Replicate-from-DB2/m-p/2522371#M14602</guid>
      <dc:creator>john_wang</dc:creator>
      <dc:date>2025-06-26T02:38:49Z</dc:date>
    </item>
  </channel>
</rss>

