Reguläre Ausdrücke (Regex) in SQL

Reguläre Ausdrücke (Regular Expressions) sind eine besondere Art von Zeichenketten, die in der Programmierung verwendet werden, um bestimmte Muster in Texten zu suchen und zu manipulieren. Reguläre Ausdrücke bestehen aus einer Kombination aus normalen Zeichen und speziellen Zeichen, die als Metazeichen bezeichnet werden. Mit diesen Metazeichen kann man komplexe Muster definieren, wie z.B. eine E-Mail-Adresse oder eine Telefonnummer. Reguläre Ausdrücke können in vielen Programmiersprachen, einschließlich SQL, verwendet werden.

weiterlesen…

BigQuery-Berichte mit Google Analytics Rohdaten (UA + GA4)

Im folgenden habe ich einige einfache Analytics-Querys zusammengestellt. So richten Sie die BigQuery-Verknüpfung in Ihrer Google Analytics 4-Property(GA4) ein.

Universal Analytics

Google Analytics 4

Wie man die Vorhersagegenauigkeit seines Machine Learning-Modells verbessert

Es gehört zu den frustrierenden Dingen des Jobs, wenn man viele Stunden damit verbracht hat Daten zusammenzuführen, zu transformieren, zu bereinigen und zu labeln etc. und nach mehreren Trainingsstunden des ML Modells haben wir eine geringe Genauigkeit oder einen großen Fehlerbereich.

Je nach Kontext kann es passieren, dass wir ein Modell bei zu geringer Genauigkeit einfach nicht verwenden können.

Beispiel aus BQ: Abweichung: der durchschnittliche Abstand zwischen jedem Punkt und dem arithmetischen Mittel. Fehler: beinhaltet sowohl die Varianz (die Streuung der vorhergesagten Werte zueinander) als auch die Verzerrung (der Abstand des vorhergesagten Wertes von seinem wahren Wert). R-Quadrat: ist ein statistisches Maß dafür, wie dicht die Daten an der angepassten Regressionslinie liegen (1 wäre perfekt).

Wie können wir die Genauigkeit unseres maschinellen Lernmodells verbessern? Es gibt verschiedene Möglichkeiten, wie die Genauigkeit eines Modells verbessert werden kann:

Mehr Daten als Lern-Grundlage

Daten sind nur dann aussagekräftig, wenn man genügend davon hat. Jede Datenprobe liefert einen gewissen Input und eine Perspektive für die Gesamtgeschichte, die Ihre Daten erzählen wollen. Eine Methode, die Leistung Ihres Modells zu verbessern und seine Genauigkeit zu erhöhen, besteht darin, mehr Beispieldaten zu dem Trainingsdatensatz hinzuzufügen.

Die ML-Modelle von BigQuery verlangen grundsätzlich mindestens eine Stichprobe von 1.000.

Auf diese Weise erhalten Sie mehr Details zu Ihren Daten und können Ihr Modell einfacher fintunen, was zu einer besseren Genauigkeit führen kann. Denken Sie daran: Je mehr Informationen Sie Ihrem Modell zur Verfügung stellen, desto mehr wird es lernen und desto mehr Fälle wird es korrekt identifizieren können.

Man muss hier aber ehrlicherweise sagen, dass eine Vergrößerung der Beispieldaten auch zu einer Verschlechterung der Aussagekraft des Modells führen kann. Das heißt dann aber nicht, dass ich weniger Daten nehmen sollte, sondern, dass meine ursprüngliche Datenbasis erst recht zu kleine war! Eben weil das ja in dem Fall (leider) nochmal unterstreicht, dass das Modell noch Anpassungen bedarf.

Betrachten Sie das Problem mit anderen Augen

Vielleicht stellen Sie einfach die falschen Fragen oder versuchen, die falsche Geschichte zu verstehen. Die Betrachtung des Problems aus einer neuen Perspektive kann Ihrem Modell wertvolle Informationen hinzufügen und Ihnen helfen, verborgene Beziehungen zwischen den Variablen der Geschichte aufzudecken. Wenn Sie andere Fragen stellen, kann dies zu besseren Ergebnissen und schließlich zu einer höheren Genauigkeit führen.

Dieser Hinweis klingt sehr allgemein ist aber eine sehr häufige Lösung des Problems.

Fügen Sie Ihren Daten etwas Kontext hinzu.

Kontext ist in jeder Situation wichtig, und das gilt auch für das Training eines Modells für maschinelles Lernen. Manchmal kann ein Punkt der Daten keine Geschichte erzählen, so dass Sie mehr Kontext hinzufügen müssen, damit ein Algorithmus, den wir auf diese Daten anwenden wollen, eine gute Leistung erbringt.

