Kontaktmethode

Kontaktmethode

Ich habe also eine Tabelle mit Namen, Adresse und Postleitzahl, an die keine Datensatzdaten angehängt sind; und ich habe eine Tabelle, die alle dieselben Daten enthält, aber mehr Informationen bietet, und ich brauche eine Möglichkeit, die Tabellen zusammenzuführen, wenn sie nicht 100 % übereinstimmen.

Wie kann ich sie abgleichen, wenn sie nicht identisch sind? Ich bin ein SQL-Neuling, aber ich weiß, dass sie größtenteils nicht übereinstimmen und ich nicht der Einzige mit diesem Problem sein kann. Es hat sich jedoch als schwierig erwiesen, Software zu finden, die dies tut.

Dies durch eine entsprechende Software zu bewerkstelligen, wäre sogar noch schlimmer, als es von vornherein tun zu müssen.

Ich weiß, dass ich das in Excel irgendwie machen kann, aber bei der Menge an Datensätzen, die ich habe, gestaltet es sich bei über einer Million schwierig.

Antwort1

Ich habe früher bei einer Firma für Datenbankmarketing gearbeitet (tut mir leid, dass ich Ihnen Junk-Mails schicke). Unsere Aufgabe war es, herauszufinden, ob „Robert Jones 671 Kimbrough SPFD MO 65802“ dasselbe ist wie „Bobbie Joanes 671 Kimbrough St. Sprinfield MO 65809“. Wenn wir keine Übereinstimmung fanden, riskierten wir, einem potenziellen Kunden doppelte Mails zu schicken, was unsere Kunden dumm dastehen ließ und ihr Geld verschwendete.

Unser Ansatz bestand darin, das Problem in kleinere Bereiche zu zerlegen und unterschiedliche Kriterien anzuwenden, um die Frage zu beantworten:wahrscheinlichB. Wenn die Übereinstimmungsregel zu streng ist, werden Sie keine Duplikate erkennen. Wenn die Übereinstimmungsregel zu locker ist, verlieren Sie potenzielle Kunden.

Wir hatten drei Domänen, mit denen eine Entität übereinstimmen konnte: Name, Kontaktmethode, Beziehung. Eine Übereinstimmung war nur zulässig, wenn wir eine Übereinstimmung über zwei der Domänen hinweg fanden.

Kontaktmethode

Als Kontaktmöglichkeit standen Post, E-Mail oder Telefon zur Verfügung.

Adressen

Der erste Schritt besteht darin, eine angegebene Adresse zu standardisieren. Das Endziel besteht darin, Ihre eingegebene Adresse zu übernehmen und sie auf dieUSPSStandard. Im vorangegangenen Beispiel würden wahrscheinlich beide Adressen Post erhalten, aber nur, weil der Postbote die Absicht des Absenders verstanden hat. Die echte Adresse wäre

671 S KIMBROUGH AVE SPRINGFIELD MO 65806-3342

Sobald Sie eine einheitliche Adresse haben, ist die Adresszuordnung ein viel einfacher zu lösendes Problem. Sie müssen sich zwar immer noch um Adressen kümmern, die nicht korrigierbar sind, sowie um die Regeln für Standorte mit mehreren Mietern (Suite 200, Apt B usw.), aber das ist Teil der Feinabstimmung, die Sie mit dem Geschäftsinhaber ausarbeiten müssen. Oh, und obwohl die +4 Ziffern für die Zustellung praktisch sind, sollten Sie diese nicht in Ihre Adresszuordnungslogik einbeziehen. Diese ändern sich mit weitaus größerer Wahrscheinlichkeit als die 5-stellige Postleitzahl.

Denken Sie auch daran, dass Menschen umziehen, sodass Sie Informationen zur Adressweiterleitung (NCOA – National Change of Address) für die letzten X Zeiträume erhalten können, wenn es wichtig ist, dass Sie aktuelle Adressdaten haben. Wenn Sie umziehen, sind die Unterlagen zur Adressweiterleitung nur für einen bestimmten Zeitraum gültig, und jeder, der Ihnen nach diesem Zeitraum Post schickt, erhält eine Rücksendebestätigung an den Absender, nicht an diese Adresse. Wenn Sie die Post vor dem Senden mit NCOA versehen, stellen Sie sicher, dass Sie die aktuelle Adresse haben, auch wenn die Weiterleitung abgelaufen ist.

Unser Ansatz bestand darin, aus der standardisierten Adresse (Zeile 1 + Postleitzahl) einen Hash zu erstellen und diesen als Vergleichsschlüssel zu verwenden.

Telefon

