Big and Small Data Tester: Trends, Theorie, meine Geschichte

Hallo allerseits, mein Name ist Alexander und ich bin ein Datenqualitätsingenieur, der Daten auf ihre Qualität überprüft. In diesem Artikel wird erläutert, wie ich dazu gekommen bin und warum sich diese Testrichtung im Jahr 2020 als Höhepunkt einer Welle herausstellte.



Welttrend


Die heutige Welt befindet sich in einer weiteren technologischen Revolution. Einer der Aspekte ist die Verwendung verschiedener Daten durch verschiedene Unternehmen, um ihr eigenes Verkaufsschwungrad, ihre Gewinne und ihre PR zu fördern. Es scheint, dass das Vorhandensein guter (Qualitäts-) Daten sowie geschickter Köpfe, die damit Geld verdienen können (korrekt verarbeiten, visualisieren, maschinelle Lernmodelle erstellen usw.), heute für viele zum Schlüssel zum Erfolg geworden sind. Wenn vor 15 bis 20 Jahren große Unternehmen mit der Anhäufung von Daten und ihrer Monetarisierung dicht gearbeitet haben, sind es heute fast alle gesunden Menschen.

In dieser Hinsicht waren vor einigen Jahren alle Portale für die Stellensuche auf der ganzen Welt mit offenen Stellen von Data Scientists überfüllt, da jeder sicher war, dass man mit einem solchen Spezialisten für Mitarbeiter ein Supermodel für maschinelles Lernen aufbauen, die Zukunft vorhersagen und ein „Quantum“ erstellen kann Sprung für die Firma. Im Laufe der Zeit wurde den Menschen klar, dass dieser Ansatz fast nie funktioniert, da weit entfernt von allen Daten, die in die Hände solcher Spezialisten fallen, diese für Trainingsmodelle geeignet sind.

Und die Anfragen von Data Scientists begannen: "Kaufen wir mehr Daten von diesen und von denen. ...", "Wir haben nicht genug Daten ...", "Wir brauchen mehr Daten und vorzugsweise von hoher Qualität ...". Basierend auf diesen Anfragen begannen sich zahlreiche Interaktionen zwischen Unternehmen, die einen bestimmten Datensatz besitzen, auszurichten. Dies erforderte natürlich die technische Organisation dieses Prozesses - um eine Verbindung zur Datenquelle herzustellen, sie herunterzuladen, zu überprüfen, ob sie vollständig geladen sind usw. Die Anzahl solcher Prozesse begann zu wachsen, und heute haben wir einen enormen Bedarf an einer anderen Art von Spezialisten erhalten - Daten Qualitätsingenieure - diejenigen, die den Datenfluss im System (Datenpipelines), die Qualität der Daten am Ein- und Ausgang überwachen, würden Schlussfolgerungen über ihre Angemessenheit, Integrität und andere Merkmale ziehen.

Der Trend für Data Quality-Ingenieure kam aus den USA, wo inmitten einer rasenden Ära des Kapitalismus niemand bereit ist, den Kampf um Daten zu verlieren. Im Folgenden habe ich Screenshots der beiden beliebtesten Websites für die Stellensuche in den USA vorgestellt: www.monster.com und www.dice.com - die Daten zum 17. März 2020 nach Anzahl der eingegangenen Stellenangebote nach Schlüsselwörtern anzeigen: Datenqualität und Datenwissenschaftler.

www.monster.com
Data Scientists - 21.416 JobsDatenqualität - 41.104 Jobs

www.dice.com
Data Scientists - 404 ArbeitsplätzeDatenqualität - 2020 Arbeitsplätze

Offensichtlich konkurrieren diese Berufe in keiner Weise miteinander. Mit Screenshots wollte ich nur die aktuelle Situation auf dem Arbeitsmarkt anhand von Anfragen an Data Quality-Ingenieure veranschaulichen, die jetzt viel mehr als Data Scientists benötigen.

Im Juni 2019 hob EPAM als Reaktion auf die Anforderungen des modernen IT-Marktes die Datenqualität als eigenständige Praxis hervor. Während ihrer täglichen Arbeit verwalten Data Quality-Ingenieure Daten, überprüfen ihr Verhalten unter neuen Bedingungen und Systemen und kontrollieren die Relevanz der Daten, ihre Angemessenheit und Relevanz. Bei alledem widmen die Ingenieure im praktischen Sinne der Datenqualität wirklich ein wenig Zeit den klassischen Funktionstests, ABER es hängt sehr vom Projekt ab (ich werde unten ein Beispiel geben).