Mehr Kontext kann immer zu einem besseren Verständnis des Problems und schließlich zu einer besseren Leistung des Modells führen. Stellen Sie sich vor, ich erzähle Ihnen, dass ich ein Auto verkaufe, einen Audi. Das allein gibt Ihnen nicht viel Aufschluss über das Auto. Wenn ich aber die Farbe, das Modell und die gefahrene Strecke hinzufüge, können Sie sich ein besseres Bild von dem Auto und seinem möglichen Wert machen.

In einem Datensatz können das zum Beispiel weitere Variablen sein, die Sie dem Lernprozess hinzufügen. Nehmen wir mein Beispiel und Sie wollen anhand von vergangen Autoverkäufen errechnen, wie wertvoll ein Auto ist. Dann können neben der Marke mit Sicherheit noch, die gefahrenen Kilometer oder eben das Zulassungsjahr spannend sein.

Trainieren Sie Ihr Modell mit Kreuzvalidierung

Beim maschinellen Lernen ist die Kreuzvalidierung eine Technik, die zur Verbesserung des Modelltrainings verwendet wird, indem die gesamte Trainingsmenge in kleinere Teile aufgeteilt wird und dann jeder Teil zum Trainieren des Modells verwendet wird.

Diagramm der k-fachen Kreuzvalidierung.

Mit diesem Ansatz können wir den Trainingsprozess des Algorithmus verbessern, indem wir ihn mit den verschiedenen Chunks trainieren und den Durchschnitt über das Ergebnis bilden. Die Kreuzvalidierung wird verwendet, um die Leistung des Modells zu optimieren. Dieser Ansatz ist sehr beliebt, weil er so einfach und leicht zu implementieren ist.

Experimentieren Sie mit unterschiedlichen Algorithmen

Was ist, wenn Sie alle bisher besprochenen Ansätze ausprobiert haben und Ihr Modell immer noch zu einer niedrigen oder nur durchschnittlichen Genauigkeit führt?

Manchmal wählen wir einen Algorithmus für die Implementierung, der nicht wirklich auf unsere Daten anwendbar ist, so dass wir nicht die erwarteten Ergebnisse erhalten. Ändern Sie den Algorithmus, den Sie zur Implementierung Ihrer Lösung verwenden. Das Ausprobieren verschiedener Algorithmen führt dazu, dass Sie mehr Details über Ihre Daten und die Geschichte, die sie zu erzählen versuchen, herausfinden.

Sinnvoller Umgang mit fehlenden Werten und Ausreißern

Das unerwünschte Vorhandensein von fehlenden Werten und Ausreißern in den Trainingsdaten verringert oft die Genauigkeit eines Modells oder führt zu einem verzerrten Modell. Dies führt zu ungenauen Vorhersagen. Der Grund dafür ist, dass wir das Verhalten und die Beziehung zu anderen Variablen nicht richtig analysieren. Es ist also wichtig, sich mit fehlenden Werten und Ausreißern auseinanderzusetzen.

Fehlende Werte: Bei kontinuierlichen Variablen können Sie die fehlenden Werte durch Mittelwert, Median und Modus ersetzen. Bei kategorialen Variablen können Sie die Variablen als eine separate Klasse behandeln. Sie können auch ein Modell erstellen, um die fehlenden Werte vorherzusagen

Ausreißer: Sie können die Beobachtungen löschen, eine Transformation durchführen oder auch Ausreißerwerte separat behandeln. 

Schlusswort

Die Verbesserung der Genauigkeit eines Modells für maschinelles Lernen ist eine Fähigkeit, die nur durch Übung verbessert werden kann. Je mehr Projekte Sie erstellen, desto besser wird Ihr Gespür dafür, welchen Ansatz Sie beim nächsten Mal verwenden sollten, um die Genauigkeit Ihres Modells zu verbessern.

ETL vs. ELT: was ist der Unterschied?

