KNIME für Anfänger

KNIME für Anfänger

Viele Schritte hinsichtlich Datenbereinigung, -zusammenfassung und -anreicherung sind vielfacher Begleiter während der Vorbereitung, als auch Durchführung einer Crawlanalyse. Die zeitlichen Aufwände für Standardprozesse sollten jedoch minimiert werden, um zeitliche Ressourcen für den Drill-Down in die tieferliegende Datenanalyse und für die tatsächliche Optimierung freizuschaufeln. Automatisierung der immer wiederkehrenden Prozess-Schritte ist hier das Stichwort. Excel stößt hier sehr schnell an seine Grenzen – für das Erlernen einer Programmiersprache wie R reicht die Zeit häufig nicht aus. Hier bietet KNIME durch die visuelle Darstellung der Prozessschritte eine sehr praktikable Zwischenlösung. Die Workflows bleiben langfristig nachvollziehbar. Die ideale Ausgangsbasis also, für reproduzierbare Crawling-Analysen.

Excel ist ein Tool, das dank seiner vielen Einsatzmöglichkeiten durchaus eine Daseinsberechtigung hat. Wer jedoch umfassende Datenanalysen damit durchführen wollte, ist vermutlich das ein oder andere Mal an seine Frustrationsgrenze gestoßen. Spätestens, wenn man fünf Mal die Filterfunktion verwenden musste, um zur gewünschten Datenbasis zu gelangen und sich das Programm auch noch diverse Male aufgehängt hat, weil die Datenmenge zu groß ist, kann man sich nur allzu gut in den Protagonisten des Black Mirror-Films „Bandersnatch“ hineinversetzen. Dieser steht im Film nämlich aus technischer Frustration vor der Entscheidung: „Tee über die Tastatur schütten – ja oder nein?“. Ich plädiere ganz stark für Nein!, denn 1) doch nicht der gute Tee!; 2) es gibt noch eine andere Lösung für unsere Probleme – und zwar KNIME!

Die freie Software KNIME eignet sich hervorragend als Einstieg in die interaktive Datenanalyse, besonders für „Noch-Nicht-Programmierer“. Die Nutzeroberfläche ist für Einsteiger schnell nachvollziehbar. Die Datenmanipulation wird visuell anhand einzelner Funktionsknoten dargestellt und kann individuell beschriftet werden. Dadurch werden die einzelnen Prozessschritte greifbar und der komplette Analyseprozess dadurch langfristig nachvollziehbar und reproduzierbar. Informationen zu Funktionen, Workspace-Individualisierung und dem knotenbasierten Arbeiten in KNIME gibt es hier: https://docs.knime.com/latest/analytics_platform_workbench_guide/index.html. Eine weitere große Starthilfe ist das „Knoten Cheat Sheet“ von Patrick Lürwer, der sich die Mühe gemacht hat, die wichtigsten Knoten für SEO-Analysen zusammenzufassen.

Das Sheet findet Ihr hier zum Download und ist in folgende Anwendungsbereiche aufgeteilt:

Daten in KNIME laden

In KNIME können sämtliche Datenformate geladen werden. Das Allround-Talent in dieser Kategorie ist der File Reader. Nach der Dateiauswahl muss der Datenimport zusätzlich durch Konfigurationseinstellungen unterstützt werden. So können beispielsweise Spaltentrennzeichen, -überschriften oder Anführungszeichen, der Umgang mit mehrzeiligen Strings, Reihenlimitierungen oder auch die Spezifikation der Zeichencodierung der zu ladenden Tabelle definiert werden. Diese Einstellungen sind unter Advanced zu finden. Alternativ gibt es in KNIME die Möglichkeit, dedizierte Knoten, beispielsweise zum Einlesen von XML-Sitemaps (XML Sitemap Reader), Web Logs (Web Log Reader) oder Excel-Dateien (Excel Reader), zu verwenden oder mit manuell erstellten Datentabellen (Table Creator) zu arbeiten.

