Ein kanadisches Transport- und Logistikunternehmen nutzte Genie Code, Unity Catalog und eigene Agent Skills zur kontrollierten Modernisierung von Legacy-Pipelines. Die Ingestion neuer Tabellen sank von Tagen auf Minuten.
von Dinesh Chandrasekaran, Subhadip Chanda, Julia Brouillette und Gal Oshri
Eines der größten Eisenbahnnetze Kanadas erstreckt sich über rund 20.000 Streckenmeilen in Kanada und den USA und unterstützt den Transport von Waren im Wert von jährlich mehr als 250 Milliarden CAD. Für ein Unternehmen dieser Größenordnung war die Modernisierung eines jahrzehntealten Datenbestands niemals ein Projekt, das man Tabelle für Tabelle angehen konnte.
Mit Hunderten von aktiven Pipelines, einer wachsenden Nachfrage nach Echtzeit-Analysen und AI sowie tiefem institutionellem Wissen, das in Altsystemen verankert ist, benötigte das Unternehmen eine Möglichkeit, die Modernisierung zu skalieren, ohne den manuellen Entwicklungsaufwand zu erhöhen.
Mithilfe von Databricks Genie Code, Unity Catalog, benutzerdefinierten Agent Skills und einer auf Databricks Apps basierenden Streamlit-App machte das Team die Pipeline-Entwicklung selbst zu einer wiederholbaren Fabrik. Ein kurzer YAML-Prompt kann nun produktionsbereiten Ingestion-Code generieren, der auf Live-Katalog-Metadaten basiert und standardmäßig an den Unternehmensrichtlinien ausgerichtet ist – einschließlich Tabellendefinitionen, historischer Ladelogik, Streaming-Ingestion-Logik, inkrementeller Merge-Logik und automatisierter Tests.
Das Ergebnis ist eine über 90-prozentige Automatisierung bei der Ingestion neuer Tabellen, eine Verkürzung der Pipeline-Bereitstellung von Tagen auf Minuten und ein Modernisierungsprogramm, das mit dem Unternehmen wachsen kann, anstatt durch die Kapazitäten der Entwickler eingeschränkt zu werden.
Wie viele Großunternehmen hat das Unternehmen seinen analytischen Datenbestand über Jahrzehnte hinweg auf Mainframe-Systemen, Legacy-Data-Warehouses, Enterprise-ETL-Plattformen und spezialisierten Appliances aufgebaut. Beim Übergang zu einer modernen Lakehouse-Architektur war die Herausforderung größer als die reine Migration: Das Team musste die Erstellung von Pipelines vereinfachen und standardisieren und gleichzeitig die geschäftskritische Logik über eine große Legacy-Infrastruktur hinweg bewahren.
Vor der Automatisierung war der Aufbau einer Pipeline für eine einzelne Tabelle ein mehrtägiger Aufwand. Die Teams mussten Quell-Schemas überprüfen, die Geschäftslogik in einer Source-to-Target-Mapping-Tabelle definieren, historische und Streaming-Ingestion-Logik erstellen, inkrementelle Merge-Pipelines schreiben, Downstream-Transformationen implementieren und Testabdeckungen für Fälle wie Schema-Evolution, Spaltenumbenennungen, Type-Casts und Soft-Deletes erstellen.
Diese Arbeit war für eine einzelne Tabelle überschaubar, für Hunderte jedoch nicht. Die eigentliche Hürde war der manuelle Aufwand, der erforderlich war, um Legacy-Logik wiederholt und konsistent in Lakehouse-Pipelines zu übersetzen.
Das Unternehmen musste nicht nur seine Pipelines modernisieren, sondern auch den Prozess des Aufbaus von Hunderten von Pipelines.
Die Lösung basierte auf dem Zusammenspiel zweier Funktionen: Genie Code mit benutzerdefinierten Agent Skills zur Generierung produktionsbereiter Ingestion-Artefakte und einer Databricks App zur Zuordnung von Quellfeldern zu Lakehouse-Zieltabellen und zur Generierung von Transformationslogik.
Zusammen bildeten sie einen End-to-End-Workflow von der Metadaten-Erkennung bis zum generierten Code – und das alles innerhalb von Databricks. Genie Code fungiert als autonomer AI-Partner, während ein benutzerdefiniertes Agent Skill die Ingestion-Muster und die Merge-Logik des Unternehmens codiert. Unity Catalog bietet Schema-Introspektion über Raw-, Historical- und Prep-Layer hinweg, während Databricks Apps die Source-to-Target-Mapping-Erfahrung unterstützt. Die resultierenden Pipelines nutzen PySpark, Spark SQL und Delta Lake und sind für die Ausführung über Lakeflow Jobs konzipiert.
Dieser Ansatz ermöglichte es dem Team, Genie Code um eigene Ingestion-Standards und Pipeline-Konventionen zu erweitern. Audit-Konventionen, Deduplizierungslogik, Change-Sequence-Merge-Guards, Soft-Delete-Abgleich und Testmuster sind direkt in den Generierungsprozess integriert, anstatt darauf zu vertrauen, dass jeder Entwickler sie manuell anwendet.
Einem probabilistischen Workflow Determinismus hinzuzufügen, ist der Schlüssel. Wir haben uns dafür entschieden, das zu automatisieren, von dem wir wissen, dass es korrekt ist, und überlassen die Interpretationsebene als Option. Das LLM unterstützt beim Denken. Das Framework stellt sicher, dass die Erklärbarkeit von Haus aus integriert ist.—Dinesh Chandrasekaran, Data & AI Leader bei einem führenden kanadischen Transport- und Logistikunternehmen
Diese Philosophie wurde zum Kern des gesamten Ansatzes: AI dort einzusetzen, wo logisches Denken und Erkenntnisse wichtig sind, und strenge Muster dort zu nutzen, wo Konsistenz und Reproduzierbarkeit am wichtigsten sind.
Ein Entwickler beginnt mit einem kompakten YAML-Prompt. Im einfachsten Fall kann dieser Prompt für die reine Raw-Ingestion nur zwei Zeilen lang sein. Für eine vollständige Tabellen-Pipeline enthält er Kern-Inputs wie Quell- und Zieltabellennamen, Primärschlüssel, Deduplizierungslogik und Refresh-Verhalten.
Von dort aus folgt Genie Code einem strukturierten Workflow. Er parst und validiert den Prompt, ermittelt über Unity Catalog-Metadaten die Schemas der Historical- und Trusted-Layer, gleicht Spalten automatisch mit der Quelle ab, identifiziert Anforderungen für Type-Casts und Umbenennungen, löst Transformationsmuster auf, generiert die angeforderten Artefakte unter Verwendung der Standardmuster des Unternehmens und validiert jede Ausgabe anhand der erforderlichen Unternehmens-Invarianten. Zu diesen Invarianten gehören die Primärschlüssel-Abdeckung, die Platzierung von Audit-Spalten, durch Change-Sequences geschützte Merges, REFRESH-bewusste Deduplizierung und die Abdeckung durch Test-Suites.
Je nach Modus unterstützt der Workflow eine einzelne Tabelle, mehrere Tabellen in einer einzigen Anfrage oder einen Bulk-Lauf, der durch eine in einem Unity Catalog-Volume gespeicherte CSV- oder Excel-Datei gesteuert wird. In der Praxis kann der Workflow sechs produktionsbereite Ausgaben generieren: DDL, historischen Load, Raw-Streaming-Ingestion, den ersten inkrementellen Merge, fortlaufende inkrementelle Merges und eine automatisierte Test-Suite.
Jedes generierte Notebook folgt denselben Unternehmenskonventionen für Audit-Spalten, Deduplizierung, Change-Sequence-bewusste Merges und den Soft-Delete-Abgleich.
Ein wichtiger Teil der Architektur war das benutzerdefinierte Agent Skill, das Genie Code eine wiederverwendbare Möglichkeit bietet, die Ingestion-Standards, Namenskonventionen und Pipeline-Muster des Unternehmens anzuwenden.
Das Skill wird wie jede andere Codebasis versioniert. Es enthält einen Einstiegspunkt namens SKILL.md sowie unterstützende Musterdateien für Katalog-Erkennung, Konventionen, Raw-Ingestion, historische Loads, inkrementelle Merges und Testgenerierung. Diese Struktur ermöglicht es dem Unternehmen, seine Generierungslogik zentral zu pflegen und sie gleichzeitig Entwicklern über Genie Code zur Verfügung zu stellen.
Das Skill ist ein einzelner Ordner, der in workspace/.assistant/skills/lakehouse-ingestion/ hochgeladen wurde. 
Er enthält einen Einstiegspunkt namens SKILL.md sowie sieben Musterdateien, eine pro Artefakttyp:
Der SKILL.md Frontmatter wird von Genie Code verwendet, um zu entscheiden, wann das Skill geladen werden soll:
Anstatt Standards an einem Ort zu dokumentieren und von jedem Entwickler zu verlangen, sie manuell zu interpretieren, hat das Team diese Standards direkt in den Workflow codiert. Der Agent übernimmt die Kontext-Erfassung und Orchestrierung. Das Skill stellt sicher, dass die generierten Artefakte jedes Mal denselben Mustern folgen.
Ein Entwickler startet die Codegenerierung mit einem kurzen YAML-Prompt innerhalb einer Genie Code-Sitzung. Das Minimum sind zwei Zeilen für die reine Raw-Ingestion. Eine vollständige Pipeline benötigt sechs.
Minimales Beispiel, generiert nur das Raw-Ingestion-Notebook:
Vollständiges Beispiel, das die komplette Pipeline aus sechs Artefakten für eine Tabelle generiert:
Die sechs Artefakte werden zur Laufzeit in dieser Reihenfolge ausgeführt:
Ein weiteres wichtiges Designprinzip war es, die Codegenerierung auf Live-Metadaten statt auf statischen Annahmen aufzubauen.
Genie Code nutzt Unity Catalog, um Schemata über Raw-, Verlaufs- und Vorbereitungstabellen hinweg in Echtzeit zu prüfen. Dieser metadatenbasierte Ansatz macht eine separate Discovery-Ebene überflüssig und liefert dem Agenten den nötigen Kontext, um Mappings zu generieren, Transformationen abzuleiten und erforderliche Felder zu validieren, bevor der Code ausgegeben wird.
Ebenso wichtig ist, dass alle generierten Artefakte innerhalb des Databricks-Workspace verbleiben und im selben Governance-Modell wie der Rest der Datenplattform ausgeführt werden. Zugriffskontrollen, Metadatenrichtlinien und der Versionsverlauf bleiben nativ in Databricks integriert. Diese Kombination aus Metadaten-Fundierung und kontrollierter Ausführung half dem Team, eine häufige Lücke bei der Einführung von AI in Unternehmen zu schließen: schneller vorankommen, ohne Inkonsistenzen einzuführen oder Kontrollen zu schwächen.
Das Unternehmen betrachtete dies nicht als ein völlig automatisiertes Generierungsproblem ohne menschliches Eingreifen. Bevor Code generiert wird, prüfen Data Designer mithilfe einer Databricks-App, wie Felder aus Altsystemen den Zieltabellen im Lakehouse zugeordnet werden sollen.
Dieser Schritt, genannt Source-to-Target-Mapping, erfasst die Geschäftslogik, die nicht blind erraten oder automatisiert werden sollte. Die App basiert auf Streamlit-basierten Databricks Apps, scannt die Tabellen des Quellsystems, befüllt die Spaltenzuordnungen vorab und ermöglicht es Data Designern, die Transformationslogik direkt im Browser zu überprüfen und zu verfeinern.
Jede Änderung wird in einem Änderungsprotokoll erfasst, und das endgültige Mapping kann exportiert und als Input für den Generierungs-Workflow verwendet werden. Dies beschleunigte den Prozess, ohne die fachliche Überprüfung in den Teilen des Workflows zu vernachlässigen, in denen es weiterhin auf die geschäftliche Interpretation ankommt. Data Designer konnten sich auf das Ziel der Transformation und die Geschäftslogik konzentrieren, während Genie Code und das Generierungs-Framework wiederholbare Implementierungsmuster übernahmen.
Eine der wichtigsten Entscheidungen in der Architektur war es, die Reasoning-Layer intelligent und anpassungsfähig zu halten, während der ausgegebene Pipeline-Code deterministisch bleibt.
Genie Code übernimmt die Teile des Workflows, die von agentenbasierter Argumentation profitieren: das Interpretieren von Prompts, das Erkennen von Schemata, das Auswählen des richtigen Generierungspfads und das Zusammenfügen der korrekten Abfolge von Aktionen. Der generierte PySpark-Code selbst ist jedoch regelbasiert und reproduzierbar. Merge-Anweisungen, Deduplizierungsfenster, die Platzierung von Audit-Spalten, Typkonvertierungen und Testmuster werden alle über explizite Vorlagen und Invarianten definiert.
Für das Unternehmen war dies von entscheidender Bedeutung. Bei der Generierung von Produktions-Pipelines können geringfügige Abweichungen in der Merge-Logik, den Deduplizierungsfenstern oder der Platzierung von Audit-Spalten Risiken für die nachgelagerte Datenqualität bergen. Die deterministische Ausgabe machte das System vertrauenswürdig genug für den Einsatz im gesamten Unternehmen und konsistent genug, um mühsam erarbeitete Engineering-Standards zu wahren.
Die Auswirkungen waren unmittelbar und praktisch spürbar:
Es änderte sich nicht nur die Produktivität der Entwickler. Das Unternehmen steigerte den Durchsatz des Modernisierungsprogramms selbst.
Anstatt jede Tabellenmigration als maßgeschneidertes Engineering-Projekt zu behandeln, schuf das Team ein wiederholbares System, um Altsysteme in großem Maßstab in kontrollierte Lakehouse-Pipelines zu überführen.
Das Unternehmen sieht darin das Fundament für eine umfassendere Modernisierungsautomatisierung. Das Team untersucht nun eine modularere Skill-Architektur für Orchestrierung, Transformation, Geschäftslogik und Observability; die Ausweitung der Discovery über Unity Catalog hinaus auf den breiteren Datenkatalog des Unternehmens; die Evaluierung der AI-gestützten Konvertierung von Legacy-DataStage-, COBOL- und Stored-Procedure-Logik in PySpark; und die Nutzung neuer Hintergrund-Agenten-Funktionen zur Unterstützung von routinemäßiger Pipeline-Triage, DBR-Upgrades und der Behebung von Schema-Abweichungen.
Das langfristige Ziel geht über eine schnellere Codegenerierung hinaus. Es soll ein Modernisierungsmodell geschaffen werden, das kontinuierlich skaliert, selbst wenn die Komplexität der Altsysteme, die geschäftlichen Anforderungen und der Plattformumfang weiter zunehmen.
(Dieser Blogbeitrag wurde mit KI-gestützten Tools übersetzt.) Originalbeitrag
Abonnieren Sie unseren Blog und erhalten Sie die neuesten Beiträge direkt in Ihren Posteingang.