Die Vorlage "Bulk-Löschen in Firestore" ist eine Pipeline, die Entitäten aus Firestore mit einer gegebenen GQL-Abfrage einliest und anschließend alle übereinstimmenden Entitäten im ausgewählten Zielprojekt löscht. Die Pipeline kann optional die JSON-codierten Firestore-Entitäten an Ihre JavaScript-UDF übergeben, mit der Sie Entitäten durch Zurückgeben von Nullwerten herausfiltern können.
Pipelineanforderungen
- Firestore muss vor dem Ausführen der Vorlage im Projekt eingerichtet werden.
- Wenn das Dataflow-Worker-Dienstkonto aus separaten Firestore-Instanzen gelesen und gelöscht wird, muss es berechtigt sein, aus einer Instanz zu lesen und aus der anderen Instanz zu löschen.
- Datenbankeinträge müssen in der Firestore-Instanz aktiviert sein.
Vorlagenparameter
Parameter | Beschreibung |
---|---|
firestoreReadGqlQuery |
GQL-Abfrage, die festlegt, welche Entitäten gelöscht werden sollen. Die Verwendung einer ausschließlich schlüsselbasierten Abfrage kann die Leistung verbessern. Beispiel: "SELECT __key__ FROM MyKind". |
firestoreReadProjectId |
Projekt-ID der Firestore-Instanz, aus der Entitäten gelesen werden sollen (mithilfe Ihrer GQL-Abfrage), die für den Abgleich verwendet werden. |
firestoreDeleteProjectId |
Projekt-ID der Firestore-Instanz, aus der übereinstimmende Entitäten gelöscht werden sollen. Dies kann mit firestoreReadProjectId identisch sein, wenn Sie innerhalb derselben Firestore-Instanz lesen und löschen möchten. |
firestoreReadNamespace |
(Optional) Namespace der angeforderten Entitäten. Als "" für den Standard-Namespace festlegen. |
firestoreHintNumWorkers |
(Optional) Hinweis für die erwartete Anzahl von Workern im Schritt zur Drosselung der Erhöhung in Firestore. Standardwert ist 500 . |
javascriptTextTransformGcsPath |
Optional:
Der Cloud Storage-URI der Datei .js , in der die benutzerdefinierte JavaScript-Funktion (UDF) definiert wird, die Sie verwenden möchten. Beispiel: gs://my-bucket/my-udfs/my_file.js
|
javascriptTextTransformFunctionName |
Optional:
Der Name der benutzerdefinierten JavaScript-Funktion, die Sie verwenden möchten.
Wenn Ihre JavaScript-Funktion beispielsweise myTransform(inJson) { /*...do stuff...*/ } ist, lautet der Funktionsname myTransform . Beispiele für JavaScript-UDFs finden Sie unter UDF-Beispiele.
Wenn diese Funktion für eine bestimmte Firestore-Entität den Wert "nicht definiert" oder "Null" zurückgibt, wird diese Entität nicht gelöscht. |
Benutzerdefinierte Funktion
Optional können Sie diese Vorlage erweitern, indem Sie eine benutzerdefinierte Funktion (UDF) schreiben. Die Vorlage ruft die UDF für jedes Eingabeelement auf. Nutzlasten von Elementen werden als JSON-Strings serialisiert. Weitere Informationen finden Sie unter Benutzerdefinierte Funktionen für Dataflow-Vorlagen erstellen.
Funktionsspezifikation
UDFs haben die folgende Spezifikation:
- Eingabe: Eine Firestore-Entität, die als JSON-String serialisiert ist.
- Ausgabe: Wenn Sie die Entität beibehalten und nicht löschen möchten, geben Sie
null
oderundefined
zurück. Andernfalls geben Sie die ursprüngliche Entität zum Löschen zurück.
Führen Sie die Vorlage aus.
Console
- Rufen Sie die Dataflow-Seite Job aus Vorlage erstellen auf. Zur Seite "Job aus Vorlage erstellen“
- Geben Sie im Feld Jobname einen eindeutigen Jobnamen ein.
- Optional: Wählen Sie für Regionaler Endpunkt einen Wert aus dem Drop-down-Menü aus. Die Standardregion ist
us-central1
.Eine Liste der Regionen, in denen Sie einen Dataflow-Job ausführen können, finden Sie unter Dataflow-Standorte.
- Wählen Sie im Drop-down-Menü Dataflow-Vorlage die Option the Bulk Delete Entities in Firestore templateaus.
- Geben Sie Ihre Parameterwerte in die Parameterfelder ein.
- Klicken Sie auf Job ausführen.
gcloud
Führen Sie die Vorlage in der Shell oder im Terminal aus:
gcloud dataflow jobs run JOB_NAME \ --gcs-location gs://dataflow-templates-REGION_NAME/VERSION/Firestore_to_Firestore_Delete \ --region REGION_NAME \ --parameters \ firestoreReadGqlQuery="GQL_QUERY",\ firestoreReadProjectId=FIRESTORE_READ_AND_DELETE_PROJECT_ID,\ firestoreDeleteProjectId=FIRESTORE_READ_AND_DELETE_PROJECT_ID
Ersetzen Sie dabei Folgendes:
JOB_NAME
: ein eindeutiger Jobname Ihrer WahlREGION_NAME
: die Region, in der Sie Ihren Dataflow-Job bereitstellen möchten, z. B.us-central1
VERSION
: Die Version der Vorlage, die Sie verwenden möchtenSie können die folgenden Werte verwenden:
latest
zur Verwendung der neuesten Version der Vorlage, die im nicht datierten übergeordneten Ordner im Bucket verfügbar ist: gs://dataflow-templates-REGION_NAME/latest/- Den Versionsnamen wie
2023-09-12-00_RC00
, um eine bestimmte Version der Vorlage zu verwenden. Diese ist verschachtelt im jeweiligen datierten übergeordneten Ordner im Bucket enthalten: gs://dataflow-templates-REGION_NAME/.
GQL_QUERY
: die Abfrage, mit der Sie Entitäten zum Löschen auswählenFIRESTORE_READ_AND_DELETE_PROJECT_ID
: die Projekt-ID Ihrer Firestore-Instanz. In diesem Beispiel werden Lese- und Löschvorgänge in derselben Firestore-Instanz ausgeführt.
API
Senden Sie eine HTTP-POST-Anfrage, um die Vorlage mithilfe der REST API auszuführen. Weitere Informationen zur API und ihren Autorisierungsbereichen finden Sie unter projects.templates.launch
.
POST https://dataflow.googleapis.com/v1b3/projects/PROJECT_ID/locations/LOCATION/templates:launch?gcsPath=gs://dataflow-templates-LOCATION/VERSION/Firestore_to_Firestore_Delete { "jobName": "JOB_NAME", "parameters": { "firestoreReadGqlQuery": "GQL_QUERY", "firestoreReadProjectId": "FIRESTORE_READ_AND_DELETE_PROJECT_ID", "firestoreDeleteProjectId": "FIRESTORE_READ_AND_DELETE_PROJECT_ID" }, "environment": { "zone": "us-central1-f" } }
Ersetzen Sie dabei Folgendes:
PROJECT_ID
: die ID des Google Cloud-Projekts, in dem Sie den Dataflow-Job ausführen möchtenJOB_NAME
: ein eindeutiger Jobname Ihrer WahlLOCATION
: die Region, in der Sie Ihren Dataflow-Job bereitstellen möchten, z. B.us-central1
VERSION
: Die Version der Vorlage, die Sie verwenden möchtenSie können die folgenden Werte verwenden:
latest
zur Verwendung der neuesten Version der Vorlage, die im nicht datierten übergeordneten Ordner im Bucket verfügbar ist: gs://dataflow-templates-REGION_NAME/latest/- Den Versionsnamen wie
2023-09-12-00_RC00
, um eine bestimmte Version der Vorlage zu verwenden. Diese ist verschachtelt im jeweiligen datierten übergeordneten Ordner im Bucket enthalten: gs://dataflow-templates-REGION_NAME/.
GQL_QUERY
: die Abfrage, mit der Sie Entitäten zum Löschen auswählenFIRESTORE_READ_AND_DELETE_PROJECT_ID
: die Projekt-ID Ihrer Firestore-Instanz. In diesem Beispiel werden Lese- und Löschvorgänge in derselben Firestore-Instanz ausgeführt.
Nächste Schritte
- Dataflow-Vorlagen
- Sehen Sie sich die Liste der von Google bereitgestellten Vorlagen an.