You are on page 1of 65

Data Analysis and Integration

Duplicate detection and data profiling


Introduction

• String matching
– edit distance, Damerau-Levenshtein, Needleman-Wunsch
– Jaro, Jaro-Winkler
– Jaccard
– Soundex, Refined Soundex

• Function that gives the similarity between two strings:


𝑠 𝑥, 𝑦 = …

IST/MEIC Análise e Integração de Dados - 2022/2023 - 1º Sem 2


Data matching

• How to find these matches?

IST/MEIC Análise e Integração de Dados - 2022/2023 - 1º Sem 3


Data matching

• How to find these matches?

– compare every 𝑥 with every 𝑦


– calculate similarity 𝑠(𝑥, 𝑦)
– use 𝑡 as a threshold

IST/MEIC Análise e Integração de Dados - 2022/2023 - 1º Sem 4


Data matching

IST/MEIC Análise e Integração de Dados - 2022/2023 - 1º Sem 5


Data matching

IST/MEIC Análise e Integração de Dados - 2022/2023 - 1º Sem 6


Data matching

IST/MEIC Análise e Integração de Dados - 2022/2023 - 1º Sem 7


Data matching

IST/MEIC Análise e Integração de Dados - 2022/2023 - 1º Sem 8


Data matching

IST/MEIC Análise e Integração de Dados - 2022/2023 - 1º Sem 9


Data matching

• Potential problems
– number of comparisons may be too large
• e.g. 1000 x 1000 rows = 106 comparisons
– difficult to find single perfect measure
• e.g. there might be false negatives
– there may be no clear-cut threshold
• e.g. no way to avoid false positives or false negatives

IST/MEIC Análise e Integração de Dados - 2022/2023 - 1º Sem 10


Duplicate detection

• Similar approach for duplicate detection


– multiple records refer to the same real-world entity

customer_id first_name last_name address city country


169 Isabel de Castro Estrada da saúde n. 58 Lisboa Portugal
504 Isabel Castro Estrada da saúde 58 Lisbon Portugal
568 Isabella de Castro Estrada da saúde 58 Lisboa Portugal
369 Manuel Rodriguez Jardim das Rosas 32 Lisboa Portugal
535 Manuel Rodrigues Jardim das Rosas n. 32 Lisboa Portugal
576 Emanuel Rodrigues Jardim das Rosas 32 Lisbon Portugal

– compare these records to find duplicates


• focus on first_name, last_name, address

IST/MEIC Análise e Integração de Dados - 2022/2023 - 1º Sem 11


Duplicate detection

• If we wanted to find exact duplicates


select *
from customers as a, customers as b
where a.first_name = b.first_name
and a.last_name = b.last_name
and a.address = b.address;

– but we want to find approximate duplicates


• where first_name, last_name, address are similar, not equal
– similar according to some measure

IST/MEIC Análise e Integração de Dados - 2022/2023 - 1º Sem 12


Duplicate detection

• We could do:

select *
from customers as a, customers as b
where similarity(a.first_name, b.first_name) >= …
and similarity(a.last_name, b.last_name) >= …
and similarity(a.address, b.address) >= …;

– assuming that the similarity(…, …) function is available

IST/MEIC Análise e Integração de Dados - 2022/2023 - 1º Sem 13


Duplicate detection

• Or:

select *
from customers as a, customers as b
where similarity(a.first_name, b.first_name) +
similarity(a.last_name, b.last_name) +
similarity(a.address, b.address) >= …;

– using the similarities together in the same formula

IST/MEIC Análise e Integração de Dados - 2022/2023 - 1º Sem 14


Duplicate detection

• Or even:

select *
from customers as a, customers as b
where 0.3*similarity(a.first_name, b.first_name) +
0.3*similarity(a.last_name, b.last_name) +
0.4*similarity(a.address, b.address) >= …;

– using different weights for the similarities

IST/MEIC Análise e Integração de Dados - 2022/2023 - 1º Sem 15


General approach

• Similarity between two records 𝑥 and 𝑦


𝑛

𝑠 𝑥, 𝑦 = ෍ 𝛼𝑖 ∙ 𝑠𝑖 (𝑥, 𝑦)
𝑖=1

– where:
• 𝑠𝑖 (𝑥, 𝑦) is the similarity between the 𝑖 𝑡ℎ attributes of 𝑥 and 𝑦
• 𝛼𝑖 is the weight given to the similarity 𝑠𝑖 (𝑥, 𝑦)

