<?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 A more elegant way for data quality check (data assertion)? in Data Quality</title>
    <link>https://community.qlik.com/t5/Data-Quality/A-more-elegant-way-for-data-quality-check-data-assertion/m-p/2262317#M1748</link>
    <description>&lt;P&gt;Hey guys,&lt;/P&gt; 
&lt;P&gt;I just joined this amazing community so here is my first question.&lt;/P&gt; 
&lt;P&gt;&amp;nbsp;&lt;/P&gt; 
&lt;P&gt;My task is to migrate data from MSSQL to AS/400. The input data has to be prepared beforehand.&lt;/P&gt; 
&lt;P&gt;tSchemaComplianceCheck should take care of any schemas or data types and lengths inconsistencies. However, the input data can also deviate from the expected business logic. For example: column1 should contain the values "Apples" or "Oranges" but not "Bananas".&lt;/P&gt; 
&lt;P&gt;At the moment, I solved this by manually checking the relevant rows for the expected values in a tMap component:&lt;/P&gt; 
&lt;P&gt;&amp;nbsp;&lt;/P&gt; 
&lt;P&gt;&lt;STRONG&gt;Example:&lt;/STRONG&gt;&lt;/P&gt; 
&lt;PRE&gt;table1.column2== null? 
"Unexpected Value: Missing column2"
:
(table1.column1== null || table1.column1.equals("VALUE1"))?
table1.column2.toString()
:
table1.column1.equals("VALUE2")?
"SOME_LOGIC"
:
"Unexpected Value: " + table1.column1&lt;/PRE&gt; 
&lt;P&gt;This works out fine but the problem with this is follows:&lt;/P&gt; 
&lt;P&gt;1. Every column has to be String to hold the error message.&lt;/P&gt; 
&lt;P&gt;2. Filtering out invalid values with a tFilter Component and String comparison is not optimal (table1.column1.contains("Unexpected"))&lt;/P&gt; 
&lt;P&gt;3. Valid rows has to be joined again with the input tables (to get the correct column types and to avoid converting back from String) effectively doubling the logic, which is unwanted.&lt;/P&gt; 
&lt;P&gt;&amp;nbsp;&lt;/P&gt; 
&lt;P&gt;It's not practical to create an expected value List table for each column and use that as a lookup table in the tMap.&lt;/P&gt; 
&lt;P&gt;Ideally, I would want for rejected rows (one or more columns has an unexpected value) to be written into an extra table with one added column "ErrorMessage" that contains which columns were errorenous.&lt;/P&gt; 
&lt;P&gt;&amp;nbsp;&lt;/P&gt; 
&lt;P&gt;I feel like this is a common problem, so there should be a better solution to this. Is it with tAssert maybe?&lt;/P&gt; 
&lt;P&gt;&amp;nbsp;&lt;/P&gt; 
&lt;P&gt;Can't wait to read your answers. Let me know if I should clarify the problem even more.&lt;/P&gt; 
&lt;P&gt;&amp;nbsp;&lt;/P&gt; 
&lt;P&gt;Thank you in advance.&lt;/P&gt; 
&lt;P&gt;&amp;nbsp;&lt;/P&gt; 
&lt;P&gt;Best Regards,&lt;/P&gt; 
&lt;P&gt;Houssam&lt;/P&gt; 
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
    <pubDate>Sat, 16 Nov 2024 04:41:27 GMT</pubDate>
    <dc:creator>Anonymous</dc:creator>
    <dc:date>2024-11-16T04:41:27Z</dc:date>
    <item>
      <title>A more elegant way for data quality check (data assertion)?</title>
      <link>https://community.qlik.com/t5/Data-Quality/A-more-elegant-way-for-data-quality-check-data-assertion/m-p/2262317#M1748</link>
      <description>&lt;P&gt;Hey guys,&lt;/P&gt; 
