<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Datamartist.com &#187; Duplicate Data</title>
	<atom:link href="http://www.datamartist.com/tag/duplicate-data/feed" rel="self" type="application/rss+xml" />
	<link>http://www.datamartist.com</link>
	<description>Reduce cost with self serve data transformation</description>
	<lastBuildDate>Thu, 09 Feb 2012 20:00:31 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1.3</generator>
		<item>
		<title>Data quality from a four year old</title>
		<link>http://www.datamartist.com/data-quality-templates-from-a-four-year-old</link>
		<comments>http://www.datamartist.com/data-quality-templates-from-a-four-year-old#comments</comments>
		<pubDate>Tue, 08 Jun 2010 14:10:22 +0000</pubDate>
		<dc:creator>James Standen</dc:creator>
				<category><![CDATA[Data Quality]]></category>
		<category><![CDATA[Duplicate Data]]></category>

		<guid isPermaLink="false">http://www.datamartist.com/?p=4473</guid>
		<description><![CDATA[I think my four year old would make a good data quality dude. He explained to me recently, why its better to use stickers than crayons, "for the things people use a lot". "Dad, if you use crayons, you might draw it different, but stickers- they are all the same." he then pointed to the [...]]]></description>
			<content:encoded><![CDATA[<p>I think my four year old would make a good data quality dude. He explained to me recently, why its better to use stickers than crayons, "for the things people use a lot".<br />
<a href="http://www.datamartist.com/wp-content/uploads/2010/06/data-entry-problems-just-enter-anything.jpg"><img src="http://www.datamartist.com/wp-content/uploads/2010/06/data-entry-problems-just-enter-anything-300x186.jpg" alt="" title="data-entry-problems-just-enter-anything" width="300" height="186" class="alignright size-medium wp-image-4539" /></a><br />
"Dad, if you use crayons, you might draw it different, but stickers- they are all the same."  he then pointed to the sheet of identical, machine generated stickers-  "All the same- so everyone who gets one of these, knows what it is."</p>
<p>"Using the crayon takes too long and sometimes I make mistakes."  Then he paused for a second. "But if it's something different- then I have to draw it. No stickers for that."</p>
<p>And off he went, blending hand drawn custom crayon work with high speed sticker application.</p>
<p>It strikes me that what my son has figured out as a basic rule of thumb in arts and crafts for the use of stickers, is a pretty good analogy for design of data entry systems.</p>
<p>Whenever you can, use something that restricts the users choices to a fixed, understood set of responses.  Use pre-made data stickers.</p>
<p>The enemy of data quality everywhere is the gaping, un-validated free form text entry field.  Only linguists and unstructured text analysts can get excited about the "endless possibilities" of what your users and customers can enter into those fields.</p>
<p>We've all seen the horrors of names and addresses run amok-  "John A Smith", "Jon A. Smith", "John Smith Jr.", "Smith, John A" or the even more amazing "John Smith (new customer)".</p>
<p>If you're in data, you don't want endless possibilities.  You want ordered sets of data that conform strictly to well defined rules.  Eliminating duplicates is a complex and time consuming effort.  Stopping as many of them before they are created is the first, best thing you can do to get a handle on the problem.</p>
<p>So think stickers.   For every field ask yourself- can I make this a combo box? radio buttons?  Can I do auto search in the existing records to suggest close matches?  Anything to stop users or customers from making things up- and to have the data points they enter conform to a defined domain.</p>
<p>The more constrained a field is, the better the chances are that the data stored in it will be useful... unless of course you make it so constrained that you force data quality to suffer.</p>
<h2>There is such a thing as too much...</h2>
<p>Every good rule has its exceptions, and the evil side of overly constraining your data entry folks is that because they are smarter than computers, they'll find ways to invent entirely new encoding methods.</p>
<p>If you tighten the entry on the postal code too much, so that international postal codes won't fit, you can be sure that data entry clerks will discover that by entering their own postal code, and putting the customers postal code in the comment field, they can get the system to accept the record (and at least feel as if they had tried their best to get the data needed in there).</p>
<p>This is where which stickers you have in your collection starts to matter.  </p>
<p>Have you ever noticed that at well run events, they always have some blank name tags, as well of the pre-printed ones?  That and a magic marker makes sure the process can go on.</p>
<p>In the end, you'll need to balance between the two extremes.  Tighten up your data entry and interfaces as much as you can, but realize that there is a point of diminishing returns, and in fact probably even a point where your data totalitarianism will be hurting your data quality, not helping it.</p>
<p>Now of course, there are some pretty high end tools that let you create all sorts of rules, and others that let you comb through the data and cleanse it, checking those postal codes to states and cities, and doing all sorts of fancy matching and analysis.  There is definitely an important role in many organisations and systems for approaches and tools such as these.</p>
<p>Using data profiling tools like <a href="/">Datamartist</a> will help you understand what issues are making it through your defenses.</p>
<p>But if you are not doing it already, focusing on the point of entry with practical, balanced techniques will make a step change improvement to your data quality.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.datamartist.com/data-quality-templates-from-a-four-year-old/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Connecting the dimension table to the fact table- Vendor Example (Part 3)</title>
		<link>http://www.datamartist.com/connecting-the-dimension-table-to-the-fact-table-vendor-example-part-3</link>
		<comments>http://www.datamartist.com/connecting-the-dimension-table-to-the-fact-table-vendor-example-part-3#comments</comments>
		<pubDate>Mon, 09 Feb 2009 20:47:55 +0000</pubDate>
		<dc:creator>James Standen</dc:creator>
				<category><![CDATA[Cost Reduction]]></category>
		<category><![CDATA[Data Modelling]]></category>
		<category><![CDATA[Data Quality]]></category>
		<category><![CDATA[Datamartist Tool]]></category>
		<category><![CDATA[ETL]]></category>
		<category><![CDATA[Personal Data Marts]]></category>
		<category><![CDATA[Data Mart Example]]></category>
		<category><![CDATA[Dimension Tables]]></category>
		<category><![CDATA[Duplicate Data]]></category>
		<category><![CDATA[Purchasing Data Warehouse]]></category>

		<guid isPermaLink="false">http://www.datamartist.com/?p=858</guid>
		<description><![CDATA[In parts one and two of this series we introduced our challenge (to make a data mart to analyze the Acme Company's spending) and showed how the Datamartist tool could import millions of rows of data and then turn it into a fact table we can use in Excel. Now we need to create a [...]]]></description>
			<content:encoded><![CDATA[<p><img src="/wp-content/uploads/2009/02/makingdimseasyway.jpg" alt="makingdimseasyway" title="makingdimseasyway" width="250" height="97" class="alignright size-full wp-image-883" />In parts <a href="/purchasing-data-mart-cutting-costs-with-analysis-part-1">one</a> and <a href="/creating-a-fact-table-with-the-vendor-dimension-purchasing-dm-part-2">two</a> of this series we introduced our challenge (to make a data mart to analyze the Acme Company's spending) and showed how the <a href="/product">Datamartist tool</a> could import millions of rows of data and then turn it into a fact table we can use in Excel.</p>
<p>Now we need to create a Vendor dimension table and join it to this fact table to determine who our big vendors are.</p>
<p>In Datamartist it is a simple task to create this vendor dimension. As always we use blocks and connect them together.  We define a dimension by using a reference definition block. All we have to do to configure the reference block is to specify which columns uniquely define the dimension (or almost uniquely, Datamartist will resolve duplicate keys using a majority/first rule set for you if you have some data glitches).</p>
<p>We start with an import block that brings in the Vendor master text file, then we define the reference by specifying "Vendor_ID" as the key.  These first two blocks look like this:<br />
<img src="/wp-content/uploads/2009/02/vendor-master-in-and-reference-block.jpg" alt="vendor-master-in-and-reference-block" title="vendor-master-in-and-reference-block" width="302" height="148" class="alignnone size-full wp-image-878" /></p>
<p>Then we join it to the fact table we created in part two of this series with a join block.  This means that now instead of just the vendor ID number that was in the fact table, we have the name, and address for the vendor in our mini star schema.</p>
<p><img src="/wp-content/uploads/2009/02/vendor-dimension-and-join.jpg" alt="vendor-dimension-and-join" title="vendor-dimension-and-join" width="436" height="283" class="alignnone size-full wp-image-879" /></p>
<p>And finally we put a summarize block after that to total up all the monthly values for each vendor, and we export to excel. This is what the canvas looks like:<br />
<img src="/wp-content/uploads/2009/02/vendor-dimension-without-dedup1.jpg" alt="vendor-dimension-without-dedup1" title="vendor-dimension-without-dedup1" width="501" height="198" class="alignnone size-full wp-image-865" /><br />
After we do this, we grab the excel file Datamartist just created for us, do a quick sort, and come up with a list of Acme's top ten suppliers.  Feeling pretty good about ourselves, we do a review with the head of purchasing.</p>
<p>"Where's Mega brothers?" she says with a frown "I think your data is screwy- no way that Mega brothers didn't make the top ten- we spend a fortune on railways, and a lot of our freight goes with the Mega Brothers Rail company. Of course it is probably entered under different vendors, each location works with the office local to them... But we've got to view them as a single vendor in the data mart- you <em><strong>can</strong></em> do that right?"</p>
<p><img src="/wp-content/uploads/2009/02/vendor-dimension-with-dedupe1.jpg" alt="vendor-dimension-with-dedupe1" title="vendor-dimension-with-dedupe1" width="300" height="205" class="alignright size-full wp-image-870" /></p>
<h2>Fixing Duplicate Rows</h2>
<p>  Having to deal with duplicate data is a very common issue in any type of data analysis.  So, back to the canvas.  By simply adding a de-duplicate block to our Vendor dimension table (after the Reference block, and before the join) we can find and resolve the Mega Brothers duplicates.<br />
We just use the filter to find the records- (Easy to do, looking for "Mega" "rail" "brothers" etc. and we map them to a single instance.)  This is the filter control that lets us find and tag the duplicates:<br />
<img src="/wp-content/uploads/2009/02/mega-bros-duplicates-in-picker1.jpg" alt="mega-bros-duplicates-in-picker1" title="mega-bros-duplicates-in-picker1" width="400" height="280" class="alignnone size-full wp-image-871" /></p>
<p><img src="/wp-content/uploads/2009/02/mega-bros-duplicates-in-mapper.jpg" alt="mega-bros-duplicates-in-mapper" title="mega-bros-duplicates-in-mapper" width="312" height="247" class="alignright size-full wp-image-872" />As we tag them, they show up in the mapper, which lets us see which duplicate records we have eliminated for the dimension. We run the canvas again, and this time, sure enough, Mega Brothers Rail is in our top ten.  But even though the head of purchasing knew it was a lot, this is actually the first time she's seen the number.  "Wow. I've got to give them a call- can you give me that in an Excel spreadsheet?"</p>
<p>Stay tuned, more to come as we go further into Datamartist's ability to segment, filter and organize large data sets.</p>
<p>If you want to see the interface in action watch our first <a href="/product/video-and-screenshots/introductory-tutorial-video">Tutorial Video</a>.  Or just get right to it with your own data- <a href="/downloads">download the free trial now</a>- there is no registration required, and it installs in minutes.</p>
<p>This is part of a 5 part series- here are the links to the various parts: <a href="/purchasing-data-mart-cutting-costs-with-analysis-part-1">1</a>,<a href="/creating-a-fact-table-with-the-vendor-dimension-purchasing-dm-part-2">2</a> , <a href="/connecting-the-dimension-table-to-the-fact-table-vendor-example-part-3">3</a> , <a href="/hierarchies-and-tree-structures-in-dimensions-an-example-item-dimension-part-4">4</a> and <a href="/joining-the-dimension-table-to-the-fact-table-purchasing-data-mart-part-5">5</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.datamartist.com/connecting-the-dimension-table-to-the-fact-table-vendor-example-part-3/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Duplicate Data and removing duplicate records</title>
		<link>http://www.datamartist.com/duplicate-data-and-removing-duplicate-records</link>
		<comments>http://www.datamartist.com/duplicate-data-and-removing-duplicate-records#comments</comments>
		<pubDate>Wed, 15 Oct 2008 02:07:19 +0000</pubDate>
		<dc:creator>James Standen</dc:creator>
				<category><![CDATA[Data Quality]]></category>
		<category><![CDATA[Datamartist Tool]]></category>
		<category><![CDATA[Spreadsheet Tips]]></category>
		<category><![CDATA[Concatonated Keys]]></category>
		<category><![CDATA[Duplicate Data]]></category>
		<category><![CDATA[Fixing Data]]></category>

		<guid isPermaLink="false">http://www.datamartist.com/?p=159</guid>
		<description><![CDATA[Duplicate records, doubles, redundant data, duplicate rows; it doesn't matter what you call them, they are one of the biggest problems in any data analyst's life. There are lots of different types of data quality problems, but in this post I'll focus on Duplicates. I'll share some hints on how to find duplicate records and remove duplicate records, [...]]]></description>
			<content:encoded><![CDATA[<p><img src="/wp-content/uploads/2008/10/duplicate-customers-john-smith.jpg" alt="duplicate-customers-john-smith" title="duplicate-customers-john-smith" width="300" height="242" class="alignright size-full wp-image-1527" />Duplicate records, doubles, redundant data, duplicate rows; it doesn't matter what you call them, they are one of the biggest problems in any data analyst's life.</p>
<p>There are lots of different types of data quality problems, but in this post I'll focus on Duplicates.</p>
<p>I'll share some hints on how to find duplicate records and remove duplicate records, at least from your sight, if not from the source system.</p>
<h2>Duplicate Records</h2>
<p>A lot of the duplicate records that you're apt to meet belong to two distinct types.</p>
<h2>Non-unique Keys</h2>
<p style="text-align: left;">This is where two records in the same table have the same code or key, but may or may not have different values and meanings-  this can happen when you're mixing data, or data is coming from non-database sources like text files, (csv files from a csv import say), or excel files.  Databases usually have some sort of unique key so don't tend to have this problem- but if you merge data from two different databases the uniqueness might be lost- example: say you have an oracle database (System 1) and a mysql database (System 2), both of which use a "unique" integer to track products.  When you merge the two, you are going to have two of everything:</p>
<p style="text-align: center;"><img class="size-full wp-image-161 aligncenter" title="duplicate-keys" src="/wp-content/uploads/2008/10/duplicate-keys.jpg" alt="" width="274" height="94" /></p>
<p>Notice I've added a column that specifies the source system- where the record came from- this is the first step in solving this problem- you need to Concatenate or combine the keys- although "Product Key" is not unique by itself, "Source System" + "Product Key" is unique, because each source system is internally unique. Now there is a trick to concatenation- <strong>add a string of unusual characters when combining</strong>.  This ensures that by random luck the two keys don't combine to be another duplicate key-  here's a different example that illustrates the point:</p>
<p style="text-align: center;"><img class="aligncenter size-full wp-image-162" title="concatonatedgoodandbad" src="/wp-content/uploads/2008/10/concatonatedgoodandbad.jpg" alt="" width="500" height="120" /></p>
<p>I like to use one or more of the pipe "|" character because its often not present, or even not allowed in source data and codes. Of course, you need a tool that is willing to accept that character as part of a string key for this to work.  If you are doing this in excel, use the "&amp;" to concatenate fields together and add in other characters as needed.  The above example used the following syntax in the formula  ="||" &amp; A1 &amp; "||||" &amp; B1 &amp; "||"</p>
<p>Its a trick you can use to be able to use VLOOKUP more effectively-  another example- say you have a list that has first name, last name, and some address information.  First Name + Last Name might not be unique on its own- throw in the street address though, and chances are you can get a more accurate list of unique people from a key point of view.  Of course this doesn't solve the John Smith, J. Smith, Johnny Smith, Johnathan Smith problem, or addresses like 123 Any Street vs 123 Any St. vs 123 Any Avenue (often all the same, with errors in data entry)... which leads us to;</p>
<h3>Duplicate Meaning</h3>
<p>This is more common, and sometimes harder to deal with. In example above, even though you can fix the duplicate key problem by concatonating a code for the source system to the key (along with some unused characters to ensure no "gotchas")- its pretty clear that "Television" and "TV" are probably the same thing,  and you don't really want to see two products.  These types of duplicates are often the most damaging to good analysis.  Everything works, but your reports are difficult to read, or worse, you make decisions based on your "top 20 products" when in fact, 15 of them are not in the top twenty at all, because the REAL best sellers got split between "TV" and "Television" and "TV Screen" etc. Some automated duplicate detection tools exist (particularly in the area of peoples names and addresses), but in the end for many types of data its the old human eyeball that has to do the work- and you need some sort of system to keep a map of all the duplicates you've identified.</p>
<p>And obviously, you know by now where all this is going-  the tool you need is the tool I'm creating; Datamartist.</p>
<p>Here are some teaser screen shots of the work in progress, and examples of the functionality that deals with the two problems we've discussed above:</p>
<p><img class="alignright size-medium wp-image-183" title="duplicatekeys" src="/wp-content/uploads/2008/10/duplicatekeys-300x185.jpg" alt="" width="300" height="185" />To resolve duplicate keys, Datamartist scans the data, and allows you to select keys and experiment- as many as you like (doing the concatenation trick that I described above automatically) and informs you which keys are duplicate, and shows you the duplicates for the various key combinations.  If there is no way around it, you can keep a non-unique key- Datamartist will fix the reference by taking the value that is most common within a given data set and mapping attributes from that record, giving you a clean, unique reference set to work with, and eliminating that handfull of bad records that are messing things up.</p>
<p> </p>
<p><img class="alignleft size-medium wp-image-184" style="border: white 10px solid;" title="duplicatesmiths" src="/wp-content/uploads/2008/10/duplicatesmiths-300x145.jpg" alt="" width="300" height="145" />In the case of the second type of duplicates, Datamartist provides a filter/search capability to let you find all the duplicate rows (with "Smith" as the last name, for example). Then it allows you to identify which records are the "Master" and which are to be treated as duplicates.  From that point on, the duplicates are mapped to the master, and the reference set shows a single, consistent set of data. </p>
<p> In both these cases, and as a general rule of how Datamartist works, the mapping and configuration you do is not lost if you change input files, or update with new data.  As long as the minimum data structure consistency is there, the mapping you did stays with you, so you only have to do it once. You might need to remap some field names, but Datamartist lets you do that easily too, so the same mapping can be used to analyze many different data sets that use the same underlying keys (and would have had the same underlying data quality issues).</p>
<p> <a href="/download">Download Datamartist now</a>- see the de-duplication functionality in action.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.datamartist.com/duplicate-data-and-removing-duplicate-records/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