IST/MEIC Análise e Integração de Dados - 2022/2023 - 1º Sem 16


General approach

• The goal is to find every match 𝑥, 𝑦 for which


𝑛

𝑠 𝑥, 𝑦 = ෍ 𝛼𝑖 ∙ 𝑠𝑖 (𝑥, 𝑦) ≥ 𝑡
𝑖=1

– where 𝑡 is a threshold

IST/MEIC Análise e Integração de Dados - 2022/2023 - 1º Sem 17


Duplicate detection

• Example
customer_id,first_name,last_name,address,city,country
169,Isabel,de Castro,Estrada da saúde n. 58,Lisboa,Portugal
504,Isabel,Castro,Estrada da saúde 58,Lisbon,Portugal
568,Isabella,de Castro,Estrada da saúde 58,Lisboa,Portugal
369,Manuel,Rodriguez,Jardim das Rosas 32,Lisboa,Portugal
535,Manuel,Rodrigues,Jardim das Rosas n. 32,Lisboa,Portugal
576,Emanuel,Rodrigues,Jardim das Rosas 32,Lisbon,Portugal

IST/MEIC Análise e Integração de Dados - 2022/2023 - 1º Sem 18


Duplicate detection

• Rename

IST/MEIC Análise e Integração de Dados - 2022/2023 - 1º Sem 19


Duplicate detection

• Compare

IST/MEIC Análise e Integração de Dados - 2022/2023 - 1º Sem 20


Duplicate detection

• No need to compare 𝑥 ↔ 𝑥

IST/MEIC Análise e Integração de Dados - 2022/2023 - 1º Sem 21


Duplicate detection

• No need to compare 𝑥 ↔ 𝑥

IST/MEIC Análise e Integração de Dados - 2022/2023 - 1º Sem 22


Duplicate detection

• No need to compare both 𝑥 ↔ 𝑦 and 𝑦 ↔ 𝑥

IST/MEIC Análise e Integração de Dados - 2022/2023 - 1º Sem 23


Duplicate detection

• No need to compare both 𝑥 ↔ 𝑦 and 𝑦 ↔ 𝑥

IST/MEIC Análise e Integração de Dados - 2022/2023 - 1º Sem 24


Duplicate detection

• Calculating the measures

IST/MEIC Análise e Integração de Dados - 2022/2023 - 1º Sem 25


Duplicate detection

• Combining the measures

IST/MEIC Análise e Integração de Dados - 2022/2023 - 1º Sem 26


Duplicate detection

• Combining the measures

IST/MEIC Análise e Integração de Dados - 2022/2023 - 1º Sem 27


Duplicate detection

• Applying the threshold

IST/MEIC Análise e Integração de Dados - 2022/2023 - 1º Sem 28


Duplicate detection

• Getting the results

IST/MEIC Análise e Integração de Dados - 2022/2023 - 1º Sem 29


Duplicate detection

• Using the results

IST/MEIC Análise e Integração de Dados - 2022/2023 - 1º Sem 30


Duplicate elimination

IST/MEIC Análise e Integração de Dados - 2022/2023 - 1º Sem 31


Duplicate elimination

IST/MEIC Análise e Integração de Dados - 2022/2023 - 1º Sem 32


Duplicate elimination

IST/MEIC Análise e Integração de Dados - 2022/2023 - 1º Sem 33


Data profiling

• From duplicate detection to data profiling


– duplicate detection
– data cleaning
• much more than duplicate elimination
– data quality
• much more than finding duplicates
– data profiling

IST/MEIC Análise e Integração de Dados - 2022/2023 - 1º Sem 34


Data profiling

• What is data profiling?


– analyze the contents of a data source
– gather statistics about the data contained therein
• minimum, maximum, average, range, value distribution, etc.
– identify data quality problems
• missing or incomplete data, errors, inconsistencies, etc.
– understand the logic and relationships between data
• unique values, keys, foreign keys and other constraints

IST/MEIC Análise e Integração de Dados - 2022/2023 - 1º Sem 35


Data profiling

• These tasks (and many more) are data profiling


