26.05.2015
Anton Grening
Autor: Anton Grening

ACL An­a­lyt­ics™ - Vier prak­ti­sche Text­feld­funk­tion­en

Nach unseren Blogreihen zu Themen wie Zahlungsbedingungen in SAP® oder Process Mining möchte ich mit diesem Eintrag eine neue Serie rund um ACL™ Analytics starten.

Der erste Artikel beschäftigt sich mit praktischen ACL™-Funktionen auf Textfelder und wird Ihnen zeigen wie einfach mit Textfeldern gearbeitet und diese sogar kombiniert werden können. Grundsätzlich finden Sie natürlich diese Funktionen und Befehle inklusive einigen Beispielen auch in der offiziellen und sehr gut gemachten ACL™ Hilfe, die ich diesem Artikel zu Grunde gelegt habe, allerdings möchte ich Ihnen hier noch ein paar praktische Anwendungsratschläge mit auf dem Weg geben und die Funktionen an einem zusammenhängenden Beispiel erklären. Die Funktionen, um die es im heutigen Artikel geht, können sich zum Beispiel bei der Suche nach Duplikaten als sehr nützlich erweisen.

Sollen hierfür Kunden- oder Lieferantenstammdaten nach doppelten Einträgen untersucht werden, so empfiehlt es sich manchmal, verschiedene Spalten gleichzeitig einzubeziehen. Auch das Feld der Telefonnummer kann hierfür ein entscheidender Indikator sein. Da dieses aber nur in den seltensten Fällen nach einer einheitlichen Schreibkonvention gefüllt ist, muss es zunächst vorbereitet und vergleichbar gemacht werden.

 

IDNameStraßePLZOrtTelefonnummer
1005Beispiel AG Hauptstraße 8 94469 Deggendorf +49 (0) 991 1234 56
4236 ACME Corp. 963 Sample Drive 90028Los Angeles +1 818 123 4567
5459sample:company hauptstraße 8 10557berlin(+49) 0 30 123-456
7894 Example Inc. 12 Baker Street WC2E 9RZ London+44 20 1234 567-8
8001John Doe 123 Main St 10081 New York +1 718 123456789
8864 t.e.s.t GmbH Deggendorfer Straße 9 10557Berlin030 98765432
9354SAMPLE COMPANY HAUPTSTRAßE 8 10557BERLIN+49 (0)30123456

 

Ein Duplikat im oberen Beispiel kann anhand der Telefonnummer so nicht ohne weiteres entdeckt werden. Erst wenn wir dieses Feld von Leer- und Sonderzeichen bereinigen, wird der Abgleich ein Ergebnis liefern. Für dieses Bereinigen können wir auf einige Funktionen aus dem ACL™ Repertoire zurückgreifen: 

1. EX­CLUDE()-Funk­tion

Diese Funktion erlaubt das Ausschließen von vordefinierten Zeichen aus einer Zeichenfolge. Das bedeutet, ein Textfeld kann so bearbeitet werden, dass gewisse Zeichen entfernt und im Ergebnis nicht mehr enthalten sind. Um den EXCLUDE anwenden zu können, benötigt man also zwei Parameter:

EXCLUDE(Zeichenfolge; Ausschlusszeichen)

  1. Zeichenfolge: Text, aus dem bestimmte Zeichen ausgeschlossen werden sollen.
  2. Ausschlusszeichen: Zeichen, die ausgeschlossen werden sollen und im Ergebnis nicht auftauchen dürfen.

Sollen mehrere Zeichen ausgeschlossen werden, so können diese einfach zusammen angegeben werden. Ist keines der Ausschlusszeichen in der Zeichenfolge enthalten, wird diese auch nicht verändert. Hier ist zu beachten, dass die EXCLUDE()-Funktion zwischen Groß- und Kleinbuchstaben unterscheidet, sodass bei auszuschließenden Buchstaben beide Schreibweisen angeben werden müssen. Folgende Beispiele verdeutlichen die Anwendung dieser Funktion:

 

BefehlErgebnis
EXCLUDE( “DEG-ZD-123”; “-“) “DEGZD123”
EXCLUDE(“abc:456”; ”ABCDEFG”) “abc:456”
EXCLUDE(“(+49) 123 456 789 - 0”; ” +()-“) “491234567890”

 

Im letzten Beispiel sehen wir auch eine mögliche Lösung für unser Duplikatenproblem. Hier wurden die unerwünschten Leer- und Sonderzeichen entfernt, wodurch die Nummer vergleichbarer geworden ist. Da es aber eine Vielzahl von Sonderzeichen gibt, die einen Weg in die Telefonnummer finden können, müssten all diese denkbaren Zeichen ausgeschlossen werden, um eine allgemeingültige Lösung schaffen zu können. Einfacher und sicherer ist es, wenn es eine Möglichkeit gäbe zu sagen, man wolle nur alle Zahlen im Ergebnis behalten. Und genau dies ist unter anderem mit der nächsten ACL™-Funktion in unserer Liste möglich.