Die Aufgaben des Data Quality Engineers beschränken sich nicht nur auf routinemäßige manuelle / automatische Überprüfungen auf „Nullen, Zählwerte und Summen“ in den Datenbanktabellen, sondern erfordern ein tiefes Verständnis der Geschäftsanforderungen des Kunden und dementsprechend die Fähigkeit, vorhandene Daten in nützliche Geschäftsinformationen umzuwandeln.

Theorie der Datenqualität




Um sich die Rolle eines solchen Ingenieurs am besten vorstellen zu können, wollen wir herausfinden, was Datenqualität theoretisch ist.

Die Datenqualität ist eine der Phasen des Datenmanagements (die ganze Welt, die wir Ihnen überlassen, um unabhängig zu studieren) und ist für die Analyse der Daten nach folgenden Kriterien verantwortlich:


Ich denke, es lohnt sich nicht, jeden Punkt zu entschlüsseln (theoretisch werden sie als "Datendimensionen" bezeichnet), sie sind im Bild recht gut beschrieben. Der Testprozess selbst impliziert jedoch nicht das strikte Kopieren dieser Zeichen in Testfälle und deren Überprüfung. Bei der Datenqualität ist es wie bei jeder anderen Art von Tests zunächst erforderlich, von den Anforderungen an die Datenqualität auszugehen, die mit den Projektteilnehmern vereinbart wurden, die Geschäftsentscheidungen treffen.



Abhängig vom Datenqualitätsprojekt kann ein Ingenieur verschiedene Funktionen ausführen: von einem normalen automatisierten Tester mit einer oberflächlichen Bewertung der Datenqualität bis zu der Person, die ihre Tiefenprofilierung gemäß den oben genannten Kriterien durchführt.



Eine sehr detaillierte Beschreibung des Datenmanagements, der Datenqualität und der damit verbundenen Prozesse ist in einem Buch mit dem Titel „DAMA-DMBOK: Wissensbestand des Datenmanagements: 2. Auflage“ ausführlich beschrieben . Ich empfehle dieses Buch als Einführung in dieses Thema (einen Link dazu finden Sie am Ende des Artikels).

Meine Geschichte


In der IT-Branche bin ich vom Junior Product Tester zum Lead Data Quality Engineer bei EPAM gewechselt. Nach ungefähr zwei Jahren als Tester war ich fest davon überzeugt, dass ich absolut alle Arten von Tests durchgeführt habe: Regression, Funktion, Stress, Stabilität, Sicherheit, Benutzeroberfläche usw. - und habe eine große Anzahl von Testwerkzeugen ausprobiert, nachdem ich gearbeitet hatte gleichzeitig in drei Programmiersprachen: Java, Scala, Python.



Rückblickend verstehe ich, warum sich meine beruflichen Fähigkeiten als so unterschiedlich herausstellten - ich nahm an Projekten teil, die mit der Arbeit mit großen und kleinen Daten verbunden waren. Dies führte mich in die Welt einer Vielzahl von Instrumenten und Wachstumschancen.



Um die Vielfalt der Tools und Möglichkeiten zum Erwerb neuer Kenntnisse und Fähigkeiten zu schätzen, sehen Sie sich einfach das folgende Bild an, das die beliebtesten in der Welt von „Data & AI“ zeigt.


Diese Art von Illustration wird jährlich von einem der bekannten Risikokapitalgeber Matt Turck zusammengestellt, der aus der Softwareentwicklung stammt. Hier ist ein Link zu seiner Blog- und Risikokapitalfirma, in der er als Partner arbeitet.

Besonders schnell bin ich beruflich gewachsen, als ich der einzige Tester im Projekt war, oder zumindest zu Beginn des Projekts. In einem solchen Moment müssen Sie für den gesamten Testprozess verantwortlich sein, und Sie haben nicht die Möglichkeit, zurückzutreten, sondern nur vorwärts. Anfangs war es eine Vogelscheuche, aber jetzt liegen mir alle Vorteile eines solchen Tests auf der Hand:

  • Sie beginnen mehr denn je mit dem gesamten Team zu kommunizieren, da es keinen Proxy für die Kommunikation gibt: weder einen Testmanager noch andere Tester.
  • , , .
  • « , », , , .
  • — , , .

