Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

On this Page

Table of Contents
maxLevel2
excludeOlder Versions|Additional Resources|Related Links|Related Information

Overview

This Snap performs record linkage to identify documents from different data sources (input views) that may represent the same entity without relying on a common key. The Match Snap enables you to automatically identify matched records across datasets that do not have a common key field.

Info

The Match Snap is part of our ML Data Preparation Snap Pack.


Note

This Snap uses Duke, which is a library for performing record linkage and deduplication, implemented on top of Apache Lucene.

Input and Output

Expected input

  • First Input: The first dataset that must be matched with the second dataset.
  • Second Input: The second dataset that must be matched with the first dataset.

Expected Output

  • First Output: The matched documents and, optionally, the confidence level associated with the matching.
  • Second OutputOptional. Unmatched documents from the first dataset.
  • Third OutputOptional. Unmatched documents from the second dataset.

Expected Upstream Snaps

  • First Input: A Snap that offers documents. For example, Mapper, MySQL - Select, and JSON Parser.
  • Second Input: A Snap that offers documents. For example, Mapper, MySQL - Select, and JSON Parser.

Expected Downstream Snaps

  • Snaps that accept documents. For example, Mapper, JSON Formatter, and CSV Formatter.

Prerequisites

None.

Configuring Accounts

Accounts are not used with this Snap.

Configuring Views

Input

This Snap has exactly two document input views.
OutputThis Snap has at most three document output views.
ErrorThis Snap has at most one document error view.

Troubleshooting

None.

Limitations and Known Issues

None.

Modes


Snap Settings


LabelRequired. The name for the Snap. Modify this to be more specific, especially if there are more than one of the same Snap in the pipeline.
Threshold

Required. The minimum confidence required for documents to be considered matched.

Minimum Value: 0

Maximum Value: 1

Default Value: 0.8

Confidence

Select this check box to include each match's confidence levels in the output.

Default Value: Deselected

Match all

Select this check box to match one record from the first input with multiple records in the second input. Else, the Snap matches the first record of the second input with the first record of the first input.

Default Value: Deselected

Matching CriteriaEnables you to specify the settings that you want to use to perform the matching between the two input datasets.
Left Field

The field in the first dataset that you want to use for matching. This property is a JSONPath.

Example: $name

Default Value: [None]

Right Field

The field in the second dataset that you want to use for matching. This property is a JSONPath.

Example: $country

Default Value: [None]

Cleaner


Multiexcerpt macro
namecleaner

Select the cleaner that you want to use on the selected fields. 

A cleaner makes comparison easier by removing variations from data, which are not likely to indicate genuine differences. For example, a cleaner might strip everything except digits from a ZIP code. Or, it might normalize and lowercase text.

Depending on the nature of the data in the identified input fields, you can select the kind of cleaner you want to use from the options available:

  • None
  • Text
  • Number
  • Date Time

Default Value: None

Comparator


Multiexcerpt macro
namecomparator


A comparator compares two values and produces a similarity indicator, which is represented by a number that can range from 0 (completely different) to 1 (exactly equal).

Choose the comparator that you want to use on the selected fields, from the drop-down list:

  • LevenshteinCalculates the least number of edit operations (additions, deletions, and substitutions) required to change one string into another.
  • Weighted Levenshtein: Calculates the least number of edit operations (additions, deletions, and substitutions) required to change one string into another. Each type of symbol has a different weight: number has the highest weight, while punctuation has the lowest weight. This makes "Main Street 12" very different from "Main Street 14", while "Main Street 12" is quite similar to "MainStreet12".
  • Longest Common Substring: Identifies the longest string that is a substring of both strings.
  • Q-GramsBreaks a string into a set of consecutive symbols; for example, 'abc' is broken into a set containing 'ab' and 'bc'. Then, the ratio of the overlapping part is calculated.
  • ExactIdentifies and classifies a match as either an exact match or not a match at all. An exact match assigns a score that equals the value in High. Else, it assigns a score that equals the value in Low.
  • Soundex: Compares strings by converting them into Soundex codes. These codes begin with the first letter of the name, followed by a three-digit code that represents the first three remaining consonants. The letters A, E, I, O, U, Y, H, and W are not coded. Thus, the names 'Mathew' and 'Matthew' would generate the same Soundex code: M-300. This enables you to quickly identify strings that refer to the same person or place, but have variations in their spelling.
  • Metaphone: Metaphone is similar to Soundex; only it improves on the Soundex algorithm by using information about variations and inconsistencies in English spelling and pronunciation to produce a more accurate encoding.
  • Numeric: Calculates the ratio of the smaller number to the greater.
  • Date Time: Computes the difference between two date-time data and produces a similarity measure ranging from 0.0 (meaning completely different) and 1.0 (meaning exactly equal). This property requires data in epoch format. If the date-time data in your dataset is not in epoch format, you must select Date Time in the Cleaner property to convert the date-time data into the epoch format.

Default Value: Levenshtein

Low

Enter a decimal value representing the level of probability of the records to be matched if the specified fields are completely unlike.

Example: 0.1

Default Value: [None]


Note

If this value is left empty, a value of 0.3 is applied automatically.


High

Enter a decimal value representing the level of probability of the records to be matched if the specified fields are exact match.

Example: 0.8

Default Value: [None]