2. INCLUDE()-Funktion

Wenn man wie bei unseren Telefonnummer-Duplikaten sicherstellen muss, dass alle Zeichen außer den Zahlen entfernt werden sollen, dann ist die Liste der Ausschlusszeichen möglicherweise sehr umfangreich, d.h. man läuft Gefahr mögliche Zeichen zu vergessen. Die INCLUDE()-Funktion kann hier Abhilfe schaffen, denn mit ihr ist es möglich, statt Zeichen auszuschließen jene anzugeben die eingeschlossen werden und somit im Ergebnis enthalten sein sollen. Der Aufruf sieht dabei wie folgt aus:

INCLUDE( Zeichenfolge; Einschlusszeichen)

  1. Zeichenfolge: Text, der auf bestimmte Zeichen beschränkt werden soll.
  2. Einschlusszeichen: Zeichen, auf die beschränkt werden soll und zum Ergebnis gehören dürfen.

Auch hier wird zwischen Groß- und Kleinschreibung unterschieden und es können ein oder mehrere Einschlusszeichen angegeben werden. Beinhaltet die Zeichenfolge keines der Einschlusszeichen so bleibt das Ergebnis leer. Möchte man sicherstellen, dass nur Zahlen oder nur Buchstaben in das Ergebnis übernommen werden, so gibt man einfach all diese Zeichen an. Alle restlichen, nicht aufgeführten Zeichen werden nicht ins Ergebnis übernommen. Nachfolgende Beispiele verdeutlichen dies:

 

BefehlErgebnis
INCLUDE( “DEG-ZD-123”; “D“) “DD”
INCLUDE(“abc:456”; ”ABCDEFG”) “”
INCLUDE(“(+49) 123 456 789 - 0”; ”0123456789“) “491234567890”

 

Das letzte Beispiel mit der Telefonnummer liefert uns dasselbe Ergebnis wie auch der EXCLUDE zuvor, nur ist es ratsamer für solche Aufgabenstellungen eben die INCLUDE()-Funktion zu verwenden, da so eine allgemeingültige Lösung erzeugt wird.

Textfeld Funktionen

Abbildung 1: Neues Feld c_TelNr_clean über die INCLUDE Funktion erzeugen

Manchmal möchte man nun aber sicherstellen, dass nur alphabetische Zeichen ausgewertet werden und alle Zahlen und Sonderzeichen nicht im Ergebnis auftauchen, wie z.B. beim Vergleich über den Firmennamen in unserem oberen Beispiel (sample:company und SAMPLE COMPANY). So können einfach alle Buchstaben, GROSS- und kleingeschrieben, in die Liste der Einschlusszeichen aufgenommen werden, was dazu führen würde, dass das Ergebnisfeld zwar nur Buchstaben enthält, diese aber aufgrund der unterschiedlichen groß/klein Schreibweisen nicht als Duplikate erkannt werden würden. ACL™ achtet nämlich auch bei Befehlen wie DUPLICATES, CLASSIFY oder SUMMARIZE, die für die Duplikatensuche verwendet werden können, auf eine exakt gleiche Schreibweise. Somit würden „samplecompany“ und „SAMPLECOMPANY“ nicht als Duplikat behandelt. Da wir aber diese unterschiedlichen Eingaben in unserer Aufgabenstellung als gleichwertig ansehen möchten, können wir auf die nun folgenden ACL™-Funktionen zurückgreifen.

3. UPPER/LOWER/PROPER ()-Funktion

Wenn es um den Vergleich von Texten geht, so sollte man sich die Funktionen UPPER, LOWER und PROPER im Hinterkopf behalten. Denn damit können alphabetische Zeichen so verändert werden, dass die Groß- und Kleinschreibweise entsprechend der Funktion umgewandelt wird.

UPPER(Zeichenfolge) – Alle Buchstaben der Zeichenfolge werden zu Großbuchstaben.

 

BefehlErgebnis
UPPER(“Sample:Company”) “SAMPLE:COMPANY”
UPPER(“Deggendorfer Straße 9”) “DEGGENDORFER STRAßE 9”

LOWER(Zeichenfolge) – Alle Buchstaben der Zeichenfolge werden zu Kleinbuchstabe

 

BefehlErgebnis
LOWER(“Sample:Company”) “sample:company”
LOWER (“Deggendorfer Straße 9”) “deggendorfer straße 9”