Anwendung: Wir beginnen unsere Crawl-Analyse nun mit dem Einlesen unseres Screaming Frog-Exports. Dafür ziehen wir den CSV-Export einfach per Drag-and-drop in unseren KNIME-Workflow. Standardmäßig wird der File Reader-Knoten ausgewählt und steht zur weiteren Konfiguration bereit. Definiert hierfür zunächst das Spaltentrennzeichen („;“) und setzt den Haken bei „Read Column Headers“. Die weiteren Einstellungen sind unter Advanced zu finden:

  • Quote support: I“ (esc:’\’) als quote character definieren
  • Limit Rows: Haken bei „Skip the first 1 line from the beginning of the file”
  • Character decoding: UTF-8
  • Short lines: Haken bei „allow short lines”

Klickt nun auf Ok. Anschließend sollte die Vorschau einen schön eingelesenen Crawl-Export anzeigen. Nach der Knotenausführung stehen die geladenen Daten in KNIME zur weiteren Bearbeitung zur Verfügung.

Spaltenmanipulation/Datentyp-Konvertierung in KNIME

Mittels Column Filter könnt Ihr die Spalten auswählen, die für den aktuellen Analyseprozess relevant sind. Alle anderen Spalten können zunächst entfernt werden. Verloren gehen sie dadurch nicht, da die Daten im Nachgang jederzeit wieder aus der Ausgabe des File-Readers gejoint werden können.

Anwendung: Da wir uns im ersten Schritt der Crawl-Analyse vor allem für Status Codes und Indexierbarkeit von URLs interessieren, löschen wir alle anderen Spalten aus der Datenbetrachtung (s. Abb. 1). Die Ausgabetabelle reduziert sich anschließend auf die ausgewählten Spalten.

KNIME: Beispiel einer Konfiguration nach Column Filter
Abbildung 1: Beispiel einer Konfiguration nach Column Filter

Spaltennamen oder Datentypen können leicht über Column Rename geändert werden.

Anwendung: Da die eingelesenen Werte der Status Codes initial integer codiert sind, verwenden wir Column Rename, um ihnen einen String-Wert zuzuweisen (s. Abb. 2).

KNIME: Beispiel einer Konfiguration nach Column Rename
Abbildung 2: Beispiel einer Konfiguration nach Column Rename

Reihen filtern

In der Regel interessieren uns bei der Crawl-Analyse nicht alle Inhalte einer Spalte, sondern nur bestimmte Merkmalsausprägungen. Hier kommen in KNIME Filter (Row Filter, Rule-based Row Filter) oder Splitter-Operationen (Row Splitter & Rule-based Row Splitter) zum Tragen, je nachdem, ob wir für die weitere Analyse eine reduzierte oder aufgeteilte Datenreduktion benötigen.

Row Filter: Die Filterkriterien können hier über Ausprägungsmuster, Wertebereiche oder fehlende Werte definiert werden.

Anwendung: Wir beginnen nun unsere Crawl-Analyse mit einem einfachen Check auf Indexierbarkeit (s. Abb. 3). Da die Ausgabetabelle in unserem Fall mehr als 1.000 nicht indexierbare Seiten enthält, lohnt sich hier eine genauere Betrachtung der Deindexierungsursachen (s. Abb. 4).

KNIME: Beispiel einer Konfiguration nach Row Filter
Abbildung 3: Beispiel einer Konfiguration nach Row Filter
KNIME: Gefilterte Ausgabetabelle
Abbildung 4: Gefilterte Ausgabetabelle

Für eine tiefergehende Analyse eignet sich der Rule-based Row Filter. Hier kann eine Kombination von Filteroperatoren angewendet werden, um die Datenmenge auf die gewünschten Beobachtungen zu reduzieren.

Anwendung: Wir möchten unsere Crawl-Daten in Bezug auf die Indexierbarkeit von URLs näher unter die Lupe nehmen. Dafür benutzen wir den Rule-Based Row Filter, um nach URLs zu filtern, die einen 200er-Status Code haben, und kanonisieren (s. Abb. 5). Hier würden sich natürlich noch problemlos weitere Bedingungsoperatoren ergänzen lassen.

