Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
Daten in mehreren Dateien in Amazon S3 verbinden
Mit der DataBrew Konsole können Sie in Amazon S3 S3-Buckets und -Ordnern navigieren und eine Datei für Ihren Datensatz auswählen. Ein Datensatz muss jedoch nicht auf eine Datei beschränkt sein.
Angenommen, Sie haben einen S3-Bucket mit dem Namenmy-databrew-bucket, der einen Ordner mit dem Namen enthältdatabrew-input. Nehmen wir an, Sie haben in diesem Ordner eine Reihe von JSON-Dateien, die alle dasselbe Dateiformat und dieselbe .json Dateierweiterung haben. Auf der Konsole können Sie eine Quell-URL von angebens3://my-databrew-bucket/databrew-input/. Auf der DataBrew Konsole können Sie dann diesen Ordner auswählen. Ihr Datensatz besteht aus allen JSON-Dateien in diesem Ordner.
DataBrew kann alle Dateien in einem S3-Ordner verarbeiten, aber nur, wenn die folgenden Bedingungen zutreffen:
-
Alle Dateien im Ordner haben dasselbe Format.
-
Alle Dateien im Ordner haben dieselbe Dateierweiterung.
Weitere Informationen zu unterstützten Dateiformaten und Erweiterungen finden Sie unterDataBrew input formats.
Schemas bei der Verwendung mehrerer Dateien als Datensatz
Wenn Sie mehrere Dateien als DataBrew Datensatz verwenden, müssen die Schemas für alle Dateien identisch sein. Andernfalls versucht der Projektarbeitsbereich automatisch, eines der Schemas aus den mehreren Dateien auszuwählen, und versucht, die restlichen Datensatzdateien an dieses Schema anzupassen. Dieses Verhalten führt dazu, dass die Ansicht, die in Project Workspace angezeigt wird, unregelmäßig ist, sodass auch die Jobausgabe unregelmäßig ist.
Wenn Ihre Dateien unterschiedliche Schemas haben müssen, müssen Sie mehrere Datensätze erstellen und diese separat profilieren.
Verwenden von parametrisierten Pfaden für Amazon S3
In einigen Fällen möchten Sie vielleicht einen Datensatz mit Dateien erstellen, die einer bestimmten Namenskonvention folgen, oder einen Datensatz, der sich über mehrere Amazon S3 S3-Ordner erstrecken kann. Oder vielleicht möchten Sie denselben Datensatz für identisch strukturierte Daten wiederverwenden, die regelmäßig an einem S3-Speicherort generiert werden, deren Pfad von bestimmten Parametern abhängt. Ein Beispiel ist ein Pfad, der nach dem Datum der Datenproduktion benannt ist.
DataBrew unterstützt diesen Ansatz mit parametrisierten S3-Pfaden. Ein parametrisierter Pfad ist eine Amazon S3 S3-URL, die reguläre Ausdrücke oder benutzerdefinierte Pfadparameter oder beides enthält.
Definition eines Datensatzes mit einem S3-Pfad unter Verwendung regulärer Ausdrücke
Reguläre Ausdrücke im Pfad können nützlich sein, um mehrere Dateien aus einem oder mehreren Ordnern zuzuordnen und gleichzeitig nicht verwandte Dateien in diesen Ordnern herauszufiltern.
Hier sind ein paar Beispiele:
-
Definieren Sie einen Datensatz, der alle JSON-Dateien aus einem Ordner enthält, dessen Name mit beginnt
invoice. -
Definieren Sie einen Datensatz, der alle Dateien in Ordnern mit
2020ihren Namen enthält.
Sie können diese Art von Ansatz implementieren, indem Sie reguläre Ausdrücke in einem S3-Pfad eines Datensatzes verwenden. Diese regulären Ausdrücke können jede Teilzeichenfolge im Schlüssel der S3-URL ersetzen (aber nicht den Bucket-Namen).
Ein Beispiel für einen Schlüssel in einer S3-URL finden Sie im Folgenden. Hier my-bucket ist der Bucket-Name, US East (Ohio) ist die AWS Region und puppy.png der Schlüsselname.
https://my-bucket.s3.us-west-2.amazonaws.com/puppy.png
In einem parametrisierten S3-Pfad werden alle Zeichen zwischen zwei spitzen Klammern (<und>) als reguläre Ausdrücke behandelt. Zwei Beispiele sind die folgenden:
-
s3://my-databrew-bucket/databrew-input/invoice<.*>/data.jsonentspricht allen benanntendata.jsonDateien in allen Unterordnerndatabrew-input, deren Namen mitinvoicebeginnen. -
s3://my-databrew-bucket/databrew-input/<.*>2020<.*>/stimmt mit allen Dateien in Ordnern überein, die2020in ihren Namen vorkommen.
Entspricht in diesen .* Beispielen null oder mehr Zeichen.
Anmerkung
Sie können reguläre Ausdrücke nur im Schlüsselteil des S3-Pfads verwenden — dem Teil, der nach dem Bucket-Namen steht. Ist also gültig, s3://my-databrew-bucket/<.*>-input/ ist es aber s3://my-<.*>-bucket/<.*>-input/ nicht.
Wir empfehlen Ihnen, Ihre regulären Ausdrücke zu testen, um sicherzustellen, dass sie nur den gewünschten S3-URLs entsprechen und nicht den URLs, die Sie nicht möchten.
Hier sind einige andere Beispiele für reguläre Ausdrücke:
<\d{2}>entspricht einer Zeichenfolge, die aus genau zwei aufeinanderfolgenden Ziffern besteht, zum Beispiel07oder03, aber nicht1a2.<[a-z]+.*>entspricht einer Zeichenfolge, die mit einem oder mehreren lateinischen Kleinbuchstaben beginnt und nach der kein oder mehrere weitere Zeichen folgen. Ein Beispiel ista3, oderabc/defa-z, aber nichtA2.<[^/]+>entspricht einer Zeichenfolge, die beliebige Zeichen außer einem Schrägstrich (/) enthält. In einer S3-URL werden Schrägstriche verwendet, um Ordner im Pfad zu trennen.<.*=.*>entspricht einer Zeichenfolge, die ein Gleichheitszeichen (=) enthält, z. B.month=02, oderabc/day=2=10, aber nicht.test<\d.*\d>entspricht einer Zeichenfolge, die mit einer Ziffer beginnt und endet und zwischen den Ziffern beliebige andere Zeichen enthalten kann, z. B.1abc2, oder01-02-032020/Jul/21, aber nicht.123a
Definieren eines Datensatzes mit einem S3-Pfad mithilfe benutzerdefinierter Parameter
Die Definition eines parametrisierten Datensatzes mit benutzerdefinierten Parametern bietet Vorteile gegenüber der Verwendung regulärer Ausdrücke, wenn Sie möglicherweise Parameter für einen S3-Standort angeben möchten:
Sie können dieselben Ergebnisse wie mit einem regulären Ausdruck erzielen, ohne die Syntax für reguläre Ausdrücke kennen zu müssen. Sie können Parameter mit vertrauten Begriffen wie „beginnt mit“ und „enthält“ definieren.
Wenn Sie einen dynamischen Datensatz mithilfe von Parametern im Pfad definieren, können Sie einen Zeitraum in Ihre Definition aufnehmen, z. B. „letzter Monat“ oder „letzte 24 Stunden“. Auf diese Weise wird Ihre Datensatzdefinition später für neue eingehende Daten verwendet.
Hier sind einige Beispiele dafür, wann Sie dynamische Datensätze verwenden sollten:
Um mehrere Dateien, die nach dem Datum der letzten Aktualisierung oder anderen aussagekräftigen Attributen partitioniert sind, zu einem einzigen Datensatz zu verbinden. Sie können diese Partitionsattribute dann als zusätzliche Spalten in einem Datensatz erfassen.
Um Dateien in einem Datensatz auf S3-Speicherorte zu beschränken, die bestimmte Bedingungen erfüllen. Nehmen wir zum Beispiel an, dass Ihr S3-Pfad datumsbasierte Ordner wie enthält.
folder/2021/04/01/In diesem Fall können Sie das Datum parametrisieren und es auf einen bestimmten Bereich beschränken, z. B. „zwischen dem 01. März 2021 und dem 01. April 2021“ oder „Letzte Woche“.
Um einen Pfad mithilfe von Parametern zu definieren, definieren Sie die Parameter und fügen Sie sie Ihrem Pfad im folgenden Format hinzu:
s3://my-databrew-bucket/some-folder/{parameter1}/file-{parameter2}.json
Anmerkung
Wie bei regulären Ausdrücken in einem S3-Pfad können Sie Parameter nur im Schlüsselteil des Pfads verwenden — dem Teil, der nach dem Bucket-Namen steht.
In einer Parameterdefinition sind zwei Felder erforderlich: Name und Typ. Der Typ kann Zeichenfolge, Zahl oder Datum sein. Parameter des Typs Datum müssen eine Definition des Datumsformats haben, damit Datumswerte korrekt interpretiert und verglichen werden DataBrew können. Optional können Sie Übereinstimmungsbedingungen für einen Parameter definieren. Sie können sich auch dafür entscheiden, passende Werte eines Parameters als Spalte zu Ihrem Datensatz hinzuzufügen, wenn dieser durch einen DataBrew Job oder eine interaktive Sitzung geladen wird.
Beispiel
Betrachten wir ein Beispiel für die Definition eines dynamischen Datensatzes mithilfe von Parametern in der DataBrew Konsole. Gehen Sie in diesem Beispiel davon aus, dass die Eingabedaten regelmäßig unter Verwendung von Speicherorten wie diesen in einen S3-Bucket geschrieben werden:
s3://databrew-dynamic-datasets/new-cases/UR/daily-report-2021-03-30.csvs3://databrew-dynamic-datasets/new-cases/UR/daily-report-2021-03-31.csvs3://databrew-dynamic-datasets/new-cases/US/daily-report-2021-03-30.csvs3://databrew-dynamic-datasets/new-cases/US/daily-report-2021-03-31.csv
Hier gibt es zwei dynamische Teile: einen Ländercode, wie in den USA, und ein Datum im Dateinamen wie 2021-03-30. Hier können Sie dasselbe Bereinigungsrezept für alle Dateien anwenden. Nehmen wir an, Sie möchten Ihre Bereinigungsaufgabe täglich durchführen. Im Folgenden erfahren Sie, wie Sie einen parametrisierten Pfad für dieses Szenario definieren können:
-
Navigieren Sie zu einer bestimmten Datei.
-
Wählen Sie dann einen variierenden Teil aus, z. B. ein Datum, und ersetzen Sie ihn durch einen Parameter. Ersetzen Sie in diesem Fall ein Datum.
-
Öffnen Sie das Kontextmenü (Rechtsklick) für Benutzerdefinierten Parameter erstellen und legen Sie dessen Eigenschaften fest:
Name: Berichtsdatum
Typ: Datum
Datumsformat: yyyy- MM-dd (ausgewählt aus den vordefinierten Formaten)
Bedingungen (Zeitraum): Letzte 24 Stunden
Als Spalte hinzufügen: true (aktiviert)
Behalten Sie die Standardwerte für andere Felder bei.
-
Wählen Sie Erstellen aus.
Danach sehen Sie den aktualisierten Pfad wie im folgenden Screenshot.
Jetzt können Sie dasselbe für den Ländercode tun und ihn wie folgt parametrisieren:
Name: Landesvorwahl
Typ: Zeichenfolge
Als Spalte hinzufügen: wahr (aktiviert)
Sie müssen keine Bedingungen angeben, wenn alle Werte relevant sind. In dem new-cases Ordner haben wir beispielsweise nur Unterordner mit Länderkennzahlen, sodass keine Bedingungen erforderlich sind. Wenn Sie andere Ordner ausschließen möchten, könnten Sie die folgende Bedingung verwenden.
Bei diesem Ansatz werden die Unterordner neuer Fälle auf zwei lateinische Großbuchstaben beschränkt.
Nach dieser Parametrisierung haben Sie nur noch passende Dateien in unserem Datensatz und können Datensatz erstellen wählen.
Anmerkung
Wenn Sie relative Zeitbereiche in Bedingungen verwenden, werden die Zeitbereiche beim Laden des Datensatzes ausgewertet. Dies gilt unabhängig davon, ob es sich um vordefinierte Zeitbereiche wie „Letzte 24 Stunden“ oder um benutzerdefinierte Zeitbereiche wie „vor 5 Tagen“ handelt. Dieser Bewertungsansatz gilt unabhängig davon, ob der Datensatz während der Initialisierung einer interaktiven Sitzung oder während eines Jobstarts geladen wird.
Nachdem Sie „Datensatz erstellen“ ausgewählt haben, ist Ihr dynamischer Datensatz einsatzbereit. Sie können es beispielsweise zunächst verwenden, um ein Projekt zu erstellen und in einer interaktiven DataBrew Sitzung ein Bereinigungsrezept zu definieren. Dann könnten Sie einen Job erstellen, der für die tägliche Ausführung geplant ist. Bei diesem Job wird das Bereinigungsrezept möglicherweise auf die Datensatzdateien angewendet, die zu dem Zeitpunkt, zu dem der Job gestartet wird, die Bedingungen Ihrer Parameter erfüllen.
Unterstützte Bedingungen für dynamische Datensätze
Sie können Bedingungen verwenden, um übereinstimmende S3-Dateien anhand von Parametern oder dem Datumsattribut der letzten Änderung zu filtern.
Im Folgenden finden Sie eine Liste der unterstützten Bedingungen für jeden Parametertyp.
| Name im DataBrew SDK | SDK-Synonyme | Name in der DataBrew Konsole | Description |
|---|---|---|---|
|
ist |
eq, == |
Ist genau |
Der Wert des Parameters entspricht dem Wert, der in der Bedingung angegeben wurde. |
|
ist nicht |
nicht eq,! = |
Ist nicht |
Der Wert des Parameters entspricht nicht dem Wert, der in der Bedingung angegeben wurde. |
|
enthält |
Enthält |
Der Zeichenkettenwert des Parameters enthält den Wert, der in der Bedingung bereitgestellt wurde. |
|
|
nicht enthält |
Enthält nicht |
Der Zeichenkettenwert des Parameters enthält nicht den Wert, der in der Bedingung angegeben wurde. |
|
|
starts_with |
Beginnt mit |
Der Zeichenkettenwert des Parameters beginnt mit dem Wert, der in der Bedingung angegeben wurde. |
|
|
nicht starts_with |
Beginnt nicht mit |
Der Zeichenkettenwert des Parameters beginnt nicht mit dem Wert, der in der Bedingung angegeben wurde. |
|
|
ends_with |
Endet mit |
Der Zeichenkettenwert des Parameters endet mit dem Wert, der in der Bedingung angegeben wurde. |
|
|
nicht ends_with |
Endet nicht mit |
Der Zeichenkettenwert des Parameters endet nicht mit dem Wert, der in der Bedingung angegeben wurde. |
|
|
Streichhölzer |
Entspricht |
Der Wert des Parameters entspricht dem in der Bedingung angegebenen regulären Ausdruck. |
|
|
stimmt nicht überein |
Stimmt nicht überein |
Der Wert des Parameters entspricht nicht dem in der Bedingung angegebenen regulären Ausdruck. |
Anmerkung
Bei allen Bedingungen für String-Parameter wird die Groß- und Kleinschreibung berücksichtigt. Wenn Sie sich nicht sicher sind, welche Groß- und Kleinschreibung in einem S3-Pfad verwendet wird, können Sie die Bedingung „entspricht“ mit einem regulären Ausdruckswert verwenden, der mit (?i) beginnt. Dies führt zu einem Vergleich ohne Berücksichtigung der Groß- und Kleinschreibung.
Nehmen wir zum Beispiel an, dass Ihr Zeichenkettenparameter mitabc, aber auch mit Abc oder ABC beginnen soll. In diesem Fall können Sie die Bedingung „entspricht“ (?i)^abc als Bedingungswert verwenden.
| Name im DataBrew SDK | SDK-Synonyme | Name in der DataBrew Konsole | Description |
|---|---|---|---|
|
ist |
eq, == |
Ist genau |
Der Wert des Parameters entspricht dem Wert, der in der Bedingung angegeben wurde. |
|
ist nicht |
nicht eq,! = |
Ist nicht |
Der Wert des Parameters entspricht nicht dem Wert, der in der Bedingung angegeben wurde. |
|
kleiner_als |
lt, < |
Kleiner als |
Der numerische Wert des Parameters ist kleiner als der Wert, der in der Bedingung angegeben wurde. |
|
less_than_equal |
spät, <= |
Kleiner als oder gleich |
Der numerische Wert des Parameters ist kleiner oder gleich dem Wert, der in der Bedingung angegeben wurde. |
|
größer_als |
gt, > |
Größer als |
Der numerische Wert des Parameters ist größer als der Wert, der in der Bedingung angegeben wurde. |
|
greater_than_equal |
erhalten, => |
Größer als oder gleich |
Der numerische Wert des Parameters ist größer oder gleich dem Wert, der in der Bedingung angegeben wurde. |
| Name im DataBrew SDK | Name in der DataBrew Konsole | Format für Bedingungswerte (SDK) | Description |
|---|---|---|---|
|
after |
Starten |
ISO 8601-Datumsformat wie oder |
Der Wert des Datumsparameters liegt nach dem in der Bedingung angegebenen Datum. |
|
before |
Ende |
ISO 8601-Datumsformat wie oder |
Der Wert des Datumsparameters liegt vor dem in der Bedingung angegebenen Datum. |
|
relative_after |
Start (relativ) |
Positive oder negative Anzahl von Zeiteinheiten, wie |
Der Wert des Datumsparameters liegt nach dem in der Bedingung angegebenen relativen Datum. Relative Daten werden ausgewertet, wenn der Datensatz geladen wird, entweder wenn eine interaktive Sitzung initialisiert wird oder wenn ein zugehöriger Job gestartet wird. Dies ist der Moment, der in den Beispielen „jetzt“ genannt wird. |
|
relative_before |
Ende (relativ) |
Positive oder negative Anzahl von Zeiteinheiten, wie |
Der Wert des Datumsparameters liegt vor dem in der Bedingung angegebenen relativen Datum. Relative Daten werden ausgewertet, wenn der Datensatz geladen wird, entweder wenn eine interaktive Sitzung initialisiert wird oder wenn ein zugehöriger Job gestartet wird. Dies ist der Moment, der in den Beispielen „jetzt“ genannt wird. |
Wenn Sie das SDK verwenden, geben Sie relative Daten im folgenden Format an:±{number_of_time_units}{time_unit}. Sie können diese Zeiteinheiten verwenden:
-1h (vor 1 Stunde)
+2d (in 2 Tagen)
-120m (vor 120 Minuten)
5000s (in 5.000 Sekunden von jetzt an)
-3w (vor 3 Wochen)
+4M (in 4 Monaten)
-1y (vor 1 Jahr)
Relative Daten werden ausgewertet, wenn der Datensatz geladen wird, entweder wenn eine interaktive Sitzung initialisiert wird oder wenn ein zugehöriger Job gestartet wird. Dies ist der Moment, der in den vorangegangenen Beispielen „jetzt“ genannt wird.
Einstellungen für dynamische Datensätze konfigurieren
Neben der Bereitstellung eines parametrisierten S3-Pfads können Sie auch andere Einstellungen für Datensätze mit mehreren Dateien konfigurieren. Diese Einstellungen filtern S3-Dateien nach ihrem letzten Änderungsdatum und begrenzen die Anzahl der Dateien.
Ähnlich wie beim Einstellen eines Datumsparameters in einem Pfad können Sie einen Zeitraum definieren, in dem passende Dateien aktualisiert wurden, und nur diese Dateien in Ihren Datensatz aufnehmen. Sie können diese Bereiche entweder mit absoluten Daten wie „30. März 2021“ oder mit relativen Zeiträumen wie „Letzte 24 Stunden“ definieren.
Um die Anzahl der passenden Dateien zu begrenzen, wählen Sie eine Anzahl von Dateien aus, die größer als 0 ist, und wählen Sie aus, ob Sie die neuesten oder die ältesten übereinstimmenden Dateien verwenden möchten.