Da das Projekt zu 100% wuchs, wurde ich ein Mentor für Tester, die wieder zu ihm kamen, sie schulten und das erlernte Wissen weitergaben. Gleichzeitig erhielt ich je nach Projekt nicht immer die besten Experten für Autotests vom Management, und es bestand die Notwendigkeit, sie entweder in der Automatisierung zu schulen (für diejenigen, die dies wünschen) oder Tools für ihre Verwendung in alltäglichen Aktivitäten zu erstellen (Tools zur Datengenerierung und Laden in das System) , ein Werkzeug zur Durchführung von Lasttests / Stabilitätstests "schnell" usw.).

Spezifisches Projektbeispiel


Leider kann ich aufgrund von Geheimhaltungsverpflichtungen nicht im Detail über die Projekte sprechen, an denen ich gearbeitet habe. Ich werde jedoch Beispiele für typische Data Quality Engineer-Aufgaben in einem der Projekte geben.

Das Wesentliche des Projekts ist die Implementierung einer Plattform zur Vorbereitung von Daten für das Training darauf basierender Modelle für maschinelles Lernen. Kunde war ein großes Pharmaunternehmen aus den USA. Technisch gesehen war es ein Kubernetes- Cluster , der zu AWS EC2- Instanzen aufstieg , mit mehreren Microservices und dem EPAM- Legion- Projekt, das Open Source zugrunde lag und an die Bedürfnisse eines bestimmten Kunden angepasst war (jetzt wird das Projekt als Odahu wiedergeboren ). ETL-Prozesse wurden mit Apache Airflow organisiert und Daten von verschobenSalesForce- Kundensysteme bei AWS S3 Buckets. Als Nächstes wurde auf der Plattform ein Docker-Image eines maschinellen Lernmodells bereitgestellt, das auf den neuesten Daten trainiert wurde und auf der Grundlage der REST-API-Schnittstelle Vorhersagen erstellte, die für das Unternehmen von Interesse waren und bestimmte Probleme lösten.

Optisch sah alles ungefähr so ​​aus:


Bei diesem Projekt wurden zahlreiche Funktionstests durchgeführt. Angesichts der Geschwindigkeit der Entwicklung von Funktionen und der Notwendigkeit, das Tempo des Release-Zyklus (zweiwöchige Sprints) beizubehalten, musste sofort über die Automatisierung des Testens der kritischsten Systemknoten nachgedacht werden. Der größte Teil der Plattform selbst mit Kubernetes wurde durch Selbsttests abgedeckt, die auf dem Robot Framework implementiert wurden .+ Python, aber sie mussten auch gepflegt und erweitert werden. Darüber hinaus wurde zur Vereinfachung des Kunden eine grafische Benutzeroberfläche erstellt, mit der in einen Cluster eingebettete Modelle für maschinelles Lernen verwaltet und festgelegt werden können, wo und wo Daten für das Modelltraining übertragen werden sollen. Diese umfangreiche Erweiterung führte zur Erweiterung automatisierter Funktionsprüfungen, die hauptsächlich durch REST-API-Aufrufe und eine kleine Anzahl von End-2-End-UI-Tests durchgeführt wurden. Ungefähr am Äquator all dieser Bewegungen kam ein manueller Tester hinzu, der hervorragende Arbeit geleistet hat, um das Testen von Produktversionen zu akzeptieren und mit dem Kunden über die Annahme der nächsten Version zu kommunizieren. Aufgrund des Aufkommens eines neuen Spezialisten konnten wir außerdem unsere Arbeit dokumentieren und einige sehr wichtige manuelle Überprüfungen hinzufügen.die waren schwer sofort zu automatisieren.