Note

If this value is left empty, a value of 0.95 is applied automatically.


Multiexcerpt include macro
nameSnap Execution
pageSOAP Execute
Multiexcerpt include macro
nameExecution_Detail_Write
pageSOAP Execute

Multiexcerpt include macro
nameTemporary Files
pageJoin

Example

Matching Countries Based on their Names and Capitals

One of the challenges associated with data integration is consolidating datasets representing the same entities but using different measurement standards of the data. For example, if you buy the same data from multiple brokers, you may see that the datasets are organized or labeled differently. In data lake scenarios, consolidating data across thousands of datasets manually is a nearly impossible task, given the large number of datasets and the various formats and labeling patterns used across databases. The Match Snap enables you to identify such matched records automatically.

In this example, you take two datasets as input and match country records in them using the Match Snap. You then adjust the similarity threshold value in the Match Snap to try to get the best results (maximize the number of matches while making sure the results are reliable).

Download this Pipeline.

Expand
titleUnderstanding the pipeline

To use the Match Snap, you need two datasets coming into the Snap, where you list out the dataset fields that you want to use to match the records. Once you have the matched data, you create a mechanism for identifying the lowest possible threshold for which you can get the maximum number of reliable matches. To do so, you need to perform the following tasks:

  1. Send data from two datasets into the Match Snap and configure the Match Snap to match countries based on their names and capitals.
  2. Sort the matched country records based on their confidence levels and write them out to a file. This file helps you determine whether to increase or decrease the threshold to adjust the number of matches.
  3. Write the matched country records without their confidence information to a file. This is the output of the Pipeline.
  4. Write the unmatched records from the source datasets into separate files, so you can see how many remain unmatched. If you do not need the unmatched records, remove the second and third output views of the Match Snap.

You create the Pipeline as shown below:

Receiving input datasets

You use a CSV Generator Snap to create the first input dataset. This dataset contains URLs to specific pages that contain a country's details, followed by the name of the country, its capital, and its area.



Once you validate the Pipeline, you can view a preview of the output of this Snap:


You use another CSV Generator Snap to create the second input dataset. Each row of this dataset contains a country ID, followed by a country's name, its capital, and area:




Once you validate the Pipeline, you can view the output:

Matching records in dataset fields

You now connect a Match Snap to the two CSV Generator Snaps and configure them to match countries based on their names and capitals, represented in text:

The Match Snap can offer up to three outputs:

  1. First Output: The list of matched records.
  2. Second Output: The list of unmatched records from the first input view.
  3. Third Output: The list of unmatched records from the second input view.
In this example, you enable all of them.

Once you validate the Pipeline, you can view the matched entries in the first output view:

Note

Note that this Snap supports strings that contain diacritics (é, è, â, ñ, and so on), and is able to match the two versions of 'Brasilia' and 'Bogota' (highlighted in the screenshot below.)




The second output view shows the list of unmatched records from the first input view:



The third output view shows the list of unmatched records from the second input view:



You can now review the matched records to check whether they represent the same entities.

The Match Snap example offers three outputs:

  • The list of matched countries
  • The list of countries in Country Dataset 1 that could not be matched
  • The list of countries in Country Dataset 2 that could not be matched

In the second half of this Pipeline, you review the matched records and tweak the value in the Threshold field of the Match Snap until you arrive at the lowest threshold value that gives you the maximum number of correct matches. You decide to make two copies of the output document containing the list of matched countries. In one of these, you decide to retain the confidence level, so you can sort the results by confidence. In the other, you decide to remove the confidence levels, so you can retain only the data you need. If the output contains wrong matches, increase the threshold. If the output looks great, but you want to see more matches with lower confidence, try lowering the threshold.

To do so, you create two copies of the document containing the matched countries, using the Copy Snap. You now need to generate the following two documents and identify the lowest confidence level that gives you the most number of reliable matches:

  • A document containing the matched documents and confidence-level data
  • A document containing only the matched fields, which is the main output of this pipeline

Generating a document containing matched fields and confidence-level data

From one copy of the list of matched countries, you use the Mapper Snap to create a document containing the matched countries and their confidence levels:



You now sort them based on their confidence levels, so that the countries with the lowest confidence levels will appear at the top of the list:



You use a File Writer Snap to write the sorted data into a CSV file:

Generating a document containing only matched records

From the other copy, you use the Mapper Snap to create a document containing only the matched countries:



You use a File Writer Snap to write the data into a CSV file:

Modifying matching threshold values to improve the result

You now need to iteratively lower the threshold values until you reach a threshold that is best suited to offer the most number of reliable matches. To do so, you execute the Pipeline a number of times, using iteratively lower values in the Threshold field of the Match Snap, until you reach a value below which your output matching data is not reliable. For example, if you decide to lower the threshold value from the default 0.8 to 0.5, you will find an additional row of data displaying inaccurately as matched:

You now know that given this data, the value in the Threshold field must be above 0.51 to be reliable and offer the most number of correct matches.

Download this Pipeline.


Downloads

Multiexcerpt include macro
namedownload_instructions
pageOpenAPI

Attachments
uploadfalse
oldfalse
patterns*.slp, *.zip

Insert excerpt
ML Data Preparation Snap Pack
ML Data Preparation Snap Pack
nopaneltrue