ETL (Extract, Transform, Load) und ELT (Extract, Load, Transform) sind beides Ansätze zur Bewegung und Verarbeitung von Daten zwischen Datenquellen und Datenlagern (z.B. Data Warehouses). Beide haben das gleiche Ziel: Daten aus verschiedenen Quellen zu extrahieren, sie für Analysezwecke zu transformieren und in ein Zielsystem zu laden. Der Hauptunterschied liegt in der Reihenfolge und dem Ort, an dem die Transformation stattfindet.

  1. ETL (Extract, Transform, Load):
    • Extract: Daten werden aus den Quellsystemen extrahiert.
    • Transform: Die extrahierten Daten werden anschließend außerhalb des finalen Datenlagers (oft in einem speziellen Transformationsbereich oder in der ETL-Tool-Umgebung) transformiert. Dies umfasst Aufgaben wie Reinigung, Anreicherung, Aggregation und andere, um die Daten für Analysen bereitzustellen.
    • Load: Die transformierten Daten werden dann in das Data Warehouse oder ein anderes Zielsystem geladen.
    Traditionell wurde der ETL-Prozess genutzt, weil ältere Data Warehousing-Lösungen oft nicht die notwendige Rechenleistung hatten, um umfangreiche Transformationen effizient durchzuführen.
  2. ELT (Extract, Load, Transform):
    • Extract: Daten werden aus den Quellsystemen extrahiert.Load: Die extrahierten Daten werden direkt in das Data Warehouse geladen, ohne vorherige Transformation.Transform: Nachdem die Daten geladen wurden, finden die Transformationen innerhalb des Data Warehouses selbst statt.
    Mit der zunehmenden Popularität und Leistungsfähigkeit von Cloud-basierten Datenlagersystemen wie Snowflake, Google BigQuery oder Amazon Redshift wird der ELT-Ansatz immer beliebter. Diese Systeme bieten häufig eine erhebliche Rechenleistung, die eine effiziente Transformation der Daten direkt im Data Warehouse ermöglicht.

Inhalt

ETL- Prozess – Überblick

Extrahieren, Transformieren und Laden (ETL) ist eine Methode, um Daten zu integrieren. Dabei werden die Rohdaten von Quellen extrahiert, auf einem zweiten Server verarbeitet und anschließend in eine Zieldatenbank geladen.

ETL wird angewendet, wenn Daten so bearbeitet werden müssen, dass sie mit dem Datenregime der Zieldatenbank übereinstimmen. Diese Methode wird vor allem bei der Verwendung von eigenen Servern mit begrenztem Speicher und Verarbeitungsleistung verwendet.

Online Analytical Processing (OLAP) Data Warehouses akzeptieren nur relationale SQL-basierte Datenstrukturen.

Ein ETL-Protokoll gewährleistet bei diesem Typ von Data Warehouse die Einhaltung der Standards, indem es die ausgelesenen Daten an einen Verarbeitungsserver weiterleitet und danach die nicht konformen Daten in SQL-orientierte Daten umwandelt.

Die übertragenen Daten werden erst in das Data Warehouse eingefügt, nachdem die Konvertierung erfolgreich abgeschlossen wurde.

ELT-Prozess – Überblick

Im Unterschied zu ETL-Prozessen werden beim Extrahieren, Laden und Transformieren (ELT) vor dem Ladevorgang keine Datenumwandlungen benötigt.

ELT lädt die Rohdaten direkt in ein Ziel-Data-Warehouse, anstatt sie zur Transformation auf einen Verarbeitungsserver zu verschieben.

Mit ELT werden Datenbereinigung, -anreicherung und -umwandlung innerhalb des Data Warehouse selbst durchgeführt. Die Daten werden im Data Warehouse für unbestimmte Zeit gespeichert, um sie mehrfach zu konvertieren.

ELT ist eine neue Methode, die durch skalierbare Cloud-basierte Data Warehouses ermöglicht wird.

Cloud-Data-Warehouses wie Snowflake, Amazon Redshift, Google BigQuery und Microsoft Azure haben digitale Infrastruktur für Speicher und Verarbeitungsleistung, um Rohdaten-Repositories und In-App-Transformationen zu vereinfachen.

ELT ist nicht allgemein verbreitet, aber immer beliebter.

ETL vs. ELT: Wie unterscheidet sich der ETL-Prozess vom ELT-Prozess?

ETL und ELT unterscheiden sich vor allem in zwei Punkten. Ein Unterschied besteht darin, wo die Daten umgewandelt werden, und der andere darin, wie Data Warehouses die Daten aufbewahren.

  • ETL wandelt Daten auf einem separaten Verarbeitungsserver um, während ELT Daten innerhalb des Data Warehouse selbst umwandelt.
  • ETL überträgt keine Rohdaten in das Data Warehouse, während ELT Rohdaten direkt an das Data Warehouse sendet.

Bei ETL wird der Prozess der Datenaufnahme dadurch verlangsamt, dass die Daten vor dem Ladevorgang auf einem separaten Server transformiert werden.