Die einzige heikle Sache bei den Telefonen war, ob sie eine Vorwahl hatten. Wir haben sie ohne Trennzeichen oder Formatierung gespeichert und alle Nebenstellen separat gespeichert. Das Ergebnis war eine 7- oder 10-stellige Telefonnummer. Wenn wir eine Adresse hatten, gibt es Software, die das kannnormalerweiseFüllen Sie die Vorwahl nach. Bei der Aufteilung von Vorwahlen gibt es normalerweise eine Übergangsfrist, in der ein Ort von zwei (oder mehr) Vorwahlen bedient werden kann.

Email

Im Allgemeinen stimmt eine E-Mail-Adresse entweder überein oder nicht. Wenn wir wirklich verzweifelt versuchen wollten, eine Übereinstimmung zu finden, haben wir unsere Daten bereinigt. Dazu mussten wir uns Domänen ansehen und sicherstellen, dass sie vorhanden sind, und die Top-Level-Domäne hinzufügen, wenn sie nicht vorhanden war. Wenn wir joan@aol sahen, konnten wir sicher sein, dass sie @aol.com meinten. Der andere Trick, mit dem Sie die Übereinstimmung von E-Mails verbessern können, besteht darin, + in ihrer Adresse zu verwenden. Einige Anbieter, wie z. B. Google, erlauben[email geschützt]an die Basisadresse zugestellt werden. Ich finde, das ist eine hilfreiche Methode, eine E-Mail-Adresse einer bestimmten Site zuzuordnen, bei der ich registriert bin. Wenn Junk-Mails auf diesem Konto eintreffen, weiß ich, wem ich die Meinung sagen kann. Aber für Abgleichzwecke können Sie möglicherweise den Inhalt von + bis @ löschen.

Namen

„Was steckt in einem Namen? Das, was wir Jones nennen, könnte bei jeder anderen Schreibweise dieselbe Person sein.“

William Matchspeare

Wir haben festgestellt, dass wir bei Namen zwei verschiedene Arten von Übereinstimmungen durchführen mussten. Firmen- oder Unternehmensname und Name einer Einzelperson. Ein US-Name kann ein Präfix (Mr, Mrs, Dr, Fr, Sen, Sgt usw.), einen Vornamen, einen zweiten Vornamen, einen zweiten zweiten Vornamen oder väterlichen Nachnamen, einen Nachnamen/mütterlichen Nachnamen, einen Generationennamen (Jr, Sr, IV), einen beruflichen/ehrenamtlichen/akademischen Namen (MBA, JD, PhD, esq usw.) haben. Ist das nicht lustig?

Normalerweise ist es nicht so schlimm, solange die Daten in den einzelnen Teilen erfasst wurden. Andernfalls können Sie seltsame Ergebnisse erhalten, wenn Sie davon ausgehen, dass Sie nach Leerzeichen trennen können, um Namensteile zu bestimmen, wie mein Freund mit dem Nachnamen „de los santos“ bestätigen kann.

Firmennamen, nun, das ist normalerweise einfach das, was sie Ihnen geben. Dinge, die Sie beachten sollten, sind DBA-Geschäfte. „Seelenlose Megakonzern LLC DBA Happy Cuddly Puppy Preserve“ Das muss möglicherweise mit „Happy Cuddly Puppy Preserve“ und/oder „Seelenlose Megakonzern“ übereinstimmen.

Namensabgleich

Ein erster Versuch zur Zuordnung persönlicher Namen wäreSoundex. Es ist in der Regel in einem RDBMS verfügbar und kann basierend auf Ihren Eingabedaten passabel sein. Das Problem mit Soundex ist, dass es nur für eine Teilmenge europäischer Namen geeignet ist. Ein intelligenterer phonetischer Ansatz, den wir verwendet haben, war derDoppeltes MetaphonAlgorithmus. Dies lieferte ein viel besseres Ergebnis für die Zeichenfolgenübereinstimmung.

In unserem obigen Beispiel wird eine exakte Übereinstimmung von Jones mit Joanes fehlschlagen, eine phonetische Übereinstimmung sollte jedoch funktionieren. Das Problem ist jedoch, dass wir Bobbie mit Robert haben. Mit noch so viel Vorstellungskraft werden diese beiden nicht gleich klingen, aber die Kunden bestanden darauf, dass uns Übereinstimmungen fehlten, also fügten wir eine weitere Reihe von Prüfungen hinzu, um Spitznamen wieder auf ihren vollen Wert zu erweitern, und führten dann die Vergleiche erneut durch.

Bei den Firmennamenvergleichen haben wir es als nützlich empfunden, eine Liste von „Stoppwörter" - bedeutungsloser Ballast, der in Namen vorkommt, aber bei der Übereinstimmung ignoriert werden sollte (a, of, the, LLC, corp, univ, university)

