Zehn neue visuelle Transformationen in AWS Glue Studio

Zehn neue visuelle Transformationen in AWS Glue Studio

Quellknoten: 2641422

AWS Glue Studio ist eine grafische Oberfläche, die das Erstellen, Ausführen und Überwachen von Extraktions-, Transformations- und Ladeaufträgen (ETL) vereinfacht AWS-Kleber. Sie können Datentransformations-Workflows visuell zusammenstellen, indem Sie Knoten verwenden, die verschiedene Datenverarbeitungsschritte darstellen, die später automatisch in auszuführenden Code umgewandelt werden.

AWS Glue Studio vor kurzem veröffentlicht 10 weitere visuelle Transformationen, um fortgeschrittenere Jobs auf visuelle Weise ohne Programmierkenntnisse zu erstellen. In diesem Beitrag diskutieren wir mögliche Anwendungsfälle, die allgemeine ETL-Anforderungen widerspiegeln.

Die neuen Transformationen, die in diesem Beitrag demonstriert werden, sind: Concatenate, Split String, Array To Columns, Add Current Timestamp, Pivot Rows To Columns, Unpivot Columns To Rows, Lookup, Explode Array Or Map Into Columns, Abgeleitete Spalte und Autobalance-Verarbeitung .

Lösungsüberblick

In diesem Anwendungsfall haben wir einige JSON-Dateien mit Aktienoptionsoperationen. Wir möchten vor dem Speichern der Daten einige Transformationen vornehmen, um die Analyse zu erleichtern, und wir möchten auch eine separate Datensatzzusammenfassung erstellen.

In diesem Datensatz repräsentiert jede Zeile einen Handel mit Optionskontrakten. Optionen sind Finanzinstrumente, die das Recht – aber nicht die Verpflichtung – zum Kauf oder Verkauf von Aktien zu einem festgelegten Preis (sog  Ausübungspreis) vor einem definierten Ablaufdatum.

Eingabedaten

Die Daten folgen dem folgenden Schema:

  • Auftragsnummer – Eine eindeutige ID
  • Symbol – Ein Code, der im Allgemeinen auf wenigen Buchstaben basiert, um das Unternehmen zu identifizieren, das die zugrunde liegenden Aktien ausgibt
  • Instrument – Der Name, der die spezifische Option identifiziert, die gekauft oder verkauft wird
  • Währung – Der ISO-Währungscode, in dem der Preis ausgedrückt wird
  • Preis – Der Betrag, der für den Kauf jedes Optionskontrakts gezahlt wurde (an den meisten Börsen können Sie mit einem Kontrakt 100 Aktien kaufen oder verkaufen)
  • Austausch- – Der Code des Börsenplatzes oder Handelsplatzes, an dem die Option gehandelt wurde
  • verkauft – Eine Liste der Anzahl der Kontrakte, die zugewiesen wurden, um den Verkaufsauftrag auszuführen, wenn es sich um einen Verkaufshandel handelt
  • gekauft – Eine Liste der Anzahl der Kontrakte, die zugewiesen wurden, um den Kaufauftrag auszuführen, wenn es sich um einen Kaufhandel handelt

Das Folgende ist ein Beispiel der synthetischen Daten, die für diesen Beitrag generiert wurden:

{"order_id": 1679931512485, "symbol": "AMZN", "instrument": "AMZN MAR 24 23 102 PUT", "currency": "usd", "price": 17.18, "exchange": "EDGX", "bought": [18, 38]}
{"order_id": 1679931512486, "symbol": "BMW.DE", "instrument": "BMW.DE MAR 24 23 96 PUT", "currency": "eur", "price": 2.98, "exchange": "XETR", "bought": [28]}
{"order_id": 1679931512487, "symbol": "BMW.DE", "instrument": "BMW.DE APR 28 23 101 CALL", "currency": "eur", "price": 14.71, "exchange": "XETR", "sold": [9, 59, 54]}
{"order_id": 1679931512489, "symbol": "JPM", "instrument": "JPM JUN 30 23 140 CALL", "currency": "usd", "price": 11.83, "exchange": "EDGX", "bought": [33, 42, 55, 67]}
{"order_id": 1679931512490, "symbol": "SIE.DE", "instrument": "SIE.DE MAR 24 23 149 CALL", "currency": "eur", "price": 13.68, "exchange": "XETR", "bought": [96, 89, 82]}
{"order_id": 1679931512491, "symbol": "NKE", "instrument": "NKE MAR 24 23 112 CALL", "currency": "usd", "price": 3.23, "exchange": "EDGX", "sold": [67]}
{"order_id": 1679931512492, "symbol": "AMZN", "instrument": "AMZN MAY 26 23 95 CALL", "currency": "usd", "price": 11.44, "exchange": "EDGX", "sold": [41, 62, 12]}
{"order_id": 1679931512493, "symbol": "JPM", "instrument": "JPM MAR 24 23 121 PUT", "currency": "usd", "price": 1.0, "exchange": "EDGX", "bought": [61, 34]}
{"order_id": 1679931512494, "symbol": "SAP.DE", "instrument": "SAP.DE MAR 24 23 132 CALL", "currency": "eur", "price": 15.9, "exchange": "XETR", "bought": [69, 33]}

ETL-Anforderungen

Diese Daten weisen eine Reihe einzigartiger Merkmale auf, die häufig auf älteren Systemen zu finden sind und deren Nutzung erschweren.

Im Folgenden sind die ETL-Anforderungen aufgeführt:

  • Der Instrumentenname enthält wertvolle Informationen, die für Menschen verständlich sind; Wir möchten es zur einfacheren Analyse in separate Spalten normalisieren.
  • Die Attribute bought und sold schließen sich gegenseitig aus; Wir können sie in einer einzigen Spalte mit den Kontraktnummern zusammenfassen und eine weitere Spalte haben, die angibt, ob die Kontrakte in dieser Reihenfolge gekauft oder verkauft wurden.
  • Wir wollen die Informationen über die einzelnen Vertragszuordnungen erhalten, aber als einzelne Zeilen, anstatt die Benutzer zu zwingen, sich mit einer Reihe von Zahlen auseinanderzusetzen. Wir könnten die Zahlen addieren, aber wir würden Informationen darüber verlieren, wie die Order ausgeführt wurde (was auf die Marktliquidität hinweist). Stattdessen entscheiden wir uns dafür, die Tabelle zu denormalisieren, sodass jede Zeile eine einzelne Anzahl von Kontrakten enthält, wobei Aufträge mit mehreren Nummern in separate Zeilen aufgeteilt werden. In einem komprimierten Spaltenformat ist die zusätzliche Dataset-Größe dieser Wiederholung oft gering, wenn die Komprimierung angewendet wird, sodass es akzeptabel ist, das Dataset einfacher abzufragen.
  • Wir möchten eine zusammenfassende Volumentabelle für jeden Optionstyp (Call und Put) für jede Aktie erstellen. Dies liefert einen Hinweis auf die Marktstimmung für jede Aktie und den Markt im Allgemeinen (Gier vs. Angst).
  • Um allgemeine Handelszusammenfassungen zu ermöglichen, möchten wir für jede Transaktion die Gesamtsumme angeben und die Währung auf US-Dollar standardisieren, wobei eine ungefähre Umrechnungsreferenz verwendet wird.
  • Wir möchten das Datum hinzufügen, an dem diese Transformationen stattfanden. Dies kann beispielsweise nützlich sein, um einen Hinweis darauf zu haben, wann die Währungsumrechnung durchgeführt wurde.

Basierend auf diesen Anforderungen erzeugt der Job zwei Ausgaben:

  • Eine CSV-Datei mit einer Zusammenfassung der Anzahl der Kontrakte für jedes Symbol und jeden Typ
  • Eine Katalogtabelle, um eine Historie der Bestellung zu führen, nachdem die angegebenen Transformationen durchgeführt wurden
    Datenschema

Voraussetzungen:

Sie benötigen Ihren eigenen S3-Bucket, um diesen Anwendungsfall zu verfolgen. Informationen zum Erstellen eines neuen Buckets finden Sie unter Einen Eimer erstellen.

Generieren Sie synthetische Daten

