Laufzeitparameter bei Amazon S3-Übertragungen

Wenn Sie eine Datenübertragung in Cloud Storage, Azure Blob Storage oder Amazon Simple Storage Service (Amazon S3) einrichten, können Sie den URI (oder Datenpfad) und die Zieltabelle parametrisieren. Mit der Parametrisierung können Sie Daten aus Buckets laden, die nach Datum geordnet sind. Diese Parameter werden als Laufzeitparameter bezeichnet, um sie von Abfrageparametern zu unterscheiden.

Wenn Sie bei einer Übertragung Laufzeitparameter verwenden, können Sie:

  • Angeben, wie Sie die Zieltabelle partitionieren möchten
  • Dateien abrufen, die mit einem bestimmten Datum übereinstimmen

Verfügbare Laufzeitparameter

Beim Einrichten einer Cloud Storage-, Blob Storage- oder Amazon S3-Übertragung können Sie mithilfe von Laufzeitparametern angeben, wie Sie die Zieltabelle partitionieren möchten.

Parameter Vorlagentyp Wert
run_time Formatierter Zeitstempel Wird in UTC-Zeit per Zeitplan dargestellt. Bei regelmäßig geplanten Übertragungen steht run_time für die beabsichtigte Ausführungszeit. Wenn für die geplante Übertragung beispielsweise "alle 24 Stunden" eingestellt ist, beträgt die run_time-Differenz zwischen zwei aufeinanderfolgenden Abfragen exakt 24 Stunden, auch wenn die jeweilige Ausführungszeit dabei geringfügig variieren kann.

Siehe hierzu TransferRun.runTime.
run_date Datumsstring Das Datum des Parameters run_time im Format %Y%m%d, zum Beispiel 20180101. Dieses Format ist kompatibel mit nach Aufnahmezeit partitionierten Tabellen.

Vorlagensystem

Cloud Storage-, Blob-Storage- und Amazon S3-Übertragungen unterstützen Laufzeitparameter im Zieltabellennamen mithilfe einer Vorlagensyntax.

Parameter der Vorlagensyntax

Die Vorlagensyntax unterstützt grundlegende Stringvorlagen und Zeitverschiebungen. Die Parameter werden in den folgenden Formaten referenziert:

  • {run_date}
  • {run_time[+\-offset]|"time_format"}
Parameter Zweck
run_date Dieser Parameter wird durch das Datum im Format YYYYMMDD ersetzt.
run_time Dieser Parameter unterstützt folgende Attribute:


offset
Die Zeitverschiebung in Stunden (h), Minuten (m) und Sekunden (s) in dieser Reihenfolge.
Tage (d) werden nicht unterstützt.
Dezimalzahlen sind zulässig, zum Beispiel: 1.5h.

time_format
Ein Formatstring. Die gebräuchlichsten Formatierungsparameter sind Jahre (%Y), Monate (%m) und Tage (%d).
Bei partitionierten Tabellen ist YYYYMMDD das erforderliche Suffix. Dies entspricht "%Y%m%d".

Weitere Informationen zum Formatieren von Datum/Uhrzeit-Elementen finden Sie hier.

Hinweise zur Syntax:
  • Zwischen run_time, offset und time_format ist kein Leerzeichen zulässig.
  • Wenn Sie im String geschweifte Klammern für die Anzeige verwenden möchten, maskieren Sie sie: '\{' and '\}'.
  • Wenn Sie in "time_format" Anführungszeichen oder senkrechte Striche für die Anzeige verwenden möchten, wie z. B. "YYYY|MM|DD", maskieren Sie sie im Formatstring: '\"' oder '\|'.

Beispiele für Parametervorlagen

In den folgenden Beispielen wird gezeigt, wie Zieltabellennamen mit unterschiedlichen Zeitformaten angegeben werden und wie die Laufzeit verschoben wird.
run_time (UTC) Vorlagenparameter Name der Ausgabezieltabelle
2018-02-15 00:00:00 mytable mytable
2018-02-15 00:00:00 mytable_{run_time|"%Y%m%d"} mytable_20180215
2018-02-15 00:00:00 mytable_{run_time+25h|"%Y%m%d"} mytable_20180216
2018-02-15 00:00:00 mytable_{run_time-1h|"%Y%m%d"} mytable_20180214
2018-02-15 00:00:00 mytable_{run_time+1.5h|"%Y%m%d%H"}
oder
mytable_{run_time+90m|"%Y%m%d%H"}
mytable_2018021501
2018-02-15 00:00:00 {run_time+97s|"%Y%m%d"}_mytable_{run_time+97s|"%H%M%S"} 20180215_mytable_000137

