Plantilla de eliminación masiva de Datastore [Obsoleta]

Esta plantilla está obsoleta y se eliminará en el tercer trimestre del 2023. Migra a la plantilla Eliminación masiva de Firestore .

La plantilla de eliminación masiva de Datastore es una canalización que lee entidades de Datastore con una consulta GQL determinada y, a continuación, elimina todas las entidades coincidentes del proyecto de destino seleccionado. La canalización puede transferir de forma opcional las entidades de Datastore codificadas en JSON a tu función definida por el usuario de JavaScript, que puedes usar para filtrar entidades devolviendo valores nulos.

Requisitos del flujo de procesamiento

  • Debes configurar Datastore en el proyecto antes de ejecutar la plantilla.
  • Si se leen y eliminan datos de instancias de Datastore 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 Datastore.

Parámetros de plantilla

Parámetro Descripción
datastoreReadGqlQuery 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".
datastoreReadProjectId ID del proyecto de la instancia de Datastore desde la que quieres leer las entidades (mediante tu consulta de GQL) que se usan para la coincidencia.
datastoreDeleteProjectId ID del proyecto de la instancia de Datastore desde la que se van a eliminar las entidades coincidentes. Puede ser la misma que datastoreReadProjectId si quieres leer y eliminar datos en la misma instancia de Datastore.
datastoreReadNamespace (Opcional) Espacio de nombres de las entidades solicitadas. Asigna el valor "" al espacio de nombres predeterminado.
datastoreHintNumWorkers (Opcional) Sugerencia para el número esperado de trabajadores en el paso de limitación de la aceleración de Datastore. 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 Datastore determinada, esa entidad no se elimina.

Ejecutar la plantilla

Consola

  1. Ve a la página Crear tarea a partir de plantilla de Dataflow.
  2. Ir a Crear tarea a partir de plantilla
  3. En el campo Nombre de la tarea, introduce un nombre único.
  4. 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.

  5. En el menú desplegable Plantilla de flujo de datos, seleccione the Bulk Delete Entities in Datastore template.
  6. En los campos de parámetros proporcionados, introduzca los valores de los parámetros.
  7. 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/Datastore_to_Datastore_Delete \
    --region REGION_NAME \
    --parameters \
datastoreReadGqlQuery="GQL_QUERY",\
datastoreReadProjectId=DATASTORE_READ_AND_DELETE_PROJECT_ID,\
datastoreDeleteProjectId=DATASTORE_READ_AND_DELETE_PROJECT_ID

Haz los cambios siguientes:

  • JOB_NAME: un nombre de trabajo único que elijas
  • REGION_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 usar

    Puedes 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 eliminar
  • DATASTORE_READ_AND_DELETE_PROJECT_ID: el ID de proyecto de tu instancia de Datastore. En este ejemplo se leen y se eliminan datos de la misma instancia de Datastore.

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/Datastore_to_Datastore_Delete
{
   "jobName": "JOB_NAME",
   "parameters": {
       "datastoreReadGqlQuery": "GQL_QUERY",
       "datastoreReadProjectId": "DATASTORE_READ_AND_DELETE_PROJECT_ID",
       "datastoreDeleteProjectId": "DATASTORE_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 Dataflow
  • JOB_NAME: un nombre de trabajo único que elijas
  • LOCATION: 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 usar

    Puedes 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 eliminar
  • DATASTORE_READ_AND_DELETE_PROJECT_ID: el ID de proyecto de tu instancia de Datastore. En este ejemplo se leen y se eliminan datos de la misma instancia de Datastore.

Siguientes pasos