La plantilla de eliminación masiva de Firestore es una canalización que lee entidades de Firestore con una consulta GQL determinada y, a continuación, elimina todas las entidades coincidentes del proyecto de destino seleccionado. El flujo de trabajo puede transferir de forma opcional las entidades de Firestore codificadas en JSON a tu función definida por el usuario de JavaScript, que puedes usar para excluir entidades devolviendo valores nulos.
Requisitos del flujo de procesamiento
- Debes configurar Firestore en el proyecto antes de ejecutar la plantilla.
- Si se leen y eliminan datos de instancias de Firestore independientes, la cuenta de servicio de trabajador de Dataflow debe tener permiso para leer de una instancia y eliminar datos de la otra.
- La opción Escrituras en la base de datos debe estar habilitada en la instancia de Firestore.
Parámetros de plantilla
Parámetro | Descripción |
---|---|
firestoreReadGqlQuery |
Consulta de GQL que especifica qué entidades se deben eliminar. Usar una consulta para obtener solo las claves puede mejorar el rendimiento. Por ejemplo: "SELECT __key__ FROM MyKind". |
firestoreReadProjectId |
ID de proyecto de la instancia de Firestore desde la que quieres leer las entidades (mediante tu consulta de GQL) que se usan para la coincidencia. |
firestoreDeleteProjectId |
ID del proyecto de la instancia de Firestore desde la que se van a eliminar las entidades coincidentes. Puede ser la misma que firestoreReadProjectId si quieres leer y eliminar datos en la misma instancia de Firestore. |
firestoreReadNamespace |
(Opcional) Espacio de nombres de las entidades solicitadas. Asigna el valor "" al espacio de nombres predeterminado. |
firestoreHintNumWorkers |
(Opcional) Sugerencia para el número esperado de trabajadores en el paso de limitación de aumento gradual de Firestore. El valor predeterminado es 500 (ADMITE VALORES NULL). |
javascriptTextTransformGcsPath |
(Opcional)
URI de Cloud Storage del archivo .js que define la función de JavaScript definida por el usuario (UDF) que quieres usar. Por ejemplo, gs://my-bucket/my-udfs/my_file.js .
|
javascriptTextTransformFunctionName |
(Opcional)
Nombre de la función definida por el usuario (UDF) de JavaScript que quieras usar.
Por ejemplo, si el código de tu función de JavaScript es myTransform(inJson) { /*...do stuff...*/ } , el nombre de la función es myTransform . Para ver ejemplos de UDFs de JavaScript, consulta Ejemplos de UDFs.
Si esta función devuelve el valor "undefined" o "null" para
una entidad de Firestore determinada, esa entidad no se elimina. |
Función definida por el usuario
También puedes ampliar esta plantilla escribiendo una función definida por el usuario (UDF). La plantilla llama a la función definida por el usuario para cada elemento de entrada. Las cargas útiles de los elementos se serializan como cadenas JSON. Para obtener más información, consulta el artículo sobre cómo crear funciones definidas por el usuario para plantillas de Dataflow.
Especificación de la función
La función definida por el usuario tiene las siguientes especificaciones:
- Entrada: una entidad de Firestore, serializada como una cadena JSON.
- Salida: si quieres conservar la entidad y no eliminarla,
devuelve
null
oundefined
. De lo contrario, devuelve la entidad original para eliminarla.
Ejecutar la plantilla
Consola
- Ve a la página Crear tarea a partir de plantilla de Dataflow. Ir a Crear tarea a partir de plantilla
- En el campo Nombre de la tarea, introduce un nombre único.
- Opcional: En Endpoint regional, seleccione un valor en el menú desplegable. La región predeterminada es
us-central1
.Para ver una lista de las regiones en las que puedes ejecutar una tarea de Dataflow, consulta Ubicaciones de Dataflow.
- En el menú desplegable Plantilla de flujo de datos, seleccione the Bulk Delete Entities in Firestore template.
- En los campos de parámetros proporcionados, introduzca los valores de los parámetros.
- Haz clic en Ejecutar trabajo.
gcloud
En tu shell o terminal, ejecuta la plantilla:
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
Haz los cambios siguientes:
JOB_NAME
: un nombre de trabajo único que elijasREGION_NAME
: la región en la que quieras desplegar tu trabajo de Dataflow. Por ejemplo,us-central1
VERSION
: la versión de la plantilla que quieres usarPuedes usar los siguientes valores:
latest
para usar la última versión de la plantilla, que está disponible en la carpeta principal sin fecha del contenedor: gs://dataflow-templates-REGION_NAME/latest/- el nombre de la versión, como
2023-09-12-00_RC00
, para usar una versión específica de la plantilla, que se encuentra anidada en la carpeta principal correspondiente con la fecha en el bucket: gs://dataflow-templates-REGION_NAME/
GQL_QUERY
: la consulta que usarás para buscar las entidades que quieres eliminarFIRESTORE_READ_AND_DELETE_PROJECT_ID
: el ID de proyecto de tu instancia de Firestore. En este ejemplo se lee y se elimina información de la misma instancia de Firestore.
API
Para ejecutar la plantilla mediante la API REST, envía una solicitud HTTP POST. Para obtener más información sobre la API y sus ámbitos de autorización, consulta 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" } }
Haz los cambios siguientes:
PROJECT_ID
: el ID del proyecto Google Cloud en el que quieres ejecutar la tarea de DataflowJOB_NAME
: un nombre de trabajo único que elijasLOCATION
: la región en la que quieras desplegar tu trabajo de Dataflow. Por ejemplo,us-central1
VERSION
: la versión de la plantilla que quieres usarPuedes usar los siguientes valores:
latest
para usar la última versión de la plantilla, que está disponible en la carpeta principal sin fecha del contenedor: gs://dataflow-templates-REGION_NAME/latest/- el nombre de la versión, como
2023-09-12-00_RC00
, para usar una versión específica de la plantilla, que se encuentra anidada en la carpeta principal correspondiente con la fecha en el bucket: gs://dataflow-templates-REGION_NAME/
GQL_QUERY
: la consulta que usarás para buscar las entidades que quieres eliminarFIRESTORE_READ_AND_DELETE_PROJECT_ID
: el ID de proyecto de tu instancia de Firestore. En este ejemplo se lee y se elimina información de la misma instancia de Firestore.
Siguientes pasos
- Consulta información sobre las plantillas de Dataflow.
- Consulta la lista de plantillas proporcionadas por Google.