Um diesem Beitrag zu folgen (oder selbst mit dieser Art von Daten zu experimentieren), können Sie diesen Datensatz synthetisch generieren. Das folgende Python-Skript kann in einer Python-Umgebung mit installiertem Boto3 und Zugriff darauf ausgeführt werden Amazon Simple Storage-Service (Amazon S3).

Führen Sie die folgenden Schritte aus, um die Daten zu generieren:

  1. Erstellen Sie in AWS Glue Studio einen neuen Job mit der Option Python-Shell-Skript-Editor.
  2. Geben Sie dem Job einen Namen und auf der Jobdetails wählen Sie a passende Rolle und einen Namen für das Python-Skript.
  3. Im Jobdetails Abschnitt, erweitern Erweiterte Eigenschaften und scrollen Sie nach unten Auftragsparameter.
  4. Geben Sie einen Parameter namens ein --bucket und weisen Sie als Wert den Namen des Buckets zu, in dem Sie die Beispieldaten speichern möchten.
  5. Geben Sie das folgende Skript in den AWS Glue-Shell-Editor ein:
    import argparse
    import boto3
    from datetime import datetime
    import io
    import json
    import random
    import sys # Configuration
    parser = argparse.ArgumentParser()
    parser.add_argument('--bucket')
    args, ignore = parser.parse_known_args()
    if not args.bucket: raise Exception("This script requires an argument --bucket with the value specifying the S3 bucket where to store the files generated") data_bucket = args.bucket
    data_path = "transformsblog/inputdata"
    samples_per_file = 1000 # Create a single file with synthetic data samples
    s3 = boto3.client('s3')
    buff = io.BytesIO() sample_stocks = [("AMZN", 95, "usd"), ("NKE", 120, "usd"), ("JPM", 130, "usd"), ("KO", 130, "usd"), ("BMW.DE", 95, "eur"), ("SIE.DE", 140, "eur"), ("SAP.DE", 115, "eur")]
    option_type = ["PUT", "CALL"]
    operations = ["sold", "bought"]
    dates = ["MAR 24 23", "APR 28 23", "MAY 26 23", "JUN 30 23"]
    for i in range(samples_per_file): stock = random.choice(sample_stocks) symbol = stock[0] ref_price = stock[1] currency = stock[2] strike_price = round(ref_price * 0.9 + ref_price * random.uniform(0.01, 0.3)) sample = { "order_id": int(datetime.now().timestamp() * 1000) + i, "symbol": stock[0], "instrument":f"{symbol} {random.choice(dates)} {strike_price} {random.choice(option_type)}", "currency": currency, "price": round(random.uniform(0.5, 20.1), 2), "exchange": "EDGX" if currency == "usd" else "XETR" } sample[random.choice(operations)] = [random.randrange(1,100) for i in range(random.randrange(1,5))] buff.write(json.dumps(sample).encode()) buff.write("n".encode()) s3.put_object(Body=buff.getvalue(), Bucket=data_bucket, Key=f"{data_path}/{int(datetime.now().timestamp())}.json")

  6. Führen Sie den Job aus und warten Sie, bis er auf der Registerkarte „Ausführungen“ als erfolgreich abgeschlossen angezeigt wird (es sollte nur wenige Sekunden dauern).

Bei jeder Ausführung wird eine JSON-Datei mit 1,000 Zeilen unter dem angegebenen Bucket und Präfix generiert transformsblog/inputdata/. Sie können den Job mehrmals ausführen, wenn Sie mit mehr Eingabedateien testen möchten.
Jede Zeile in den synthetischen Daten ist eine Datenzeile, die ein JSON-Objekt wie das folgende darstellt:

{ "order_id":1681986991888, "symbol":"AMZN", "instrument":"AMZN APR 28 23 100 PUT", "currency":"usd", "price":2.89, "exchange":"EDGX", "sold":[88,49]
}

Erstellen Sie den visuellen AWS Glue-Job