KNIME: Beispiel einer Konfiguration nach Rule-Based Row Filter
Abbildung 5: Beispiel einer Konfiguration nach Rule-Based Row Filter

Row Splitter & Rule-based Row Splitter:

Gemäß der gleichen Funktionalität von Row Filter bzw. Rule-based Row Filter wird hier die vorhandene Datenmenge anhand mindestens einer Merkmalsausprägung in zwei getrennte Datensets aufgeteilt werden. Der Analyseprozess kann anschließend mit zwei voneinander losgelösten Output-Tabellen weitergeführt werden. So kann die Datenmenge getrennt voneinander analysiert werden, ohne beispielsweise mit einer Vielzahl an verschiedenen Tabellen oder Arbeitsblättern hantieren zu müssen. Diese Funktion ist daher ein großes Plus für eine gut abgetrennte, aber dennoch (auch langfristig) nachvollziehbare Datenanalyse.

Anwendung: Mittels des Row Splitters trennen wir unsere Datenaggregation anhand der Status Codes in zwei verschiedene Datenmengen auf: 200er sowie alle potenziell problematischen Status Codes – 4xxer, 3xxer und 5xxer (s. Abb. 6).

KNIME: Beispiel einer Konfiguration nach Row Splitter
Abbildung 6: Beispiel einer Konfiguration nach Row Splitter

Die obere Ausgabetabelle wird alle URLs im Crawl listen, welche die von uns definierte Bedingung (200er-Status Code) erfüllen. Die von uns nicht definierte Restmenge befindet sich in der unteren Ausgabetabelle (s. Abb. 7).

KNIME: Beispiel einer Ausgabetabelle nach Row Splitter
Abbildung 7: Beispiel einer Ausgabetabelle nach Row Splitter

Die Datenmenge kann hier direkt anhand einer Kombination aus Bedingungsoperatoren aufgeteilt werden. Der Knoten der Wahl ist in diesem Fall der Rule-based Row Splitter.

Anwendung: Wir möchten alle verfügbaren und indexierbaren URLs auf deren Content-Länge prüfen. Dafür lassen wir uns in KNIME schnell und unkompliziert alle indexierbaren URLs mit 200er-Status Code ausgeben, die eine Wortanzahl von 300 unterschreiten. Auch hier wird die Ausgabetabelle 1 alle URLs listen, die die Bedingung erfüllen (s. Abb. 8).

KNIME: Beispiel einer Konfiguration nach Rule-based Row Splitter
Abbildung 8: Beispiel einer Konfiguration nach Rule-based Row Splitter

Datenmanipulation in KNIME

Der Knoten String-Manipulation – auch liebevoll als „Schweizer Taschenmesser der Datenmanipulation“ bezeichnet – bietet eine Unmenge an Optionen, um die vorhandenen Daten für das eigene Analysevorhaben praktisch aufzubereiten. So lassen sich Strings ersetzen, auszählen, zusammenfassen, zuschneiden oder auch String-Abgleiche durchführen. Die manipulierten Daten können entweder in einer neuen Spalte ergänzt werden oder bestehende Spaltenwerte überschreiben.

Anwendung: Wir verwenden String-Manipulation, um unsere Datenausprägungen zu normalisieren. Unser Crawl enthält beispielsweise inkonsistente Angaben für das robots meta-tag index (INDEX, Index oder index). Durch die lowerCase Funktion schaffen wir hier eine konsistente Schreibweise (s. Abb. 9).

KNIME: Beispiel einer Konfiguration nach String Manipulation
Abbildung 9: Beispiel einer Konfiguration nach String Manipulation

Diese Normalisierung werden wir im späteren Verlauf der Crawl-Analyse sehr zu schätzen wissen. Zählt man beispielsweise mit dem GroupBy (siehe Punkt 6) die Ausprägung der Indexierbarkeit von URLs, erhält man ohne eine vorangegangene Normalisierung beispielsweise Folgendes:

  • index:      5
  • Index:      5
  • Noindex:   5