Wir erhielten dann Feedback, dass „einfache“ Tippfehler, Vertauschungen oder Auslassungen von Buchstaben zu nicht übereinstimmenden Entitäten führten. Als diese Antwort immer länger wurde, erhielten wir auch Feedback zu Firmennamen, die bei Entitäten wie „Johns Gebrauchtreifenscheune“ zu „Johns Mega Gebrauchtreifenscheune“ nicht übereinstimmten. Wir implementierten schließlich eineN-Gramm-Vergleichund ein Token-Vergleichsalgorithmus, der diese Szenarien anspricht. Ich habe seitdem mit anderen in der Branche gesprochen und sie waren Befürworter der VerwendungLevenshtein-Distanzzum Bestimmen der Zeichenfolgenübereinstimmung.

Beziehung

Eine Beziehung war im Grunde etwas anderes, von dem wir wussten, dass es wahr ist. Ein Unternehmen führte eine Werbeaktion durch, bei der Verkäufer einen Bonus erhielten, wenn Kunden Antwortkarten ausfüllten. Wir hatten eine Mitarbeiterliste von „John's Used Tire Barn“ und mussten unvollständige Namensdaten mit diesem Referenzsatz korrelieren. Ich spreche hier nur der Vollständigkeit halber darüber. Für Ihr Problem werden Sie sich Namens- und MoC-Übereinstimmungen ansehen.

Erledigen Sie es schon

Die Einzelheiten Ihrer Implementierung hängen davon ab, wie Ihre Daten aussehen und wie viel Zeit und Geld Sie in das Problem investieren möchten.

Mein allgemeiner Ansatz würde damit beginnen, beide Datensätze in Ihre Datenbank zu importieren. Die Daten, die alle Attribute haben, sind Ihr Referenzsatz. Der kleinere Datensatz ist Ihr Kandidatensatz. Fügen Sie in der Kandidatentabelle eine Spalte hinzu, die Ihre Referenzsatzkennung enthält. Im Folgenden fehlt die Normalisierung, aber das ist beabsichtigt

CREATE TABLE 
    dbo.reference 
(
    reference_id int identity(1,1) NOT NULL PRIMARY KEY
,   name_prfix varchar(50) NULL
,   name_first varchar(50) NOT NULL
,   name_middle varchar(50) NULL
,   name_last varchar(50) NOT NULL
,   name_suffix varchar(20) NULL
,   company_name varchar(100) NULL
,   address_line1 varchar(70) NULL
,   address_line2 varchar(50) NULL
,   address_city varchar(50) NULL
,   address_state varchar(20) NULL
,   address_postalcode varchar(10) NULL
,   address_zip4 char(4) NULL
,   phone_number varchar(10) NULL
)

CREATE TABLE 
    dbo.candidate
(
    candidate_id int identity(1,1) NOT NULL PRIMARY KEY
,   name_prfix varchar(50) NULL
,   name_first varchar(50) NOT NULL
,   name_middle varchar(50) NULL
,   name_last varchar(50) NOT NULL
,   name_suffix varchar(20) NULL
,   company_name varchar(100) NULL
,   address_line1 varchar(70) NULL
,   address_line2 varchar(50) NULL
,   address_city varchar(50) NULL
,   address_state varchar(20) NULL
,   address_postalcode varchar(10) NULL
,   address_zip4 char(4) NULL
,   reference_id int 
)

Iteratives TSQL

Schritt 1, direkte Übereinstimmungen. Überall, wo eine exakte Übereinstimmung zwischen Kandidat und Referenz besteht, wird dies in Candidate.reference_id aufgezeichnet und es wird nun vom Prozess ausgeschlossen.

Schritt 2, Direktübereinstimmungen mit Spitznamenerweiterung und/oder Stoppwortersetzung

Schritt 3: Adressübereinstimmungen mit Fuzzy-Namensübereinstimmung (Double Metaphone + Ngram + minimale Editierdistanz)

Schritt 4: Adressübereinstimmungen mit Fuzzy-Spitznamenerweiterung und/oder Stoppwort-Ersetzungsübereinstimmung (Double Metaphone + Ngram + minimale Editierdistanz)

Schritt 5: Überprüfen Sie den verbleibenden Kandidatenpool für die manuelle Zuordnung

SSIS

Die Enterprise Edition von SSIS bietet Fuzzy-Logik-Funktionen. Im Grunde genommen macht sie dasselbe wie der TSQL-Ansatz, ohne dass Sie Ihr eigenes Framework für Namensabgleich und dergleichen zusammenstellen müssen.

Die SSIS-Version 2012 stellt auch Datenqualitätsdienste bereit, mit denen Sie Ihre Adressen bereinigen und Namen in Teile aufteilen können.

verwandte Informationen