Optionen für die Partitionierung

In BigQuery gibt es zwei Arten von partitionierten Tabellen:

  • Tabellen, die nach Aufnahmezeit partitioniert sind. Bei Cloud Storage-, Blob Storage- und Amazon S3-Übertragungen ist der Aufnahmezeitpunkt der Ausführungszeitpunkt der Übertragung.
  • Tabellen, die auf Grundlage einer Spalte partitioniert sind. Die Spalte muss vom Typ TIMESTAMP oder DATE sein.

Wenn die Zieltabelle nach einer Spalte partitioniert ist, identifizieren Sie die Partitionierungsspalte, wenn Sie die Zieltabelle erstellen und ihr Schema angeben. Weitere Informationen zum Erstellen von spaltenbasierten partitionierten Tabellen finden Sie unter Mit Datum/Zeitstempel partitionierte Tabellen erstellen und verwenden.

Beispiele für die Partitionierung

Hinweise zur Verwendung von Parametern

  • Wenn Sie Ihre Daten beruhend auf Ihrer lokalen Zeitzone partitionieren, müssen Sie die Stundenverschiebung gegenüber UTC manuell berechnen. Dazu verwenden Sie den Verschiebungsmechanismus in der Vorlagensyntax.
  • In Parametern können keine Minuten angegeben werden.
  • Die Verwendung von Platzhaltern für den URI oder Datenpfad in Kombination mit Parametern im Zieltabellennamen ist zulässig.

Beispiele für Laufzeitparameter

Die folgenden Beispiele zeigen, wie das Platzhalterzeichen und die Parameter für gängige Anwendungsfälle kombiniert werden können. Angenommen, der Name der Tabelle lautet mytable und die run_time ist für alle Beispiele 2018-02-15 00:00:00 (UTC).

Daten an eine nicht partitionierte Tabelle übertragen

Dieser Anwendungsfall gilt für das Laden neuer Dateien aus einem Cloud Storage-, Blob Storage- oder Amazon S3-Bucket in eine nicht partitionierte Tabelle. In diesem Beispiel werden ein Platzhalter im URI oder Datenpfad und eine Ad-hoc-Aktualisierungsübertragung verwendet, um neue Dateien abzurufen.

Datenquelle Quell-URI oder Datenpfad Name der Zieltabelle
Cloud Storage gs://bucket/*.csv mytable
Amazon S3 s3://bucket/*.csv mytable
Blob-Speicher *.csv mytable

Snapshots aller Daten in eine nach Aufnahmezeit partitionierte Tabelle laden

In diesem Fall werden alle Daten im angegebenen URI oder Datenpfad an eine Tabelle übertragen, die nach dem aktuellen Datum partitioniert ist. Bei einer Aktualisierungsübertragung werden mit dieser Konfiguration seit dem letzten Ladevorgang hinzugefügte Dateien übernommen und einer bestimmten Partition hinzugefügt.

Datenquelle Quell-URI oder Datenpfad Name der parametrisierten Zieltabelle Name der geprüften Zieltabelle
Cloud Storage gs://bucket/*.csv mytable${run_time|"%Y%m%d"} mytable$20180215
Amazon S3 s3://bucket/*.csv mytable${run_time|"%Y%m%d"} mytable$20180215
Blob-Speicher *.csv mytable${run_time|"%Y%m%d"} mytable$20180215

Dieser Anwendungsfall überträgt die aktuellen Daten in eine Tabelle, die nach dem aktuellen Datum partitioniert ist. Dieses Beispiel gilt auch für eine Aktualisierungsübertragung, bei der neu hinzugefügte Dateien mit einem bestimmten Datum abgerufen und in die entsprechende Partition geladen werden.

Datenquelle Parametrisierter URI oder Datenpfad Name der parametrisierten Zieltabelle Ausgewerteter URI oder Datenpfad Name der geprüften Zieltabelle
Cloud Storage gs://bucket/events-{run_time|"%Y%m%d"}/*.csv mytable${run_time|"%Y%m%d"} gs://bucket/events-20180215/*.csv mytable$20180215
Amazon S3 s3://bucket/events-{run_time|"%Y%m%d"}/*.csv mytable${run_time|"%Y%m%d"} s3://bucket/events-20180215/*.csv mytable$20180215
Blob-Speicher events-{run_time|"%Y%m%d"}/*.csv mytable${run_time|"%Y%m%d"} events-20180215/*.csv mytable$20180215

Nächste Schritte