ELT hingegen ermöglicht eine schnellere Datenaufnahme, da die Daten nicht zur Umstrukturierung an einen zweiten Server geschickt werden. Mit ELT können die Daten sogar gleichzeitig geladen und umgewandelt werden.

Die Rohdatenaufbewahrung von ELT schafft ein umfangreiches historisches Archiv für die Erstellung von Business Intelligence. Wenn sich Ziele und Strategien ändern, können BI-Teams die Rohdaten erneut abrufen, um neue Transformationen unter Verwendung umfassender Datensätze zu entwickeln. ETL hingegen erzeugt keine vollständigen Rohdatensätze, die endlos abgefragt werden können.

Diese Faktoren machen ELT flexibler, effizienter und skalierbarer, insbesondere für die Aufnahme großer Datenmengen, die Verarbeitung von Datensätzen, die sowohl strukturierte als auch unstrukturierte Daten enthalten, und die Entwicklung vielfältiger Business Intelligence.

Auf der anderen Seite ist ETL ideal für rechenintensive Transformationen, Systeme mit Legacy-Architekturen oder Daten-Workflows, die vor der Eingabe in ein Zielsystem manipuliert werden müssen, wie z. B. die Löschung von personenbezogenen Daten.

Warum wird ETL häufig in traditionellen Data Warehouse-Umgebungen verwendet, während ELT in Big Data-Umgebungen beliebter ist?

In traditionellen Datenlager-Umgebungen wird ETL oft genutzt, weil die Transformationen in diesen Umgebungen häufig anspruchsvoll und rechenintensiv sind. Normalerweise finden diese Transformationen an einer begrenzten Anzahl von Daten statt, die auf einem zentralen Speicherplatz geladen werden. In Big Data-Umgebungen hingegen, wo die Datenmengen enorm sind und die Verarbeitungsgeschwindigkeit von essenzieller Bedeutung ist, wird ELT präferiert. Die Informationen werden zuerst in den Speicher geladen und dann in Echtzeit oder fast Echtzeit transformiert, um die Verarbeitungsgeschwindigkeit zu erhöhen.

Wie werden Fehler in ETL- und ELT-Prozessen behandelt?

Fehlerbehandlung ist ein wichtiger Bestandteil von ETL- und ELT-Prozessen. In ETL-Prozessen werden Fehler in der Regel während der Extraktion, Transformation und Ladephase behandelt.

  • Fehler bei der Extraktion können durch Probleme mit der Verbindung zu den Datenquellen oder durch ungültige Abfrageparameter verursacht werden. Sie können durch Überprüfungen der Verbindungen und der Abfrageparameter sowie durch die Verwendung von Fehlerprotokollen behoben werden.
  • Fehler bei der Transformation können durch ungültige Daten, fehlende Felder oder inkonsistente Datenstrukturen verursacht werden. Sie können durch die Verwendung von Fehlerprotokollen, die Überprüfung von Daten vor der Transformation und die Verwendung von Regeln und Constraints behoben werden.
  • Fehler beim Laden können durch Probleme mit der Datenbankstruktur, dem Zielverzeichnis oder dem Datenformat verursacht werden. Sie können durch die Verwendung von Fehlerprotokollen, die Überprüfung des Zielverzeichnisses und die Verwendung von Regeln und Constraints behoben werden.

In ELT-Prozessen werden Fehler in der Regel während der Ladephase und der Transformation behandelt.

  • Fehler beim Laden können durch Probleme mit der Datenbankstruktur, dem Zielverzeichnis oder dem Datenformat verursacht werden. Sie können durch die Verwendung von Fehlerprotokollen, die Überprüfung des Zielverzeichnisses und die Verwendung von Regeln und Constraints behoben werden.
  • Fehler bei der Transformation können durch ungültige Daten, fehlende Felder oder inkonsistente Datenstrukturen verursacht werden. Sie können durch die Verwendung von Fehlerprotokollen, die Überprüfung von Daten nach dem Laden und die Verwendung von Regeln und Constraints behoben werden.

In beiden Prozessen, ETL und ELT, ist es wichtig, Regeln und Constraints zu definieren, um Fehler frühzeitig zu erkennen und zu beheben, sowie Fehlerprotokolle zu erstellen, um Fehler nachverfolgen und beheben zu können.

Wie wird die Leistung von ETL- und ELT-Prozessen gemessen?