– number of rows, number of null values, number of distinct values
– minimum value, maximum value, minimum length, maximum length
– single- and multi-column frequency histogram
– precision of numeric values, length of string values
– data type discovery
– uniqueness and constancy
– single- and multi-column primary key discovery
– single- and multi-column foreign key discovery
– value overlap (cross-domain analysis)
– text field profiling
– pattern discovery (e.g. phone number patterns)
– soundex frequency histogram
– etc.
IST/MEIC Análise e Integração de Dados - 2022/2023 - 1º Sem 36
Data profiling

Z. Abedjan, L. Golab, F. Naumann


Profiling relational data: a survey
VLDB Journal, vol. 24, no. 4, 2015

IST/MEIC Análise e Integração de Dados - 2022/2023 - 1º Sem 37


Data profiling

• Data profiling tools


data quality problems

Data metadata
profiling • data types
… • keys
• dependencies
• …

data statistics

IST/MEIC Análise e Integração de Dados - 2022/2023 - 1º Sem 38


Data profiling
• Data profiling tools

IST/MEIC Análise e Integração de Dados - 2022/2023 - 1º Sem 39


Data profiling
• A datastore can be a file, database, etc.

IST/MEIC Análise e Integração de Dados - 2022/2023 - 1º Sem 40


Data profiling
• Creating a new datastore

IST/MEIC Análise e Integração de Dados - 2022/2023 - 1º Sem 41


Data profiling
• Creating a new datastore

IST/MEIC Análise e Integração de Dados - 2022/2023 - 1º Sem 42


Data profiling
• Several options for data profiling tasks

IST/MEIC Análise e Integração de Dados - 2022/2023 - 1º Sem 43


Data profiling
• Selecting the data source

IST/MEIC Análise e Integração de Dados - 2022/2023 - 1º Sem 44


Data profiling
• Completeness analysis

IST/MEIC Análise e Integração de Dados - 2022/2023 - 1º Sem 45


Data profiling
• Completeness analysis

IST/MEIC Análise e Integração de Dados - 2022/2023 - 1º Sem 46


Data profiling
• Completeness analysis

IST/MEIC Análise e Integração de Dados - 2022/2023 - 1º Sem 47


Data profiling
• Value distribution

IST/MEIC Análise e Integração de Dados - 2022/2023 - 1º Sem 48


Data profiling
• Value distribution

IST/MEIC Análise e Integração de Dados - 2022/2023 - 1º Sem 49


Data profiling
• Value distribution

IST/MEIC Análise e Integração de Dados - 2022/2023 - 1º Sem 50


Data profiling
• Value distribution

IST/MEIC Análise e Integração de Dados - 2022/2023 - 1º Sem 51


Data profiling
• Value distribution – detailed results

IST/MEIC Análise e Integração de Dados - 2022/2023 - 1º Sem 52


Data profiling
• String analysis

IST/MEIC Análise e Integração de Dados - 2022/2023 - 1º Sem 53


Data profiling
• String analysis

IST/MEIC Análise e Integração de Dados - 2022/2023 - 1º Sem 54


Data profiling
• String analysis

IST/MEIC Análise e Integração de Dados - 2022/2023 - 1º Sem 55


Data profiling

• Integration between tools


– Pentaho Data Integration (PDI) with DataCleaner plugin
– the output of any transformation step can be a data source for
data profiling

IST/MEIC Análise e Integração de Dados - 2022/2023 - 1º Sem 56


Duplicate detection

IST/MEIC Análise e Integração de Dados - 2022/2023 - 1º Sem 57


Data profiling

• Example
– perform data profiling after duplicate elimination

IST/MEIC Análise e Integração de Dados - 2022/2023 - 1º Sem 58


Data profiling

IST/MEIC Análise e Integração de Dados - 2022/2023 - 1º Sem 59


Data profiling

IST/MEIC Análise e Integração de Dados - 2022/2023 - 1º Sem 60


Data profiling

• Value distribution

IST/MEIC Análise e Integração de Dados - 2022/2023 - 1º Sem 61


Data profiling

• Value distribution

IST/MEIC Análise e Integração de Dados - 2022/2023 - 1º Sem 62


Data profiling

IST/MEIC Análise e Integração de Dados - 2022/2023 - 1º Sem 63


Data profiling

• String analysis

IST/MEIC Análise e Integração de Dados - 2022/2023 - 1º Sem 64


Data profiling

• String analysis

IST/MEIC Análise e Integração de Dados - 2022/2023 - 1º Sem 65

You might also like