{"id":6262,"date":"2014-10-29T17:15:09","date_gmt":"2014-10-29T21:15:09","guid":{"rendered":"http:\/\/www.iri.com\/blog\/?p=6262"},"modified":"2017-11-06T13:40:43","modified_gmt":"2017-11-06T18:40:43","slug":"catching-rule-violations","status":"publish","type":"post","link":"https:\/\/beta.iri.com\/blog\/data-quality\/catching-rule-violations\/","title":{"rendered":"Data Quality &#8211; Catching Rule Violations"},"content":{"rendered":"<p><strong>Introduction<br \/>\n<\/strong>This is my third installment of blog articles about Data Quality. In the <a href=\"http:\/\/www.iri.com\/blog\/iri\/business\/working-data-quality\/\">first article<\/a>, I postulated that data has quality when it has an acceptable level of errors. The goal of course is no errors, but that might be too expensive to insure.\u00a0Data governance, master data management (MDM), or another data architecture team charged with the governance of corporate data, needs to, among other things:<\/p>\n<ol>\n<li>assess and monetize the cost of errors vs. the cost of detection;<\/li>\n<li>define and limit data values within the information context; and,<\/li>\n<li>employ the right tools and techniques to find errors or suspicious values.<\/li>\n<\/ol>\n<p>In the <a href=\"http:\/\/www.iri.com\/blog\/master-data-metadata-management\/finding-data-errors-first\/\">previous article<\/a>, we demonstrated some ways to catch errors that appear\u00a0wrong on their face. Without knowing the application these data just looked wrong; e.g. alpha characters in a numeric field, impossible dates, missing special characters, and so forth. In this article, we\u00a0show how to find errors in\u00a0data that looks right, but contains\u00a0values outside of an acceptable range for a specific application. This would take the forms of membership: 1) numerical values within a range; or, 2) discrete values that should or should not be present.<\/p>\n<p><strong>Planning<br \/>\n<\/strong>After finding real or possible errors, an additional responsibility is to discover the correct value and insert it into the data store. If that is not possible, those managing the data must\u00a0report to the application groups about specific data that is not to be trusted. Before programming begins, there should exist an information diagram that\u00a0associates data names with possible values, or, an acceptable range of values for each datum. Having rules provides two benefits to the organization:<\/p>\n<ol>\n<li>a central repository of data names and rules for the data&#8217;s format and use;<\/li>\n<li>a programmatic repository for the error-checking-software to follow.<\/li>\n<\/ol>\n<p>The construction of this information requires knowledge and agreement of users about shared data. This rules library could be the only place where such knowledge is retained. The obvious place to begin is with errors that have been previously discovered. There would be no excuse for allowing the same error twice. Woe to the manager who discover errors after the production job is run when such errors could have been discovered through pre-processing. Then add the errors that might be anticipated.<\/p>\n<p><strong>Programming<\/strong><br \/>\nNow comes\u00a0the technical work of actually writing and running the\u00a0data checking programs. This work is never finished because database contents are always changing, and sometimes the rules do, too. These programs must run in this kind of dynamic data environment, and whenever there are available machine cycles. The flow chart looks like this:<\/p>\n<p><a href=\"http:\/\/www.iri.com\/blog\/wp-content\/uploads\/2014\/10\/DQ-FlowChart-BW-e1418926454487.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-6589\" src=\"http:\/\/www.iri.com\/blog\/wp-content\/uploads\/2014\/10\/DQ-FlowChart-BW-e1418926454487.png\" alt=\"DQ-FlowChart-BW\" width=\"400\" height=\"255\" \/><\/a><\/p>\n<p>&nbsp;<\/p>\n<p><b>How IRI Does It<br \/>\n<\/b>In the CoSort data management package\u00a0&#8212;\u00a0as well as its spin-off products for data migration, masking, and generation &#8212; IRI uses a 4<sup>th<\/sup> generation language (4GL) called <a href=\"http:\/\/www.iri.com\/products\/cosort\/sortcl\" target=\"_blank\" rel=\"noopener\">SortCL<\/a>\u00a0to define data layouts and manipulations. SortCL has constructs for searching files and tables, testing for conditions, combining\u00a0transformations, and reporting to multiple targets.<\/p>\n<p>SortCL\u00a0jobs are defined in scripts written by hand or automatically generated by GUI\u00a0wizards in an Eclipse-based IDE. The GUI, called <a href=\"http:\/\/www.iri.com\/products\/workbench\" target=\"_blank\" rel=\"noopener\">IRI Workbench<\/a>, also features online data discovery and metadata definition, along with\u00a0job design, execution, and management systems.\u00a0What makes the language and GUI particularly useful in finding errors is their ability to read from multiple data sources at once, apply mapping rules, and direct output to multiple targets.<\/p>\n<p>Each target\u00a0can have its own associated conditions, formats and contents. Whether or not a record contains an error, or is suspicious, its evaluation occurs through tests defined and assigned for each output. Time-wise, the output files or tables are typically small;\u00a0incremental time differences as we specify additional target conditions are negligible.<\/p>\n<p>In the following example, we are reading a Payroll file. In practice, the table would have thousands of entries and it would be too\u00a0difficult to catch errors on sight. To automate error-checking, we have created look-up\u00a0tables, or SET files, that contain only correct values for several fields. We also defined certain\u00a0rules about jobs and ages. Finally, we inserted errors into the payroll to see if the program catches errors in membership (i.e. values out of range), and other rule violations.<\/p>\n<p><b>Payroll<\/b><\/p>\n<pre>Benny, Jack     M   39    Comedian 88900\r\nBlack, Robert   M   54    JVP      25600\r\nCarson, Johnie  M   68    Sculpter 67820\r\nEinstein, Al    M   124   Genius   55000\r\nGleason, Jackie M   44    Hustler  45600\r\nGreen, Harry    M   102   Guard    31500\r\nGrey, Damson    F   44    Clerk    101000\r\nHeston, Charles M   44    Actor    45980\r\njames, Henry    M   38    Groom    56789\r\nHoffa, Jimmy    M   66    Pilot    67000\r\nJones, John     M   37    Clerk    37000\r\nPerry, Jane     F   56    Guard    98772\r\nShapiro, Edie   F   45    Welder   42123\r\nSmith, Mary     F   42    CPA      62000\r\nStander, Gary   M   55    Guard    43567\r\nWhite, Adam     M   45    VP       126000\r\nWhite, Mary     F   06    Clerk    45478\r\n<\/pre>\n<p><b> Good_Users.set * Legitimate_Jobs.set<\/b><\/p>\n<pre>Black, Robert \u00a0 \u00a0 Acct Clerk \u00a0 \u00a0 \u00a035000\r\nCarson, Kit \u00a0 \u00a0 \u00a0 CPA \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 45000\r\nEinstein, Al \u00a0 \u00a0 \u00a0Lab Guard \u00a0 \u00a0 \u00a0 18500\r\nGleason, Jackie \u00a0 JVP \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 42500\r\nGreen, Harry \u00a0 \u00a0 \u00a0Product Keeper \u00a057000\r\nGrey, Damson \u00a0 \u00a0 \u00a0Guard Genius \u00a0 \u00a034567\r\nHeston, Charles \u00a0 Lot Pilot \u00a0 \u00a0 \u00a0 75000\r\njames, Henry \u00a0 \u00a0 \u00a0Stable VP \u00a0 \u00a0 \u00a0 99000\r\nJones, John \u00a0 \u00a0 \u00a0 Acct Welder \u00a0 \u00a0 34500\r\nPerry, Jane \u00a0 \u00a0 \u00a0 Front\r\nShapiro, Edie \u00a0 \u00a0 Shop\r\nSmith, Mary \u00a0 \u00a0 \u00a0 Acct\r\nStander, Gary \u00a0 \u00a0 Factory\r\nWhite, Adam \u00a0 \u00a0 \u00a0 Office\r\n<\/pre>\n<p><b>CoSort SortCL Error Checking Script<\/b><\/p>\n<pre style=\"margin-bottom: 0in; font-style: normal; font-weight: normal;\">\/INFILE = Payroll # source file metadata\r\n \/FIELD = (User, POSITION\u00a0= 01, SIZE\u00a0= 15)\r\n \/FIELD = (Gender,POSITION\u00a0= 17,\u00a0SIZE\u00a0= 1)\r\n \/FIELD = (Age, POSITION\u00a0= 21,\u00a0SIZE\u00a0= 3)\r\n \/FIELD = (Job, POSITION\u00a0= 26, SIZE\u00a0= 10)\r\n \/FIELD = (Salary,\u00a0POSITION\u00a0= 36,\u00a0SIZE\u00a0= 6)\r\n\r\n\/REPORT # sorting not req'd\r\n\r\n\/OUTFILE = Unrecognized_People # typo? fraud ?, . . )\r\n \/FIELD = (User, POSITION\u00a0= 01,SIZE\u00a0= 15)\r\n \/FIELD = (Check_user, POSITION\u00a0= 20,SIZE\u00a0= 12,\u00a0SET = Good_Users.set[User] DEFAULT=\"Unknown User\")\r\n \/INCLUDE WHERE Check_user EQ \"Unknown User\" #\r\n\r\n\/OUTFILE = Invalid_Jobs # Jobs not on approved list\r\n \/FIELD = (User, POSITION\u00a0= 01,SIZE\u00a0= 15)\r\n \/FIELD = (Job, POSITION\u00a0= 20,SIZE\u00a0= 10) \r\n \/FIELD = (Job_check, POSITION\u00a0= 35,SIZE\u00a0 = 11,SET = Legitimate_Jobs.set[Job] DEFAULT=\"No such Job\")\r\n \/INCLUDE WHERE Job_check EQ \"No such Job\"\r\n \r\n\/OUTFILE = Age_Violations # Age related problems\r\n \/FIELD= (User, POSITION\u00a0= 01,SIZE\u00a0= 15)\r\n \/FIELD = (Age, POSITION\u00a0= 20,SIZE\u00a0= 5) \r\n \/FIELD = (Job, POSITION\u00a0= 25,SIZE\u00a0= 10)\r\n \/INCLUDE WHERE Age &lt; 18 OR Age &gt; 100\r\n \/INCLUDE WHERE Age &gt; 65 AND Job EQ \"Pilot \"\r\n\r\n\/OUTFILE = Salary_Limits # something with salary\r\n \/FIELD = (Job, POSITION\u00a0= 5,SIZE\u00a0= 10) \r\n \/FIELD = (User, POSITION\u00a0= 15,SIZE\u00a0= 15)\r\n \/FIELD = (Salary, POSITION\u00a0= 30,\u00a0SIZE\u00a0= 6)\r\n \/INCLUDE WHERE Job EQ \"Clerk \" AND Salary GT \"100000\"\r\n \/INCLUDE WHERE Job EQ \"Guard \" AND Salary GT \" 45000\"<\/pre>\n<p style=\"margin-bottom: 0in; font-style: normal;\"><b>Output Files:<\/b><\/p>\n<p><b>Unrecognized_People<\/b><\/p>\n<pre>Benny, Jack        Unknown User\r\nCarson, Johnie     Unknown User\r\nGleason, Jackie    Unknown User\r\nHoffa, Jimmy       Unknown User\r\n<\/pre>\n<p><strong>Invalid_Jobs<\/strong><\/p>\n<pre>Benny, Jack        Comedian       No such Job\r\nCarson, Johnie     Sculpter       No such Job\r\nGleason, Jackie    Hustler        No such Job\r\nHeston, Charles    Actor          No such Job\r\nJames, Henry       Groom          No such Job\r\nHoffa, Jimmy       Pilot          No such Job\r\n<\/pre>\n<p><strong>Age_Violations<\/strong><\/p>\n<pre>Einstein, Al       124   Genius\r\nGreen, Harry       102   Guard\r\nHoffa, Jimmy       66    Pilot\r\nWhite, Mary        06    Clerk\r\n<\/pre>\n<p><strong>Salary_Limits<\/strong><\/p>\n<pre>Clerk     Grey, Damson   101000\r\nGuard     Perry, Jane    98772\r\n<\/pre>\n","protected":false},"excerpt":{"rendered":"<p>Introduction This is my third installment of blog articles about Data Quality. In the first article, I postulated that data has quality when it has an acceptable level of errors. The goal of course is no errors, but that might be too expensive to insure.\u00a0Data governance, master data management (MDM), or another data architecture team<\/p>\n<div><a class=\"btn-filled btn\" href=\"https:\/\/beta.iri.com\/blog\/data-quality\/catching-rule-violations\/\" title=\"Data Quality &#8211; Catching Rule Violations\">Read More<\/a><\/div>\n","protected":false},"author":8,"featured_media":6589,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"_exactmetrics_skip_tracking":false,"_exactmetrics_sitenote_active":false,"_exactmetrics_sitenote_note":"","_exactmetrics_sitenote_category":0,"footnotes":""},"categories":[363],"tags":[607,340,366,605,546,852,851,608,609,606],"class_list":["post-6262","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-data-quality","tag-corporate-data","tag-data-governance","tag-data-quality-2","tag-find-errors","tag-iri-cosort","tag-master-data-management","tag-master-data-metadata-management","tag-planning","tag-programming","tag-rule-violations"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v23.3 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Data Quality - Catching Rule Violations - IRI<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/beta.iri.com\/blog\/data-quality\/catching-rule-violations\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Data Quality - Catching Rule Violations - IRI\" \/>\n<meta property=\"og:description\" content=\"Introduction This is my third installment of blog articles about Data Quality. In the first article, I postulated that data has quality when it has an acceptable level of errors. The goal of course is no errors, but that might be too expensive to insure.\u00a0Data governance, master data management (MDM), or another data architecture teamRead More\" \/>\n<meta property=\"og:url\" content=\"https:\/\/beta.iri.com\/blog\/data-quality\/catching-rule-violations\/\" \/>\n<meta property=\"og:site_name\" content=\"IRI\" \/>\n<meta property=\"article:published_time\" content=\"2014-10-29T21:15:09+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2017-11-06T18:40:43+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/beta.iri.com\/blog\/wp-content\/uploads\/2014\/10\/DQ-FlowChart-BW-e1418926454487.png\" \/>\n\t<meta property=\"og:image:width\" content=\"400\" \/>\n\t<meta property=\"og:image:height\" content=\"255\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Paul Friedland\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Paul Friedland\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"5 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/beta.iri.com\/blog\/data-quality\/catching-rule-violations\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/beta.iri.com\/blog\/data-quality\/catching-rule-violations\/\"},\"author\":{\"name\":\"Paul Friedland\",\"@id\":\"https:\/\/beta.iri.com\/blog\/#\/schema\/person\/1127ccf5631e8b00cb23974bd1882ea9\"},\"headline\":\"Data Quality &#8211; Catching Rule Violations\",\"datePublished\":\"2014-10-29T21:15:09+00:00\",\"dateModified\":\"2017-11-06T18:40:43+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/beta.iri.com\/blog\/data-quality\/catching-rule-violations\/\"},\"wordCount\":726,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/beta.iri.com\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/beta.iri.com\/blog\/data-quality\/catching-rule-violations\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/beta.iri.com\/blog\/wp-content\/uploads\/2014\/10\/DQ-FlowChart-BW-e1418926454487.png\",\"keywords\":[\"corporate data\",\"data governance\",\"data quality\",\"find errors\",\"IRI CoSort\",\"Master Data Management\",\"MDM\",\"planning\",\"programming\",\"rule violations\"],\"articleSection\":[\"Data Quality (DQ&#041;\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/beta.iri.com\/blog\/data-quality\/catching-rule-violations\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/beta.iri.com\/blog\/data-quality\/catching-rule-violations\/\",\"url\":\"https:\/\/beta.iri.com\/blog\/data-quality\/catching-rule-violations\/\",\"name\":\"Data Quality - Catching Rule Violations - IRI\",\"isPartOf\":{\"@id\":\"https:\/\/beta.iri.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/beta.iri.com\/blog\/data-quality\/catching-rule-violations\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/beta.iri.com\/blog\/data-quality\/catching-rule-violations\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/beta.iri.com\/blog\/wp-content\/uploads\/2014\/10\/DQ-FlowChart-BW-e1418926454487.png\",\"datePublished\":\"2014-10-29T21:15:09+00:00\",\"dateModified\":\"2017-11-06T18:40:43+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/beta.iri.com\/blog\/data-quality\/catching-rule-violations\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/beta.iri.com\/blog\/data-quality\/catching-rule-violations\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/beta.iri.com\/blog\/data-quality\/catching-rule-violations\/#primaryimage\",\"url\":\"https:\/\/beta.iri.com\/blog\/wp-content\/uploads\/2014\/10\/DQ-FlowChart-BW-e1418926454487.png\",\"contentUrl\":\"https:\/\/beta.iri.com\/blog\/wp-content\/uploads\/2014\/10\/DQ-FlowChart-BW-e1418926454487.png\",\"width\":400,\"height\":255},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/beta.iri.com\/blog\/data-quality\/catching-rule-violations\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/beta.iri.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Data Quality &#8211; Catching Rule Violations\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/beta.iri.com\/blog\/#website\",\"url\":\"https:\/\/beta.iri.com\/blog\/\",\"name\":\"IRI\",\"description\":\"Total Data Management Blog\",\"publisher\":{\"@id\":\"https:\/\/beta.iri.com\/blog\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/beta.iri.com\/blog\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/beta.iri.com\/blog\/#organization\",\"name\":\"IRI\",\"url\":\"https:\/\/beta.iri.com\/blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/beta.iri.com\/blog\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/beta.iri.com\/blog\/wp-content\/uploads\/2019\/02\/iri-logo-total-data-management-small-1.png\",\"contentUrl\":\"https:\/\/beta.iri.com\/blog\/wp-content\/uploads\/2019\/02\/iri-logo-total-data-management-small-1.png\",\"width\":750,\"height\":206,\"caption\":\"IRI\"},\"image\":{\"@id\":\"https:\/\/beta.iri.com\/blog\/#\/schema\/logo\/image\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\/\/beta.iri.com\/blog\/#\/schema\/person\/1127ccf5631e8b00cb23974bd1882ea9\",\"name\":\"Paul Friedland\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/beta.iri.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/5d48eea2eec2c3bcb24db5080f6ab3c5?s=96&d=blank&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/5d48eea2eec2c3bcb24db5080f6ab3c5?s=96&d=blank&r=g\",\"caption\":\"Paul Friedland\"},\"url\":\"https:\/\/beta.iri.com\/blog\/author\/paulf\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Data Quality - Catching Rule Violations - IRI","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/beta.iri.com\/blog\/data-quality\/catching-rule-violations\/","og_locale":"en_US","og_type":"article","og_title":"Data Quality - Catching Rule Violations - IRI","og_description":"Introduction This is my third installment of blog articles about Data Quality. In the first article, I postulated that data has quality when it has an acceptable level of errors. The goal of course is no errors, but that might be too expensive to insure.\u00a0Data governance, master data management (MDM), or another data architecture teamRead More","og_url":"https:\/\/beta.iri.com\/blog\/data-quality\/catching-rule-violations\/","og_site_name":"IRI","article_published_time":"2014-10-29T21:15:09+00:00","article_modified_time":"2017-11-06T18:40:43+00:00","og_image":[{"width":400,"height":255,"url":"https:\/\/beta.iri.com\/blog\/wp-content\/uploads\/2014\/10\/DQ-FlowChart-BW-e1418926454487.png","type":"image\/png"}],"author":"Paul Friedland","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Paul Friedland","Est. reading time":"5 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/beta.iri.com\/blog\/data-quality\/catching-rule-violations\/#article","isPartOf":{"@id":"https:\/\/beta.iri.com\/blog\/data-quality\/catching-rule-violations\/"},"author":{"name":"Paul Friedland","@id":"https:\/\/beta.iri.com\/blog\/#\/schema\/person\/1127ccf5631e8b00cb23974bd1882ea9"},"headline":"Data Quality &#8211; Catching Rule Violations","datePublished":"2014-10-29T21:15:09+00:00","dateModified":"2017-11-06T18:40:43+00:00","mainEntityOfPage":{"@id":"https:\/\/beta.iri.com\/blog\/data-quality\/catching-rule-violations\/"},"wordCount":726,"commentCount":0,"publisher":{"@id":"https:\/\/beta.iri.com\/blog\/#organization"},"image":{"@id":"https:\/\/beta.iri.com\/blog\/data-quality\/catching-rule-violations\/#primaryimage"},"thumbnailUrl":"https:\/\/beta.iri.com\/blog\/wp-content\/uploads\/2014\/10\/DQ-FlowChart-BW-e1418926454487.png","keywords":["corporate data","data governance","data quality","find errors","IRI CoSort","Master Data Management","MDM","planning","programming","rule violations"],"articleSection":["Data Quality (DQ&#041;"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/beta.iri.com\/blog\/data-quality\/catching-rule-violations\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/beta.iri.com\/blog\/data-quality\/catching-rule-violations\/","url":"https:\/\/beta.iri.com\/blog\/data-quality\/catching-rule-violations\/","name":"Data Quality - Catching Rule Violations - IRI","isPartOf":{"@id":"https:\/\/beta.iri.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/beta.iri.com\/blog\/data-quality\/catching-rule-violations\/#primaryimage"},"image":{"@id":"https:\/\/beta.iri.com\/blog\/data-quality\/catching-rule-violations\/#primaryimage"},"thumbnailUrl":"https:\/\/beta.iri.com\/blog\/wp-content\/uploads\/2014\/10\/DQ-FlowChart-BW-e1418926454487.png","datePublished":"2014-10-29T21:15:09+00:00","dateModified":"2017-11-06T18:40:43+00:00","breadcrumb":{"@id":"https:\/\/beta.iri.com\/blog\/data-quality\/catching-rule-violations\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/beta.iri.com\/blog\/data-quality\/catching-rule-violations\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/beta.iri.com\/blog\/data-quality\/catching-rule-violations\/#primaryimage","url":"https:\/\/beta.iri.com\/blog\/wp-content\/uploads\/2014\/10\/DQ-FlowChart-BW-e1418926454487.png","contentUrl":"https:\/\/beta.iri.com\/blog\/wp-content\/uploads\/2014\/10\/DQ-FlowChart-BW-e1418926454487.png","width":400,"height":255},{"@type":"BreadcrumbList","@id":"https:\/\/beta.iri.com\/blog\/data-quality\/catching-rule-violations\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/beta.iri.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Data Quality &#8211; Catching Rule Violations"}]},{"@type":"WebSite","@id":"https:\/\/beta.iri.com\/blog\/#website","url":"https:\/\/beta.iri.com\/blog\/","name":"IRI","description":"Total Data Management Blog","publisher":{"@id":"https:\/\/beta.iri.com\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/beta.iri.com\/blog\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/beta.iri.com\/blog\/#organization","name":"IRI","url":"https:\/\/beta.iri.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/beta.iri.com\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/beta.iri.com\/blog\/wp-content\/uploads\/2019\/02\/iri-logo-total-data-management-small-1.png","contentUrl":"https:\/\/beta.iri.com\/blog\/wp-content\/uploads\/2019\/02\/iri-logo-total-data-management-small-1.png","width":750,"height":206,"caption":"IRI"},"image":{"@id":"https:\/\/beta.iri.com\/blog\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/beta.iri.com\/blog\/#\/schema\/person\/1127ccf5631e8b00cb23974bd1882ea9","name":"Paul Friedland","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/beta.iri.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/5d48eea2eec2c3bcb24db5080f6ab3c5?s=96&d=blank&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/5d48eea2eec2c3bcb24db5080f6ab3c5?s=96&d=blank&r=g","caption":"Paul Friedland"},"url":"https:\/\/beta.iri.com\/blog\/author\/paulf\/"}]}},"jetpack_featured_media_url":"https:\/\/beta.iri.com\/blog\/wp-content\/uploads\/2014\/10\/DQ-FlowChart-BW-e1418926454487.png","_links":{"self":[{"href":"https:\/\/beta.iri.com\/blog\/wp-json\/wp\/v2\/posts\/6262"}],"collection":[{"href":"https:\/\/beta.iri.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/beta.iri.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/beta.iri.com\/blog\/wp-json\/wp\/v2\/users\/8"}],"replies":[{"embeddable":true,"href":"https:\/\/beta.iri.com\/blog\/wp-json\/wp\/v2\/comments?post=6262"}],"version-history":[{"count":28,"href":"https:\/\/beta.iri.com\/blog\/wp-json\/wp\/v2\/posts\/6262\/revisions"}],"predecessor-version":[{"id":11764,"href":"https:\/\/beta.iri.com\/blog\/wp-json\/wp\/v2\/posts\/6262\/revisions\/11764"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/beta.iri.com\/blog\/wp-json\/wp\/v2\/media\/6589"}],"wp:attachment":[{"href":"https:\/\/beta.iri.com\/blog\/wp-json\/wp\/v2\/media?parent=6262"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/beta.iri.com\/blog\/wp-json\/wp\/v2\/categories?post=6262"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/beta.iri.com\/blog\/wp-json\/wp\/v2\/tags?post=6262"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}