Führen Sie die folgenden Schritte aus, um den visuellen AWS Glue-Job zu erstellen:

  1. Gehen Sie zu AWS Glue Studio und erstellen Sie mit der Option einen Job Visuell mit einer leeren Leinwand.
  2. Bearbeiten Untitled job um ihm einen Namen zu geben und zuzuordnen eine für AWS Glue geeignete Rolle auf die Jobdetails Tab.
  3. Fügen Sie eine S3-Datenquelle hinzu (Sie können ihr einen Namen geben JSON files source) und geben Sie die S3-URL ein, unter der die Dateien gespeichert sind (z. B. s3://<your bucket name>/transformsblog/inputdata/), dann auswählen JSON als Datenformat.
  4. Auswählen Schema ableiten Daher wird das Ausgabeschema basierend auf den Daten festgelegt.

Von diesem Quellknoten aus verketten Sie weiterhin Transformationen. Stellen Sie beim Hinzufügen jeder Transformation sicher, dass der ausgewählte Knoten der letzte hinzugefügte Knoten ist, sodass er als übergeordneter Knoten zugewiesen wird, sofern in den Anweisungen nicht anders angegeben.

Wenn Sie nicht das richtige übergeordnete Element ausgewählt haben, können Sie das übergeordnete Element jederzeit bearbeiten, indem Sie es auswählen und im Konfigurationsbereich ein anderes übergeordnetes Element auswählen.

Konfiguration des übergeordneten Knotens

Für jeden hinzugefügten Knoten geben Sie ihm einen bestimmten Namen (so dass der Zweck des Knotens im Diagramm angezeigt wird) und eine Konfiguration auf der Transformieren Tab.

Jedes Mal, wenn eine Transformation das Schema ändert (z. B. eine neue Spalte hinzufügt), muss das Ausgabeschema aktualisiert werden, damit es für die nachgelagerten Transformationen sichtbar ist. Sie können das Ausgabeschema manuell bearbeiten, aber es ist praktischer und sicherer, dies über die Datenvorschau zu tun.
Außerdem können Sie auf diese Weise überprüfen, ob die Transformation soweit wie erwartet funktioniert. Öffnen Sie dazu die Datenvorschau Registerkarte mit der ausgewählten Transformation und starten Sie eine Vorschausitzung. Nachdem Sie überprüft haben, dass die transformierten Daten wie erwartet aussehen, gehen Sie zu Ausgabeschema Tab und wählen Verwenden Sie das Datenvorschauschema um das Schema automatisch zu aktualisieren.

Wenn Sie neue Arten von Transformationen hinzufügen, zeigt die Vorschau möglicherweise eine Meldung über eine fehlende Abhängigkeit an. Wenn dies geschieht, wählen Sie Sitzung beenden und starten Sie einen neuen, damit die Vorschau die neue Art von Knoten aufnimmt.

Instrumenteninformationen extrahieren

Beginnen wir damit, uns mit den Informationen zum Instrumentennamen zu befassen, um ihn in Spalten zu normalisieren, auf die in der resultierenden Ausgabetabelle leichter zugegriffen werden kann.

  1. Hinzufügen String teilen Split Knoten und benennen Sie ihn Split instrument, die die Instrumentenspalte mit einem Whitespace-Regex tokenisiert: s+ (Ein einzelnes Leerzeichen würde in diesem Fall ausreichen, aber dieser Weg ist flexibler und visuell klarer).
  2. Wir möchten die ursprünglichen Instrumenteninformationen beibehalten, geben Sie also einen neuen Spaltennamen für das geteilte Array ein: instrument_arr.
    Split-Konfig
  3. Fügen Sie ein ein Array zu Spalten Knoten und benennen Sie ihn Instrument columns um die gerade erstellte Array-Spalte in neue Felder umzuwandeln, außer für symbol, für die wir bereits eine Spalte haben.
  4. Wählen Sie die Spalte aus instrument_arr, überspringen Sie das erste Token und weisen Sie es an, die Ausgabespalten zu extrahieren month, day, year, strike_price, type Verwendung von Indizes 2, 3, 4, 5, 6 (Die Leerzeichen nach den Kommas dienen der Lesbarkeit, sie wirken sich nicht auf die Konfiguration aus).
    Array-Konfig

Das extrahierte Jahr wird nur mit zwei Ziffern ausgedrückt; Lassen Sie uns eine Lücke schließen, um anzunehmen, dass es in diesem Jahrhundert ist, wenn sie nur zwei Ziffern verwenden.

  1. Hinzufügen Abgeleitete Spalte Knoten und benennen Sie ihn Four digits year.
  2. Enter year als abgeleitete Spalte, damit sie diese überschreibt, und geben Sie den folgenden SQL-Ausdruck ein:
    CASE WHEN length(year) = 2 THEN ('20' || year) ELSE year END
    Vom Jahr abgeleitete Spaltenkonfiguration

Der Einfachheit halber bauen wir eine expiration_date Feld, das ein Benutzer als Referenz für das letzte Datum haben kann, an dem die Option ausgeübt werden kann.

  1. Hinzufügen Spalten verketten Knoten und benennen Sie ihn Build expiration date.
  2. Benennen Sie die neue Spalte expiration_date, wähle die Spalten aus year, month und day (in dieser Reihenfolge) und einen Bindestrich als Abstandshalter.
    Verkettete Datumskonfiguration

Das bisherige Diagramm sollte wie im folgenden Beispiel aussehen.

TAG

Die Datenvorschau der neuen Spalten sollte bisher wie im folgenden Screenshot aussehen.

Datenvorschau

Normalisieren Sie die Anzahl der Verträge

Jede der Zeilen in den Daten gibt die Anzahl der Kontrakte jeder Option an, die gekauft oder verkauft wurden, und die Chargen, für die die Aufträge ausgeführt wurden. Ohne die Informationen zu den einzelnen Chargen zu verlieren, möchten wir jeden Betrag in einer einzelnen Zeile mit einem einzelnen Betragswert haben, während der Rest der Informationen in jeder produzierten Zeile repliziert wird.

Lassen Sie uns zunächst die Beträge in einer einzigen Spalte zusammenführen.

  1. Fügen Sie ein ein Entpivotieren Sie Spalten in Zeilen Knoten und benennen Sie ihn Unpivot actions.
  2. Wählen Sie die Spalten aus bought und sold um die Namen und Werte in den benannten Spalten zu entpivotieren und zu speichern action und contracts, Bzw.
    Unpivot-Konfiguration
    Beachten Sie in der Vorschau, dass die neue Spalte contracts ist nach dieser Transformation immer noch ein Array von Zahlen.
  1. Fügen Sie ein ein Explodieren Sie Array oder Map in Zeilen Reihe benannt Explode contracts.
  2. Wähle die contracts Spalte und geben Sie ein contracts als neue Spalte, um sie zu überschreiben (wir müssen das ursprüngliche Array nicht beibehalten).

Die Vorschau zeigt nun, dass jede Reihe eine Single hat contracts Betrag, und die restlichen Felder sind gleich.

Das bedeutet auch, dass order_id ist kein eindeutiger Schlüssel mehr. Für Ihre eigenen Anwendungsfälle müssen Sie entscheiden, wie Sie Ihre Daten modellieren und ob Sie denormalisieren möchten oder nicht.
Explosionskonfiguration

Der folgende Screenshot ist ein Beispiel dafür, wie die neuen Spalten nach den bisherigen Transformationen aussehen.
Datenvorschau

Erstellen Sie eine Übersichtstabelle

Jetzt erstellen Sie eine zusammenfassende Tabelle mit der Anzahl der gehandelten Kontrakte für jeden Typ und jedes Aktiensymbol.

Nehmen wir zur Veranschaulichung an, dass die verarbeiteten Dateien zu einem einzigen Tag gehören, sodass diese Zusammenfassung den Geschäftsanwendern Informationen über das Marktinteresse und die Marktstimmung an diesem Tag gibt.

  1. Hinzufügen Felder auswählen Knoten und wählen Sie die folgenden Spalten aus, die für die Zusammenfassung beibehalten werden sollen: symbol, type und contracts.
    Ausgewählte Felder
  2. Hinzufügen Pivot-Zeilen in Spalten Knoten und benennen Sie ihn Pivot summary.
  3. Aggregat auf der contracts Spalte mit sum und wählen Sie, um die zu konvertieren type Spalte.
    Pivot-Konfig

Normalerweise würden Sie es zu Referenzzwecken in einer externen Datenbank oder Datei speichern; In diesem Beispiel speichern wir es als CSV-Datei auf Amazon S3.

  1. Fügen Sie ein ein Autobalance-Verarbeitung Knoten und benennen Sie ihn Single output file.
  2. Obwohl dieser Transformationstyp normalerweise verwendet wird, um die Parallelität zu optimieren, verwenden wir ihn hier, um die Ausgabe auf eine einzelne Datei zu reduzieren. Geben Sie daher ein 1 in der Konfiguration der Anzahl der Partitionen.
    Autobalance-Konfig
  3. Fügen Sie ein S3-Ziel hinzu und benennen Sie es CSV Contract summary.
  4. Wählen Sie als Datenformat CSV und geben Sie einen S3-Pfad ein, in dem die Job-Rolle Dateien speichern darf.

Der letzte Teil des Jobs sollte nun wie im folgenden Beispiel aussehen.
TAG

  1. Speichern Sie den Job und führen Sie ihn aus. Verwenden Sie die Läuft Registerkarte, um zu überprüfen, ob es erfolgreich abgeschlossen wurde.
    Unter diesem Pfad finden Sie eine Datei, die eine CSV-Datei ist, obwohl sie diese Erweiterung nicht hat. Sie müssen die Erweiterung wahrscheinlich nach dem Herunterladen hinzufügen, um sie zu öffnen.
    Auf einem Tool, das CSV lesen kann, sollte die Zusammenfassung etwa wie im folgenden Beispiel aussehen.
    Kalkulationstabelle

Bereinigen Sie temporäre Spalten

Lassen Sie uns in Vorbereitung auf das Speichern der Bestellungen in einer Verlaufstabelle für zukünftige Analysen einige temporäre Spalten bereinigen, die auf dem Weg erstellt wurden.

  1. Hinzufügen Drop-Felder Knoten mit dem Explode contracts Knoten, der als übergeordneter Knoten ausgewählt wurde (wir verzweigen die Datenpipeline, um eine separate Ausgabe zu generieren).
  2. Wählen Sie die zu löschenden Felder aus: instrument_arr, month, day und year.
    Den Rest möchten wir behalten, damit er in der historischen Tabelle gespeichert wird, die wir später erstellen werden.
    Felder ablegen

Währungsstandardisierung

Diese synthetischen Daten enthalten fiktive Operationen mit zwei Währungen, aber in einem realen System könnten Sie Währungen von Märkten auf der ganzen Welt erhalten. Es ist nützlich, die gehandhabten Währungen in einer einzigen Referenzwährung zu standardisieren, damit sie für Berichte und Analysen einfach verglichen und aggregiert werden können.

Wir verwenden Amazonas Athena um eine Tabelle mit ungefähren Währungsumrechnungen zu simulieren, die regelmäßig aktualisiert wird (hier gehen wir davon aus, dass wir die Bestellungen so zeitnah bearbeiten, dass die Umrechnung zu Vergleichszwecken angemessen repräsentativ ist).

  1. Öffnen Sie die Athena-Konsole in derselben Region, in der Sie AWS Glue verwenden.
  2. Führen Sie die folgende Abfrage aus, um die Tabelle zu erstellen, indem Sie einen S3-Speicherort festlegen, an dem sowohl Ihre Athena- als auch Ihre AWS Glue-Rollen lesen und schreiben können. Außerdem möchten Sie die Tabelle möglicherweise in einer anderen Datenbank als speichern default (Wenn Sie dies tun, aktualisieren Sie den qualifizierten Namen der Tabelle in den bereitgestellten Beispielen entsprechend).
    CREATE EXTERNAL TABLE default.exchange_rates(currency string, exchange_rate double)
    ROW FORMAT DELIMITED
    FIELDS TERMINATED BY ','
    STORED AS TEXTFILE
    LOCATION 's3://<enter some bucket>/exchange_rates/';

  3. Geben Sie einige Beispielumrechnungen in die Tabelle ein:
    INSERT INTO default.exchange_rates VALUES ('usd', 1.0), ('eur', 1.09), ('gbp', 1.24);
  4. Sie sollten die Tabelle jetzt mit der folgenden Abfrage anzeigen können:
    SELECT * FROM default.exchange_rates
  5. Zurück zum visuellen AWS Glue-Job, fügen Sie a hinzu Lookup Knoten (als Kind von Drop Fields) und nennen Sie es Exchange rate.
  6. Geben Sie den qualifizierten Namen der gerade erstellten Tabelle mit ein currency als Taste und wählen Sie die aus exchange_rate Feld zu verwenden.
    Da das Feld sowohl in den Daten als auch in der Nachschlagetabelle gleich benannt ist, können wir einfach den Namen eingeben currency und müssen kein Mapping definieren.Lookup-Konfig
    Zum Zeitpunkt der Erstellung dieses Artikels wird die Lookup-Transformation in der Datenvorschau nicht unterstützt und es wird ein Fehler angezeigt, dass die Tabelle nicht vorhanden ist. Dies dient nur der Datenvorschau und verhindert nicht, dass der Job korrekt ausgeführt wird. Die wenigen verbleibenden Schritte des Beitrags erfordern keine Aktualisierung des Schemas. Wenn Sie eine Datenvorschau auf anderen Knoten ausführen müssen, können Sie den Lookup-Knoten vorübergehend entfernen und dann wieder einfügen.
  7. Hinzufügen Abgeleitete Spalte Knoten und benennen Sie ihn Total in usd.
  8. Benennen Sie die abgeleitete Spalte total_usd und verwenden Sie den folgenden SQL-Ausdruck:
    round(contracts * price * exchange_rate, 2)
    Währungsumrechnungskonfiguration
  9. Hinzufügen Aktuellen Zeitstempel hinzufügen Knoten und benennen Sie die Spalte ingest_date.
  10. Verwenden Sie das Format %Y-%m-%d für Ihren Zeitstempel (zu Demonstrationszwecken verwenden wir nur das Datum; Sie können es präzisieren, wenn Sie möchten).
    Zeitstempel-Konfig

Speichern Sie die historische Auftragstabelle

Führen Sie die folgenden Schritte aus, um die Tabelle mit historischen Bestellungen zu speichern:

  1. Fügen Sie einen S3-Zielknoten hinzu und benennen Sie ihn Orders table.
  2. Konfigurieren Sie das Parquet-Format mit bissiger Komprimierung und geben Sie einen S3-Zielpfad an, unter dem die Ergebnisse gespeichert werden (getrennt von der Zusammenfassung).
  3. Auswählen Erstellen Sie eine Tabelle im Datenkatalog und aktualisieren Sie bei nachfolgenden Ausführungen das Schema und fügen Sie neue Partitionen hinzu.
  4. Geben Sie eine Zieldatenbank und einen Namen für die neue Tabelle ein, zum Beispiel: option_orders.
    Konfig. Tischspüle

Der letzte Teil des Diagramms sollte nun wie folgt aussehen, mit zwei Zweigen für die zwei getrennten Ausgänge.
TAG

Nachdem Sie den Job erfolgreich ausgeführt haben, können Sie ein Tool wie Athena verwenden, um die Daten zu überprüfen, die der Job erzeugt hat, indem Sie die neue Tabelle abfragen. Sie können den Tisch auf der Athena-Liste finden und auswählen Vorschautabelle oder führen Sie einfach eine SELECT-Abfrage aus (aktualisieren Sie den Tabellennamen auf den von Ihnen verwendeten Namen und Katalog):

SELECT * FROM default.option_orders limit 10

Der Inhalt Ihrer Tabelle sollte dem folgenden Screenshot ähneln.
Tabelleninhalt

Aufräumen

Wenn Sie dieses Beispiel nicht beibehalten möchten, löschen Sie die beiden von Ihnen erstellten Jobs, die beiden Tabellen in Athena und die S3-Pfade, in denen die Eingabe- und Ausgabedateien gespeichert waren.

Zusammenfassung

In diesem Beitrag haben wir gezeigt, wie die neuen Transformationen in AWS Glue Studio Ihnen helfen können, fortgeschrittenere Transformationen mit minimaler Konfiguration durchzuführen. Das bedeutet, dass Sie mehr ETL-Anwendungsfälle implementieren können, ohne Code schreiben und pflegen zu müssen. Die neuen Transformationen sind bereits in AWS Glue Studio verfügbar, sodass Sie die neuen Transformationen noch heute in Ihren visuellen Jobs verwenden können.


Über den Autor

Gonzalo herreros ist Senior Big Data Architect im AWS Glue-Team.

Zeitstempel:

Mehr von AWS Big Data