&lt;P&gt;I just joined this amazing community so here is my first question.&lt;/P&gt; 
&lt;P&gt;&amp;nbsp;&lt;/P&gt; 
&lt;P&gt;My task is to migrate data from MSSQL to AS/400. The input data has to be prepared beforehand.&lt;/P&gt; 
&lt;P&gt;tSchemaComplianceCheck should take care of any schemas or data types and lengths inconsistencies. However, the input data can also deviate from the expected business logic. For example: column1 should contain the values "Apples" or "Oranges" but not "Bananas".&lt;/P&gt; 
&lt;P&gt;At the moment, I solved this by manually checking the relevant rows for the expected values in a tMap component:&lt;/P&gt; 
&lt;P&gt;&amp;nbsp;&lt;/P&gt; 
&lt;P&gt;&lt;STRONG&gt;Example:&lt;/STRONG&gt;&lt;/P&gt; 
&lt;PRE&gt;table1.column2== null? 
"Unexpected Value: Missing column2"
:
(table1.column1== null || table1.column1.equals("VALUE1"))?
table1.column2.toString()
:
table1.column1.equals("VALUE2")?
"SOME_LOGIC"
:
"Unexpected Value: " + table1.column1&lt;/PRE&gt; 
&lt;P&gt;This works out fine but the problem with this is follows:&lt;/P&gt; 
&lt;P&gt;1. Every column has to be String to hold the error message.&lt;/P&gt; 
&lt;P&gt;2. Filtering out invalid values with a tFilter Component and String comparison is not optimal (table1.column1.contains("Unexpected"))&lt;/P&gt; 
&lt;P&gt;3. Valid rows has to be joined again with the input tables (to get the correct column types and to avoid converting back from String) effectively doubling the logic, which is unwanted.&lt;/P&gt; 
&lt;P&gt;&amp;nbsp;&lt;/P&gt; 
&lt;P&gt;It's not practical to create an expected value List table for each column and use that as a lookup table in the tMap.&lt;/P&gt; 
&lt;P&gt;Ideally, I would want for rejected rows (one or more columns has an unexpected value) to be written into an extra table with one added column "ErrorMessage" that contains which columns were errorenous.&lt;/P&gt; 
&lt;P&gt;&amp;nbsp;&lt;/P&gt; 
&lt;P&gt;I feel like this is a common problem, so there should be a better solution to this. Is it with tAssert maybe?&lt;/P&gt; 
&lt;P&gt;&amp;nbsp;&lt;/P&gt; 
&lt;P&gt;Can't wait to read your answers. Let me know if I should clarify the problem even more.&lt;/P&gt; 
&lt;P&gt;&amp;nbsp;&lt;/P&gt; 
&lt;P&gt;Thank you in advance.&lt;/P&gt; 
&lt;P&gt;&amp;nbsp;&lt;/P&gt; 
&lt;P&gt;Best Regards,&lt;/P&gt; 
&lt;P&gt;Houssam&lt;/P&gt; 
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Sat, 16 Nov 2024 04:41:27 GMT</pubDate>
      <guid>https://community.qlik.com/t5/Data-Quality/A-more-elegant-way-for-data-quality-check-data-assertion/m-p/2262317#M1748</guid>
      <dc:creator>Anonymous</dc:creator>
      <dc:date>2024-11-16T04:41:27Z</dc:date>
    </item>
    <item>
      <title>Re: A more elegant way for data quality check (data assertion)?</title>
      <link>https://community.qlik.com/t5/Data-Quality/A-more-elegant-way-for-data-quality-check-data-assertion/m-p/2262318#M1749</link>
      <description>&lt;P&gt;Hello,&lt;/P&gt; 
&lt;P&gt;tAssert component generates the boolean evaluation on the concern for the Job execution status and provides the Job status messages to &lt;SPAN class="keyword"&gt;tAssertCatcher&lt;/SPAN&gt;.&lt;/P&gt; 
&lt;P&gt;Here are related scenarios:&lt;A title="TalendHelpCenter:Setting up the assertive condition for a Job execution" href="https://help.talend.com/reader/zEy_94YeKg9FVbqEiggFag/VmPMhnJetR_2So5WgvFjBQ" target="_self" rel="nofollow noopener noreferrer"&gt;TalendHelpCenter&lt;span class="lia-inline-image-display-wrapper" image-alt="0683p000009M9p6.png"&gt;&lt;img src="https://community.qlik.com/t5/image/serverpage/image-id/134116iFBD5D7F21624A744/image-size/large?v=v2&amp;amp;px=999" role="button" title="0683p000009M9p6.png" alt="0683p000009M9p6.png" /&gt;&lt;/span&gt;etting up the assertive condition for a Job execution&lt;/A&gt;&amp;nbsp; and &lt;A title="TalendHelpCenter:Viewing product orders status (on a daily basis) against a benchmark number" href="https://help.talend.com/reader/zEy_94YeKg9FVbqEiggFag/20i9FLBe_mJNBBcrJ1ktbw" target="_self" rel="nofollow noopener noreferrer"&gt;TalendHelpCenter:Viewing product orders status (on a daily basis) against a benchmark number&lt;/A&gt;&amp;nbsp;&lt;/P&gt; 
&lt;P&gt;Talend recommends using Talend Data Quality first to improve the quality of your data, because incomplete, low quality datasets produce poor analysis results, and data profiling is best done on complete, clean datasets.&lt;/P&gt; 
&lt;P&gt;Data profiling is about collecting and analyzing information about your data. It is important because it allows you to detect and understand data issues, then fix them. &lt;/P&gt; 
&lt;P&gt;Let us know if it is what you are looking for?&lt;/P&gt; 
&lt;P&gt;&lt;A title="https://help.talend.com/reader/Cau_yL8zEBuz1qNJ95YqQw/KoalefBU0uSZmuVLiKSmag" href="https://help.talend.com/reader/Cau_yL8zEBuz1qNJ95YqQw/KoalefBU0uSZmuVLiKSmag" target="_self" rel="nofollow noopener noreferrer"&gt;https://help.talend.com/reader/Cau_yL8zEBuz1qNJ95YqQw/KoalefBU0uSZmuVLiKSmag&lt;/A&gt;&amp;nbsp;&lt;/P&gt; 
&lt;P&gt;Best regards&lt;/P&gt; 
&lt;P&gt;Sabrina&lt;/P&gt;</description>
      <pubDate>Tue, 08 Oct 2019 08:54:40 GMT</pubDate>
      <guid>https://community.qlik.com/t5/Data-Quality/A-more-elegant-way-for-data-quality-check-data-assertion/m-p/2262318#M1749</guid>
      <dc:creator>Anonymous</dc:creator>
      <dc:date>2019-10-08T08:54:40Z</dc:date>
    </item>
  </channel>
</rss>