PROPER(Zeichenfolge) – Erster und einem Leerzeichen oder Sonderzeichen folgender Buchstabe wird groß geschrieben, alle weiteren klein.

 

BefehlErgebnis
PROPER(“sample:company”) “Sample:Company”
PROPER (“DEGGENDORFER STRAße 9”) “Deggendorfer Straße 9”

Immer dann, wenn mit manuellen Texteingaben weitergearbeitet wird, sollten die Texte mit den Funktionen UPPER, LOWER oder PROPER vorbereitet werden. Dadurch können diese anschließend eindeutig und ohne die genaue Schreibweise zu kennen verglichen werden. Ebenso ist es in ACL™ möglich, mehrere Funktionen ineinander zu verschachteln und somit mehrere Bereinigungsschritte zu kombinieren: 

INCLUDE Funktion Upper Lower Proper

Abbildung 2: Neues Feld c_Name_clean über die INCLUDE und UPPER Funktion erzeugen

4. KOMBINIEREN von Textfeldern

Ein weiterer Anhaltspunkt für die Erkennung von Duplikaten kann unter Umständen die Anschrift sein. Allerdings ist diese sinngemäß auf mehrere Felder aufgeteilt, weshalb diese vor dem Abgleich bzw. der Bereinigung vielleicht zusammengesetzt werden soll. Um in ACL™ Textfelder zu konkatenieren müssen diese lediglich über ein Pluszeichen verbunden werden. So kann in unserem Beispiel die Straße und der Ort ganz einfach zu einem Textfeld c_StraßeOrt kombiniert werden.

Kombination Textfelder

Abbildung 3: Zusammenfügen von Straße und Ort zu einem gemeinsamen Feld c_StraßeOrt

Falls Sie ein erfahrener ACL™ Anwender sind, werden Sie sich vielleicht an die Tatsache erinnern, dass ACL™ mit festen Feldlängen arbeitet. Das bedeutet, das Zusammenfügen von Textfeldern kann im ersten Schritt etwas ungewöhnlich erscheinen. Wenn in unserem Beispiel die Felder „Straße“ und „Ort“ jeweils eine Länge von 20 und die Inhalte „Merrit“ und als Ort „Connecticut“ haben, dann ist das Ergebnis “Merrit Connecticut”. ACL™ füllt jedes Feld bis zur vollen Länge mit Leerzeichen auf, das neue Feld wird also eine Länge von 20+20=40 haben. Wir könnten zumindest das ungewöhnliche Aussehen korrigieren, indem wir die ALLTRIM Funktion anwenden, die Leerzeichen am Anfang und Ende des Textes entfernt. Der Ausdruck DEFINE FIELD c_StraßeOrt COMPUTED ALLTRIM(Straße) + Ort würde zum Ergebnis “MerrittConnecticut” führen. Das mag immer noch nicht ganz zufriedenstellend sein, denn die Wörter sind nun nicht mehr voneinander getrennt, eben wegen der ALLTRIM Funktion. Final kann das korrigiert werden, in dem wir einfach – ebenfalls mit dem Pluszeichen – ein Leerzeichen innerhalb von Anführungszeichen dazwischenfügen: DEFINE FIELD c_StraßeOrt COMPUTED Alltrim(Straße) + “ ”+Ort. Nun sieht das Ergebnis schöner aus: “Merritt Connecticut”.

 

ExpressionResult
DEFINE FIELD c_StraßeOrt COMPUTED Straße + Ort Merrit         Connecticut
DEFINE FIELD c_StraßeOrt COMPUTED ALLTRIM(Straße) + Ort MerritConnecticut
DEFINE FIELD c_StraßeOrt COMPUTED ALLTRIM(Straße) + “ ” + Ort Merrit Connecticut

 

Anschließend kann das Feld wieder unter Verwendung der bereits bekannten Funktionen bereinigt und auf doppelte vorkommen abgeglichen werden. Mit etwas Fingerspitzengefühl und abgestimmten Ansätzen können die hier aufgeführten ACL™-Funktionen bei der Duplikatensuche und vielen weiteren Analysen von großer Hilfe sein.

Ich hoffe, der Einstieg in die ACL™ Textfeldfunktionen hat Ihnen gefallen.

Für Fragen oder Kommentare können Sie sich auch gerne unter info@dab-gmbh.de an uns wenden.

 


Kommentare (0)
Sei der erste, der diesen Blog-Beitrag kommentiert.
Blog Anmeldung

Sie sind nicht angemeldet. Bitte melden Sie sich an um diesen Blogbeitrag zu kommentieren.

anmelden