Durch die Normalisierung erhalten wir:

  • Index:      10
  • Noindex:  5

Die Funktion Cell Splitter teilt Zelleninhalte anhand eines benutzerdefinierten Wertes auf.

Anwendung: Der Cell Splitter hilft uns bei der Crawl-Analyse durch die Aufteilung der (no)index,(no)follow-Angabe im Robots-Meta-Tag. Dadurch können wir die Verwendung der Anweisungen gesondert analysieren (s. Abb. 10).

KNIME: Beispiel einer Konfiguration nach Cell Splitter
Abbildung 10: Beispiel einer Konfiguration nach Cell Splitter

Datenanreicherung mit KNIME

Rule Engine

Mit diesem Knoten können benutzerdefinierte Regeln festgelegt werden. Bei der Knotenausführung werden die Regeln mit jeder Zeile der Input-Tabelle abgeglichen. Jede Regel enthält einen Bedingungsteil (1.), der bei Ausführung auf TRUE/FALSE bewertet wird, und einen Ergebnisteil (2.). Trifft eine Bedingung in einer Zeile zu, wird der dafür definierte Ergebniswert in einer neuen Spalte ergänzt.

Anwendungsbeispiele: Da im Crawl Informationen zum Content häufig nicht einheitlich angegeben werden (z. B. text/html; charset=UTF-8, text/html; charset=utf-8, text/html; charset=iso-8859-1), können wir diese Angabe mittels Rule Engine zusammenfassen (s. Abb. 11).

KNIME: Beispiel einer Konfiguration nach Rule Engine
Abbildung 11: Beispiel einer Konfiguration nach Rule Engine

Joiner

Mit dem Joiner können Tabellen zusammengeführt werden. Zwei Eingabetabellen werden anhand eines maßgebenden Schlüsselkriteriums zu einer Ausgabetabelle kombiniert.

Da in der Regel nicht alle Ausprägungen eines Schlüsselkriteriums in beiden Tabellen vollkommen übereinstimmen, kann der gewünschte Umgang mit fehlenden Werten („?“) über die Auswahl einer von vier Join-Methoden definiert werden. Die Join-Methoden werden hier noch kurz vorgestellt. Wer mit diesen bereits vertraut ist, kann direkt zum Anwendungsfall übergehen.

Inner Join zeigt alle Datensätze, für die das Schlüsselkriterium (key) in beiden Tabellen vorkommt. Datensätze, die nur in einer der beiden Eingabetabellen vorhanden sind, werden demnach gelöscht. In Abb. 12 entfallen demnach die Ausprägungen x3 und y3.

Left Outer Join zeigt immer alle Datensätze der „linken“ Eingabetabelle X an, unabhängig davon, ob es in der „rechten“ Eingabetabelle Y eine Entsprechung gibt oder nicht. Im letzteren Fall wird in der Prädikatsspalte (value_y) ein fehlender Wert ergänzt (für den Right Outer Join gilt entsprechend die umgekehrte Logik).

Beim Full Outer Join enthält die Ausgabetabelle eine Kombination aller Werte der beiden Eingabetabellen. Bei fehlenden Matches wird die Ergebnistabelle beidseitig mit leeren Werten aufgefüllt.

KNIME: Übersicht über die Joiner-Methoden
Abbildung 12: Übersicht über die Join-Methoden

Anwendung: Der klassische Anwendungsfall für den Joiner ist natürlich die Zusammenfassung von Daten aus verschiedenen Datenquellen, wie beispielsweise die Anreicherung der Crawl-Daten um Performance-Daten aus der Google Search Console oder aus Google Analytics. Für dieses Beispiel joinen wir zwei Search Console-Exporte (Desktop & Mobile). Wir nutzen dafür einen Inner Join und spezifizieren die URLs (Spalte, Address und Seite) als Schlüsselkriterien (s. Abb. 13).

KNIME: Joiner, Konfigurationsübersicht von Beispiel 1
Abbildung 13: Joiner, Konfigurationsübersicht von Beispiel 1