Die Leistung von ETL- und ELT-Prozessen kann anhand verschiedener Metriken gemessen werden. Einige häufig verwendete Metriken sind:

  • Durchlaufzeit: Die Zeit, die von der Extraktion bis zur Ladeoperation benötigt wird, wird als Durchlaufzeit bezeichnet. Sie gibt Auskunft darüber, wie lange der Prozess insgesamt dauert und kann verwendet werden, um die Geschwindigkeit des Prozesses zu messen.
  • Datenmenge: Die Menge an Daten, die in einem bestimmten Zeitraum extrahiert, transformiert und geladen werden, kann verwendet werden, um die Kapazität des Prozesses zu messen.
  • Fehlerrate: Die Anzahl der Fehler im Verhältnis zur Gesamtzahl der Daten, die verarbeitet werden, kann verwendet werden, um die Zuverlässigkeit des Prozesses zu messen.
  • Verfügbarkeit: Die Zeit, die der Prozess in Betrieb ist und verfügbar ist, kann verwendet werden, um die Verfügbarkeit des Prozesses zu messen.
  • Latenz: Die Zeit, die benötigt wird, um eine Anfrage zu bearbeiten und eine Antwort zurückzugeben, kann verwendet werden, um die Reaktionszeit des Prozesses zu messen.

Die Wahl der richtigen Metrik hängt von den Anforderungen und Zielen des Projekts ab. Es ist wichtig, sowohl quantitative als auch qualitative Metriken zu verwenden, um ein umfassenderes Verständnis der Leistung des Prozesses zu erhalten.

Welche Tools und Technologien werden häufig in ETL- und ELT-Prozessen verwendet?

Es gibt eine Vielzahl von Tools und Technologien, die in ETL- und ELT-Prozessen verwendet werden können. Einige häufig verwendete Tools und Technologien sind:

  • ETL-Tools: Tools wie Informatica PowerCenter, Talend, IBM DataStage und SAP Data Services werden häufig in traditionellen ETL-Prozessen verwendet, um die Extraktion, Transformation und Ladung von Daten zu automatisieren.
  • ELT-Tools: Tools wie Apache Nifi, Apache Kafka und Apache Storm werden häufig in Big Data-Umgebungen verwendet, um die Extraktion, Ladung und Transformation von Daten in Echtzeit oder nahezu Echtzeit zu ermöglichen.
  • Datenbank-Management-Systeme: Data Warehouses wie Oracle, Teradata und Amazon Redshift werden häufig als Ziel für geladene Daten verwendet.
  • Cloud-basierte Tools: Cloud-basierte Tools wie Amazon Glue, Google Cloud Dataflow und Microsoft Azure Data Factory werden häufig in Cloud-Umgebungen verwendet, um die Extraktion, Transformation und Ladung von Daten zu automatisieren.
  • Programmiersprachen: Programmiersprachen wie Python, Java, und SQL werden oft verwendet, um komplexe Transformationen, Validierungen und Logik in ETL/ELT Prozessen zu implementieren.

Es ist wichtig zu beachten, dass es keine “eine Größe passt für alle” Lösungen gibt und die Wahl des Tools oder Technologie von den Anforderungen und Zielen des Projekts abhängig sind.

Welche Best Practices sollten bei der Implementierung von ETL- und ELT-Prozessen beachtet werden?

Bei der Implementierung von ETL- und ELT-Prozessen sollten folgende Best Practices beachtet werden:

  1. Verwenden Sie eine modulare Architektur, um Wartbarkeit und Skalierbarkeit zu erleichtern.
  2. Verwenden Sie eine automatisierte Teststrategie, um die Integrität der Daten zu gewährleisten.
  3. Verwenden Sie eine Versionierung für Ihre ETL-Prozesse, um Änderungen nachverfolgen zu können.
  4. Verwenden Sie eine robuste Fehlerbehandlung, um Prozessfehler schnell identifizieren und beheben zu können.
  5. Verwenden Sie eine Überwachungslösung, um die Leistung und die Ausführung Ihrer Prozesse zu überwachen.
  6. Verwenden Sie standardisierte Metadaten, um die Datenqualität und die Verwaltbarkeit zu verbessern.
  7. Verwenden Sie ELT anstelle von ETL, wenn es die Anforderungen erfüllt, um die Leistung zu verbessern und die Kosten zu reduzieren.
  8. Verwenden Sie DWH und BI-Tools, um die Datenanalyse zu vereinfachen und die Business Intelligence zu verbessern.

Fazit

Cloud Data Warehouses haben eine neue Dimension der Datenintegration eröffnet, aber die Entscheidung zwischen ETL und ELT hängt von den Bedürfnissen eines Teams ab.

Obwohl ELT Vorteile bietet, werden einige Teams bei ETL bleiben, weil die Methode für ihre spezielle Bereitstellung sinnvoll ist, ob mit oder ohne Legacy-Infrastruktur.