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:
|
- 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
oderDATE
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
- Tabelle ohne Partitionierung
- Zieltabelle:
mytable
.
- Zieltabelle:
- Nach Aufnahmezeit partitionierte Tabelle
- Zieltabelle:
mytable$YYYYMMDD
. - Beachten Sie, dass Minuten nicht angegeben werden können.
- Zieltabelle:
- Nach Spalte partitionierte Tabelle
- Zieltabelle:
mytable
. - Geben Sie die Partitionierungsspalte beim Erstellen des Schemas der Tabelle als Spalte
TIMESTAMP
oderDATE
an.
- Zieltabelle:
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
- Mehr zum Einrichten einer Amazon S3-Übertragung
- Weitere Informationen zum BigQuery Data Transfer Service