Im zweiten Arbeitsblatt können wir die weiteren Spalten der Ausgabetabelle auswählen. Für den Abgleich der seitenbasierten Performance-Metriken eignen sich beispielsweise inhaltsbezogene Metriken wie Titles & Descriptions, um zu überprüfen, wie diese in der Suche performen (s. Abb. 14).

KNIME: Joiner, Konfigurationsübersicht von Beispiel 2

Abbildung 14: Joiner, Konfigurationsübersicht von Beispiel 2

Diesen Schritt wiederholen wir mit dem zweiten, mobilen, GSC-Export. Dadurch können wir beispielsweise im nächsten Schritt die Performance-Metriken in den Kanälen Desktop & Mobile vergleichen.

Dafür eignet sich in KNIME der Column Comparator, der reihenbasierte Vergleich von Zellwerten zweier definierter Spalten. Der Vergleich erfolgt anhand sechs möglicher Vergleichsoperatoren. Für das Ergebnis wird eine neue Spalte ergänzt, für die je nach Zutreffen/Nichterfüllung der Vergleichsbedingung benutzerspezifisch angepasste Ausgabewerte definiert werden können.

Anwendung: Im Column Comparator prüfen wir, für welche Seiten die mobile Anzahl an Impressionen die der Desktop-Variante übersteigt. Dafür müssen die zu vergleichenden Spalten sowie ein Vergleichsoperator ausgewählt werden. Ergebniswerte für TRUE/FALSE können benutzerdefiniert ergänzt werden. Das Ergebnis des Abgleichs wird in eine neue Spalte geschrieben (s. Abb. 15).

KNIME: Beispielkonfiguration und Ausgabetabelle nach Column Comparator
Abbildung 15: Beispielkonfiguration und Ausgabetabelle nach Column Comparator

Datenaggregation in KNIME

GroupBy

Mit diesem Knoten können Beobachtungen anhand einzigartiger (unique) Merkmalsausprägungen aggregiert werden. Die Ausgabetabelle enthält für jede einzigartige Merkmalsausprägung eine Zeile, die zweite Spalte enthält das Aggregationsergebnis gemäß der definierten Methode.

Anwendung: Für unsere Crawl-Analyse greifen wir nun wieder auf die nach Status Code-gesplittete Ausgabetabelle zurück. Hier interessiert uns die Anzahl aller URLS je Status Code. Daher wählen wir Status Code als Gruppierungsspalte aus (s. Abb. 16). Die Aggregationsmethode wird im zweiten Konfigurationsreiter (Manual Aggregation) gewählt. Hier wählen wir die Spalte Address und als Aggregationsmethode Count (s. Abb. 17).

KNIME: GroupBy-Beispiel: Konfigurationsübersicht 1
Abbildung 16: GroupBy-Beispiel: Konfigurationsübersicht 1
KNIME: GroupBy-Beispiel: Konfigurationsübersicht 2
Abbildung 17: GroupBy-Beispiel: Konfigurationsübersicht 2

Dadurch erhalten wir folgende Output-Tabelle (s. Abb. 18).

KNIME  GroupBy Ausgabetabelle

Mit diesem Knoten-Set kann bereits eine solide Crawl-Analyse mittels KNIME durchgeführt werden. Abhängig von der Beschaffenheit der Datensätze können natürlich auch noch weitere Transformationen notwendig sein. Daher wird in der Folge noch ein kurzer Ausblick auf die weiteren Transformationsmöglichkeiten in KNIME gegeben.

Datensatztransformation in KNIME

Falls notwendig kann in KNIME ebenfalls das Pivoting bzw. Unpivoting von Datentabellen vorgenommen werden (s. Abb. 19). Hierbei ist Unpivoting dieTransformation eines kurzen und weiten Datensatzes in einen langen und schmalen Datensatz; Pivoting wiederum benennt dieTransformation eines langen und schmalen Datensatzes in einen kurzen und weiten Datensatz.