Nachdem wir die Stabilität der Plattform und ein darüber liegendes GUI-Add-On erreicht hatten, begannen wir schließlich mit dem Bau von ETL-Pipelines mit Apache Airflow-DAGs. Die automatisierte Datenqualitätskontrolle wurde durchgeführt, indem spezielle Airflow-DAGs geschrieben wurden, die die Daten gemäß den Ergebnissen des ETL-Prozesses überprüften. Im Rahmen dieses Projekts hatten wir Glück und der Kunde gab uns Zugriff auf anonymisierte Datensätze, an denen wir getestet haben. Wir haben die Daten zeilenweise auf Übereinstimmung mit den Typen, das Vorhandensein fehlerhafter Daten, die Gesamtzahl der Datensätze vorher und nachher überprüft, die vom ETL-Prozess für die Aggregation durchgeführten Transformationen verglichen, die Namen der Spalten geändert und andere Dinge. Darüber hinaus wurden diese Überprüfungen auf verschiedene Datenquellen skaliert, beispielsweise zusätzlich zu SalesForce, auch unter MySQL.

Die Überprüfung der endgültigen Datenqualität wurde bereits auf der S3-Ebene durchgeführt, wo sie gespeichert und für das Lernen von Modellen des maschinellen Lernens einsatzbereit waren. Um Daten aus der endgültigen CSV-Datei zu erhalten, die auf dem S3-Bucket liegt, und diese zu validieren, wurde Code mit dem boto3-Client geschrieben .

Außerdem bestand seitens des Kunden die Anforderung, einen Teil der Daten in einem S3-Bucket und einen Teil in einem anderen zu speichern. Zu diesem Zweck mussten auch zusätzliche Überprüfungen durchgeführt werden, um die Zuverlässigkeit einer solchen Sortierung zu überprüfen.

Allgemeine Erfahrung bei anderen Projekten


Ein Beispiel für die allgemeinste Liste der Datenqualitätsaktivitäten eines Ingenieurs:

  • Bereiten Sie Testdaten (gültig / ungültig / groß / klein) mit einem automatisierten Tool vor.
  • Laden Sie den vorbereiteten Datensatz in die Originalquelle herunter und überprüfen Sie die Verwendbarkeit.
  • Starten Sie ETL-Prozesse zum Verarbeiten eines Datensatzes vom Quellspeicher bis zum endgültigen oder Zwischenprodukt mit einem bestimmten Satz von Einstellungen (legen Sie nach Möglichkeit konfigurierbare Parameter für die ETL-Aufgabe fest).
  • Überprüfen Sie die vom ETL-Prozess verarbeiteten Daten auf Qualität und Übereinstimmung mit den Geschäftsanforderungen.

Gleichzeitig sollte das Hauptaugenmerk der Überprüfungen nicht nur auf der Tatsache liegen, dass der Datenfluss im System funktioniert hat und das Ende erreicht hat (was Teil der Funktionsprüfung ist), sondern hauptsächlich auf der Überprüfung und Validierung von Daten zur Einhaltung der erwarteten Anforderungen, der Identifizierung von Anomalien und andere Dinge.

Werkzeuge


Eine der Techniken für eine solche Datenkontrolle kann die Organisation von Kettenprüfungen in jeder Phase der Datenverarbeitung sein, die in der Literatur als "Datenkette" bezeichnete sogenannte Datenkontrolle - Datenkontrolle von der Quelle bis zum endgültigen Verwendungszweck. Solche Überprüfungen werden meistens durch Schreiben validierender SQL-Abfragen implementiert. Es ist klar, dass solche Anforderungen so leicht wie möglich sein und einzelne Datenqualitätselemente überprüfen sollten (Tabellenmetadaten, Leerzeilen, NULL-Werte, Syntaxfehler - andere erforderliche Attributprüfungen).

Bei Regressionstests, bei denen vorgefertigte (unveränderliche / leicht veränderbare) Datensätze verwendet werden, können vorgefertigte Vorlagen zum Überprüfen der Daten auf Qualität (Beschreibungen der erwarteten Tabellenmetadaten; selektive Objekte in Kleinbuchstaben, die während des Tests zufällig ausgewählt werden können, im Autotestcode gespeichert werden). Und so weiter).

Auch während der Prüfung, müssen Sie Test ETL - Prozesse unter Verwendung von Frameworks wie Apache Airflow, schreiben Apache Funken oder ein Black-Box - Cloud - Tool wie GCP dataPrep , GCP DatenflussUnd so weiter. Dieser Umstand lässt den Testingenieur in die Prinzipien der oben genannten Tools eintauchen und noch effektiver, wie Funktionstests (z. B. vorhandene ETL-Prozesse im Projekt) durchgeführt und zur Überprüfung der Daten verwendet werden. Insbesondere verfügt Apache Airflow über vorgefertigte Bediener für die Arbeit mit gängigen Analysedatenbanken, beispielsweise GCP BigQuery . Die grundlegendste Beispiel für seine Verwendung bereits skizziert hier , also werde ich es nicht wiederholen.

Neben vorgefertigten Lösungen verbietet Ihnen niemand, Ihre Techniken und Werkzeuge zu verkaufen. Dies ist nicht nur ein Vorteil für das Projekt, sondern auch für den Data Quality Engineer selbst, wodurch sein technischer Horizont und seine Codierungsfähigkeiten erweitert werden.

Wie es bei einem echten Projekt funktioniert


Ein gutes Beispiel für die letzten Absätze zu „Datenkette“, ETL und den allgegenwärtigen Überprüfungen ist der folgende Prozess aus einem der realen Projekte:



Hier fallen verschiedene Daten (natürlich von uns vorbereitet) in den Eingabe- „Trichter“ unseres Systems: gültig, ungültig, gemischt usw. n., dann werden sie gefiltert und landen in einem Zwischenspeicher, dann warten sie erneut auf eine Reihe von Transformationen und werden in einem endgültigen Speicher abgelegt, von dem aus wiederum Analysen durchgeführt, Daten zugeordnet und nach geschäftlichen Erkenntnissen gesucht werden. In einem solchen System konzentrieren wir uns ohne Überprüfung der Funktionsweise von ETL-Prozessen auf die Qualität der Daten vor und nach den Transformationen sowie auf die Analyse.

Zusammenfassend war ich unabhängig von den Arbeitsorten überall an Datenprojekten beteiligt, in denen die folgenden Funktionen kombiniert wurden:

  • Nur durch Automatisierung können Sie einige Fälle überprüfen und einen geschäftsfreundlichen Release-Zyklus erzielen.
  • Der Tester eines solchen Projekts ist eines der angesehensten Teammitglieder, da es jedem Teilnehmer große Vorteile bringt (beschleunigte Tests, gute Daten von Data Scientist, Früherkennung von Fehlern).
  • Es spielt keine Rolle, ob Sie an Ihrer Hardware oder in den Clouds arbeiten - alle Ressourcen werden in einem Cluster wie Hortonworks, Cloudera, Mesos, Kubernetes usw. abstrahiert.
  • Projekte basieren auf einem Microservice-Ansatz, verteiltes und paralleles Computing setzen sich durch.

Ich stelle fest, dass der Testspezialist beim Testen im Bereich Datenqualität seinen beruflichen Fokus auf den verwendeten Produktcode und die verwendeten Tools verlagert.

Besonderheiten beim Testen der Datenqualität


Darüber hinaus habe ich für mich Folgendes hervorgehoben (ich werde sofort eine SEHR verallgemeinerte und ausschließlich subjektive Reservierung vornehmen), die Merkmale des Testens in Datenprojekten (Big Data) (Systemen) und anderen Bereichen auszeichnet:


Nützliche Links


  1. Theorie: DAMA-DMBOK: Datenmanagement Wissensbestand: 2. Auflage .
  2.  EPAM-  Schulungszentrum
  3. Empfohlene Materialien für den unerfahrenen Data Quality-Ingenieur:

    1. Kostenloser Stepik-Kurs:  Eine Einführung in Datenbanken
    2. Kurs auf LinkedIn Lernen:  Data Science Grundlagen: Data Engineering .
    3. Artikel:

    4. Video:


Fazit


Datenqualität ist ein sehr junges, vielversprechendes Gebiet, zu dem es gehört, Teil eines Startups zu sein. Sobald Sie sich in der Datenqualität befinden, werden Sie in eine große Anzahl moderner Technologien eintauchen, die gefragt sind. Vor allem aber haben Sie enorme Möglichkeiten, Ihre Ideen zu generieren und umzusetzen. Sie können den Ansatz der kontinuierlichen Verbesserung nicht nur für das Projekt, sondern auch für sich selbst nutzen und sich kontinuierlich als Spezialist weiterentwickeln.

All Articles