KNIME: Beispiel für Unpivoting und Pivoting
Abbildung 19: Beispiel für Unpivoting und Pivoting

Die Funktion Concatenate hängt Datensätze untereinander. Duplikate Spalten werden vereinigt. Alle einzigartigen Spalten beider Datensätze bleiben erhalten und fehlende Beobachtungen können entweder von der Ausgabetabelle ausgeschlossen oder mit fehlenden Werten aufgefüllt werden.

Sorter ist das letzte Element im Bereich der Datensatztransformation. Dadurch ist die Sortierung des vorliegenden Datensatzes auf mehrstufiger Ebene möglich. Der Sorter ist vor allem bei sehr großen Tabellen hilfreich. Grund hierfür ist, dass man die Daten im Viewer auch direkt sortieren kann; die Geschwindigkeit ist hier bei großen Tabellen jedoch deutlich beeinträchtigt. Außerdem könnend die Daten so direkt aus KNIME in der gewünschten Sortierung exportiert werden. (Dadurch erspart man sich das Arbeiten in Excel, und das geliebte Heißgetränk bleibt außer Gefahr. 😉).

KNIME Export

Last but not least stehen für den Export der Analyseergebnisse dedizierte Exportknoten wie der CSV Writer oder Excel Writer zur Verfügung. Bei der Knotenkonfiguration kann ein Exportverzeichnis angegeben werden. Außerdem können bereits im Knoten Vorgaben zum Umgang mit potenziell auftretenden Dateiduplikaten gemacht werden. Hier könnt Ihr auswählen, ob bei einem neuen Export die bestehende Datei überschrieben, Daten angefügt oder der Export abgebrochen werden soll. Für jeden neuen Export des finalen Datensatzes muss der Exportknoten erneut ausgeführt werden.

Wie wir nun gesehen haben, haben wir mit dem Knoten Cheat Sheet bereits die wichtigsten Knoten zur Hand, um alltägliche Crawling- und Datenanalysen durchzuführen. Im nachstehenden Analyse-Workflow (s. Abb. 20) zeigen sich die Vorteile von KNIME gegenüber Excel nicht nur im Funktionsumfang der Knoten, sondern auch in der wunderbaren Visualisierbarkeit des Analyseprozesses. Durch Knotenbenennung und der visuellen Abgrenzung der Analyseprozesse mittels Annotationsfelder bleibt die Analyse auch nach Jahren noch nachvollziehbar.

Wie bei jedem Tool-Umstieg solltet Ihr zu Beginn etwas Zeit und vor allem Durchhaltevermögen einplanen, um einen Jo-Jo-Effekt, sprich einen Rückfall auf Excel, zu vermeiden. Das Cheat Sheet sollte Euch den Einstieg hierfür erleichtern. In diesem Sinne viel Spaß beim Ausprobieren von KNIME!

KNIME: Beispiel einer Workflow Crawlanalyse
Abbildung 20: Beispiel einer Workflow Crawlanalyse

KNIME für Anfänger
5 (100%) 7 vote[s]

The following two tabs change content below.
blank

Anna Danzer

Während meines Studiums der Wirtschaftswissenschaften mit den Schwerpunkten Marketing & Management an der Universität Passau faszinierte mich das Online-Marketing schon früh; zur gleichen Zeit sammelte ich erste Berufserfahrungen in einer ortsansässigen SEO-Agentur. Hier entdeckte ich schnell meine Leidenschaft für die organische Suchmaschinenoptimierung, da hier sowohl datengetriebenes Arbeiten als auch analytisches Denken von entscheidender Bedeutung sind. Die organische Suchmaschinenoptimierung ist in meinen Augen ein dynamisches Spannungsfeld zwischen Technik, Psychologie und Marketing. Des Weiteren steht und fällt eine langfristig hohe Sichtbarkeit von Webseiten mit der Verzahnung von Suchmaschinenkonformität und Nutzerorientierung. Als SEO-Consultant bei get:traction kann ich diesen Leitsatz optimal umsetzen.
blank

Neueste Artikel von Anna Danzer (alle ansehen)

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.