Transmite de Pub/Sub a BigQuery


En este instructivo, se usa la plantilla Suscripción de Pub/Sub a BigQuery para crear y ejecutar un trabajo de plantilla de Dataflow mediante la consola de Google Cloud o Google Cloud CLI. En el instructivo, se explica un ejemplo de canalización de transmisión que lee mensajes codificados en JSON desde Pub/Sub, usa una función definida por el usuario (UDF) para extender la plantilla de transmisión proporcionada por Google, transforma datos de mensajes con el SDK de Apache Beam y escribe los resultados en una tabla de BigQuery.

La ventaja de este flujo de trabajo es que puedes usar las UDF para extender la plantilla de transmisión que proporciona Google. Si necesitas extraer datos de Pub/Sub y exportarlos a BigQuery, pero no necesitas extender la plantilla, para obtener un flujo de trabajo más simple, usa la función Suscripción de Pub/Sub a BigQuery.

Las canalizaciones de integración de datos y estadísticas de transmisiones usan Pub/Sub para transferir y distribuir datos. Pub/Sub te permite crear sistemas de productores y consumidores de eventos, llamados publicadores y suscriptores. Los publicadores envían eventos al servicio de Pub/Sub de forma asíncrona, y Pub/Sub entrega los eventos a todos los servicios que necesitan reaccionar ante ellos.

Dataflow es un servicio completamente administrado para transformar y enriquecer datos en modos de transmisión (en tiempo real) y por lotes. Proporciona un entorno de desarrollo de canalización simplificado que usa el SDK de Apache Beam para transformar los datos entrantes y generar los datos transformados.

Si deseas escribir mensajes directamente en BigQuery, sin configurar Dataflow para proporcionar la transformación de datos, usa la función suscripción de Pub/Sub a BigQuery.

Objetivos

  • Cree un tema de Pub/Sub.
  • Crea un conjunto de datos de BigQuery con una tabla y un esquema.
  • Usa una plantilla de transmisión proporcionada por Google para transmitir datos desde tu suscripción de Pub/Sub a BigQuery mediante Dataflow.
  • Crea una función definida por el usuario (UDF) para extender la plantilla de transmisión que proporciona Google.

Costos

En este documento, usarás los siguientes componentes facturables de Google Cloud:

  • Dataflow
  • Pub/Sub
  • Cloud Storage
  • Cloud Scheduler
  • BigQuery

Para generar una estimación de costos en función del uso previsto, usa la calculadora de precios. Es posible que los usuarios nuevos de Google Cloud califiquen para obtener una prueba gratuita.

Cuando finalices las tareas que se describen en este documento, puedes borrar los recursos que creaste para evitar que continúe la facturación. Para obtener más información, consulta Cómo realizar una limpieza.

Antes de comenzar

En esta sección, se muestra cómo seleccionar un proyecto, habilitar las APIs y otorgar los roles adecuados a tu cuenta de usuario y a la cuenta de servicio de trabajador.

Console

  1. Accede a tu cuenta de Google Cloud. Si eres nuevo en Google Cloud, crea una cuenta para evaluar el rendimiento de nuestros productos en situaciones reales. Los clientes nuevos también obtienen $300 en créditos gratuitos para ejecutar, probar y, además, implementar cargas de trabajo.
  2. En la página del selector de proyectos de la consola de Google Cloud, selecciona o crea un proyecto de Google Cloud.

    Ir al selector de proyectos

  3. Asegúrate de que la facturación esté habilitada para tu proyecto de Google Cloud.

  4. Habilita las API de Compute Engine, Dataflow, Cloud Logging, BigQuery, Pub/Sub, Cloud Storage, Resource Manager, and Cloud Scheduler.

    Habilita las API

  5. En la página del selector de proyectos de la consola de Google Cloud, selecciona o crea un proyecto de Google Cloud.

    Ir al selector de proyectos

  6. Asegúrate de que la facturación esté habilitada para tu proyecto de Google Cloud.

  7. Habilita las API de Compute Engine, Dataflow, Cloud Logging, BigQuery, Pub/Sub, Cloud Storage, Resource Manager, and Cloud Scheduler.

    Habilita las API

  8. Para completar los pasos de este instructivo, la cuenta de usuario debe tener el rol de usuario de la cuenta de servicio. La cuenta de servicio predeterminada de Compute Engine debe tener los siguientes roles: trabajador de Dataflow, administrador de Dataflow, editor de Pub/Sub. Administrador de objetos de almacenamiento y Editor de datos de BigQuery. Para agregar los roles necesarios en la consola de Google Cloud, sigue estos pasos:

    1. En la consola de Google Cloud, ve a la página IAM.

      Ir a IAM
    2. Elige tu proyecto.
    3. En la fila que contiene tu cuenta de usuario, haz clic en Editar principal y, luego, en Agregar otro rol.
    4. En la lista desplegable, selecciona el rol Usuario de cuenta de servicio.
    5. En la fila que contiene la cuenta de servicio predeterminada de Compute Engine, haz clic en Editar principal y, luego, en Agregar otro rol.
    6. En la lista desplegable, selecciona el rol Trabajador de Dataflow.
    7. Repite los pasos para los roles de Administrador de Dataflow, Editor de Pub/Sub, Administrador de objeto de almacenamiento y Editor de datos de BigQuery y, luego, haz clic en Guardar.

      Para obtener más información sobre cómo otorgar roles, consulta Otorga un rol de IAM mediante la consola.

gcloud

  1. Accede a tu cuenta de Google Cloud. Si eres nuevo en Google Cloud, crea una cuenta para evaluar el rendimiento de nuestros productos en situaciones reales. Los clientes nuevos también obtienen $300 en créditos gratuitos para ejecutar, probar y, además, implementar cargas de trabajo.
  2. Instala Google Cloud CLI.
  3. Para inicializar la CLI de gcloud, ejecuta el siguiente comando:

    gcloud init
  4. Crea o selecciona un proyecto de Google Cloud.

    • Crea un proyecto de Google Cloud:

      gcloud projects create PROJECT_ID

      Reemplaza PROJECT_ID por un nombre para el proyecto de Google Cloud que estás creando.

    • Selecciona el proyecto de Google Cloud que creaste:

      gcloud config set project PROJECT_ID

      Reemplaza PROJECT_ID por el nombre del proyecto de Google Cloud.

  5. Asegúrate de que la facturación esté habilitada para tu proyecto de Google Cloud.

  6. Habilita las APIs de Compute Engine, Dataflow, Cloud Logging, BigQuery, Pub/Sub, Cloud Storage, Resource Manager, and Cloud Scheduler:

    gcloud services enable compute.googleapis.com dataflow.googleapis.com logging.googleapis.com bigquery.googleapis.com pubsub.googleapis.com storage.googleapis.com cloudresourcemanager.googleapis.com cloudscheduler.googleapis.com
  7. Crea credenciales de autenticación locales para tu Cuenta de Google:

    gcloud auth application-default login
  8. Otorga roles a tu Cuenta de Google. Ejecuta el siguiente comando una vez para cada uno de los siguientes roles de IAM: roles/iam.serviceAccountUser

    gcloud projects add-iam-policy-binding PROJECT_ID --member="user:EMAIL_ADDRESS" --role=ROLE
    • Reemplaza PROJECT_ID con el ID del proyecto.
    • Reemplaza EMAIL_ADDRESS por tu dirección de correo electrónico.
    • Reemplaza ROLE por cada rol individual.
  9. Instala Google Cloud CLI.
  10. Para inicializar la CLI de gcloud, ejecuta el siguiente comando:

    gcloud init
  11. Crea o selecciona un proyecto de Google Cloud.

    • Crea un proyecto de Google Cloud:

      gcloud projects create PROJECT_ID

      Reemplaza PROJECT_ID por un nombre para el proyecto de Google Cloud que estás creando.

    • Selecciona el proyecto de Google Cloud que creaste:

      gcloud config set project PROJECT_ID

      Reemplaza PROJECT_ID por el nombre del proyecto de Google Cloud.

  12. Asegúrate de que la facturación esté habilitada para tu proyecto de Google Cloud.

  13. Habilita las APIs de Compute Engine, Dataflow, Cloud Logging, BigQuery, Pub/Sub, Cloud Storage, Resource Manager, and Cloud Scheduler:

    gcloud services enable compute.googleapis.com dataflow.googleapis.com logging.googleapis.com bigquery.googleapis.com pubsub.googleapis.com storage.googleapis.com cloudresourcemanager.googleapis.com cloudscheduler.googleapis.com
  14. Crea credenciales de autenticación locales para tu Cuenta de Google:

    gcloud auth application-default login
  15. Otorga roles a tu Cuenta de Google. Ejecuta el siguiente comando una vez para cada uno de los siguientes roles de IAM: roles/iam.serviceAccountUser

    gcloud projects add-iam-policy-binding PROJECT_ID --member="user:EMAIL_ADDRESS" --role=ROLE
    • Reemplaza PROJECT_ID con el ID del proyecto.
    • Reemplaza EMAIL_ADDRESS por tu dirección de correo electrónico.
    • Reemplaza ROLE por cada rol individual.
  16. Otorga roles a tu cuenta de servicio predeterminada de Compute Engine. Ejecuta el siguiente comando una vez para cada uno de los siguientes roles de IAM:

    • roles/dataflow.admin
    • roles/dataflow.worker
    • roles/storage.admin
    • roles/pubsub.editor
    • roles/bigquery.dataEditor
    gcloud projects add-iam-policy-binding PROJECT_ID --member="serviceAccount:PROJECT_NUMBER-compute@developer.gserviceaccount.com" --role=SERVICE_ACCOUNT_ROLE

    Reemplaza lo siguiente:

    • PROJECT_ID: Es el ID de tu proyecto.
    • PROJECT_NUMBER: Es el número de tu proyecto. Para encontrar el número de tu proyecto, usa el comando gcloud projects describe.
    • SERVICE_ACCOUNT_ROLE: Es cada rol individual.

Crea la fuente y el receptor de ejemplo

En esta sección, se explica cómo crear lo siguiente:

  • Una fuente de transmisión de datos mediante Pub/Sub
  • Un conjunto de datos para cargar los datos en BigQuery

Crea un bucket de Cloud Storage

Primero, crea un bucket de Cloud Storage mediante la consola de Google Cloud o Google Cloud CLI. La canalización de Dataflow usa este bucket como una ubicación de almacenamiento temporal.

Console

  1. En la consola de Google Cloud, ve a la página Buckets de Cloud Storage.

    Ir a Buckets

  2. Haz clic en Crear bucket.

  3. En la página Crear un bucket, en Nombre del bucket, ingresa un nombre que cumpla con los requisitos de nombres de buckets. Los nombres de buckets de Cloud Storage deben ser únicos a nivel global. No selecciones las otras opciones.

  4. Haz clic en Crear.

gcloud

Usa el comando gcloud storage buckets create:

gcloud storage buckets create gs://BUCKET_NAME

Reemplaza BUCKET_NAME por un nombre para tu bucket de Cloud Storage que cumpla con los requisitos de nombres de buckets. Los nombres de buckets de Cloud Storage deben ser únicos a nivel global.

Crea un tema y una suscripción de Pub/Sub

Crea un tema de Pub/Sub y, luego, crea una suscripción a ese tema.

Console

Para crear un tema, completa los siguientes pasos:

  1. En la consola de Google Cloud, ve a la página Temas de Pub/Sub.

    Ir a temas

  2. Haga clic en Crear tema.

  3. En el campo ID de tema, ingresa un ID para tu tema. Si deseas obtener información sobre cómo nombrar un tema, consulta Lineamientos para asignar un nombre a un tema o una suscripción.

  4. Mantén la opción Agregar una suscripción predeterminada. No selecciones las otras opciones.

  5. Haz clic en Crear tema.

gcloud

Para crear un tema, ejecuta el comando gcloud pubsub topics create. Para obtener información sobre cómo asignar un nombre a una suscripción, consulta los Lineamientos para asignar un nombre a un tema o una suscripción.

gcloud pubsub topics create TOPIC_ID

Reemplaza TOPIC_ID por un nombre para tu tema de Pub/Sub.

Para crear una suscripción a un tema, ejecuta el comando gcloud pubsub subscriptions create:

gcloud pubsub subscriptions create --topic TOPIC_ID SUBSCRIPTION_ID

Reemplaza SUBSCRIPTION_ID por un nombre para tu suscripción a Pub/Sub.

Crea y ejecuta trabajos de Cloud Scheduler

Crea y ejecuta dos trabajos de Cloud Scheduler, uno que publique calificaciones positivas y otro que publique calificaciones negativas en tu tema de Pub/Sub.

Console

Crea un trabajo de Cloud Scheduler para calificaciones positivas.

  1. Visita la página de Cloud Scheduler en la consola.

    Ir a Cloud Scheduler

  2. Haz clic en el botón Crear trabajo.

  3. Ingresa el nombre positive-ratings-publisher.

  4. Selecciona una región de Dataflow cercana a donde ejecutas los comandos de este instructivo. El valor de la variable REGION debe ser un nombre de región válido. Para obtener más información acerca de las regiones y ubicaciones, consulta Ubicaciones de Dataflow.

  5. Especifica la frecuencia de tu trabajo usando el formato unix-cron: * * * * *

    Consulta Cómo configurar programas de trabajos cron para obtener más información.

  6. Selecciona la zona horaria.

  7. Haz clic en Continuar.

  8. En la lista Destino, selecciona Pub/Sub.

  9. En la lista, selecciona el nombre de tu Tema.

  10. Agrega la siguiente string de Mensaje para que se envíe a tu destino:{"url": "https://beam.apache.org/", "review": "positive"}

  11. Haga clic en Crear.

Ahora tienes un trabajo cron que envía un mensaje con una calificación positiva a su tema de Pub/Sub cada minuto. Tu Cloud Function se suscribe a ese tema.

Crea un trabajo de Cloud Scheduler para calificaciones negativas.

  1. En la página Cloud Scheduler de la consola, haz clic en el botón Crear un trabajo.

  2. Ingresa el nombre negative-ratings-publisher.

  3. Selecciona la región en la que se ejecutará tu trabajo.

  4. Especifica la frecuencia de tu trabajo usando el formato unix-cron: */2 * * * *

    Consulta Cómo configurar programas de trabajos cron para obtener más información.

  5. Selecciona la zona horaria.

  6. Haz clic en Continuar.

  7. En la lista Destino, selecciona Pub/Sub.

  8. En la lista, selecciona el nombre de tu Tema.

  9. Agrega la siguiente string de Mensaje para que se envíe a tu destino:{"url": "https://beam.apache.org/", "review": "negative"}

  10. Haga clic en Crear.

Ahora tienes un trabajo cron que envía un mensaje con una calificación negativa a tu tema de Pub/Sub cada dos minutos. Tu Cloud Function se suscribe a ese tema.

gcloud

  1. Si quieres crear un trabajo de Cloud Scheduler para este instructivo, usa el comando gcloud scheduler jobs create. En este paso, se crea un publicador para “calificaciones positivas” que publica un mensaje por minuto.

    gcloud scheduler jobs create pubsub positive-ratings-publisher \
      --schedule="* * * * *" \
      --location=DATAFLOW_REGION \
      --topic="TOPIC_ID" \
      --message-body='{"url": "https://beam.apache.org/", "review": "positive"}'
    

    Reemplaza DATAFLOW_REGION por la región en la que se implementará tu trabajo de Dataflow. Selecciona una región de Dataflow cercana a donde ejecutas los comandos de este instructivo. El valor de la variable REGION debe ser un nombre de región válido.

  2. Para iniciar el trabajo de Cloud Scheduler, usa el comando gcloud scheduler jobs run.

    gcloud scheduler jobs run --location=DATAFLOW_REGION positive-ratings-publisher
    
  3. Crea y ejecuta otro publicador similar para “calificaciones negativas” que publique un mensaje cada dos minutos. En este paso, se crea un publicador de “calificaciones negativas” que publica un mensaje cada dos minutos.

    gcloud scheduler jobs create pubsub negative-ratings-publisher \
      --schedule="*/2 * * * *" \
      --location=DATAFLOW_REGION  \
      --topic="TOPIC_ID" \
      --message-body='{"url": "https://beam.apache.org/", "review": "negative"}'
    
  4. Inicia el segundo trabajo de Cloud Scheduler.

    gcloud scheduler jobs run --location=DATAFLOW_REGION negative-ratings-publisher
    

Cree un conjunto de datos de BigQuery

Crea un conjunto de datos y una tabla de BigQuery con el esquema adecuado para tu tema de Pub/Sub.

Console

Crear un conjunto de datos de BigQuery

  1. Abre la página BigQuery en la consola de Google Cloud.

    Ir a la página de BigQuery

  2. En el panel Explorador, selecciona el proyecto en el que deseas crear el conjunto de datos.

  3. Expande la opción Acciones y haz clic en Crear conjunto de datos.

  4. En la página Crear conjunto de datos:

    • En ID del conjunto de datos, ingresa tutorial_dataset.
    • En Ubicación de los datos, selecciona una ubicación geográfica para el conjunto de datos (opcional). Después de crear un conjunto de datos, la ubicación no se puede cambiar.

    • No selecciones las otras opciones.

    • Haz clic en Crear conjunto de datos.

Crea una tabla de BigQuery con un esquema.

  1. En el panel Explorador, expande tu proyecto y selecciona tu conjunto de datos tutorial_dataset.

  2. Expande la opción Acciones y haz clic en Abrir.

  3. En el panel de detalles, haz clic en Crear tabla  (Create table).

  4. En la página Crear tabla, en la sección Origen, selecciona Tabla vacía.

  5. En la sección Destination (Destino) de la página Create table (Crear tabla), haz lo siguiente:

    • Verifica que el Nombre del conjunto de datos esté configurado como tutorial_dataset.
    • En el campo Nombre de tabla, ingresa tutorial.
    • Verifica que Tipo de tabla esté establecido en Tabla nativa.
  6. En la sección Esquema, ingresa la definición del esquema. Habilita Editar como texto e ingresa el siguiente esquema de tabla como un array de JSON.

    [
      {
        "mode": "NULLABLE",
        "name": "url",
        "type": "STRING"
      },
      {
        "mode": "NULLABLE",
        "name": "review",
        "type": "STRING"
      }
    ]
    
  7. En Configuración de partición y agrupamiento en clústeres, deja los valores predeterminados: No partitioning.

  8. En la sección Opciones avanzadas, en Encriptación, deja el valor predeterminado: Google-managed key. De forma predeterminada, Dataflow encripta contenido de cliente almacenado en reposo.

  9. Haz clic en Crear tabla.

gcloud

Usa el comando bq mk para crear el conjunto de datos.

bq --location=DATAFLOW_REGION mk \
PROJECT_ID:tutorial_dataset

Reemplaza PROJECT_ID por el ID de tu proyecto:

Usa el comando bq mk con la marca --table o -t para crear una tabla en tu conjunto de datos.

bq mk \
    --table \
    PROJECT_ID:tutorial_dataset.tutorial \
    url:STRING,review:STRING

Crea una función definida por el usuario (UDF)

De manera opcional, puedes crear una UDF de JavaScript para extender la plantilla Suscripción de Pub/Sub a BigQuery proporcionada por Google. Las UDF te permiten definir transformaciones de datos que no están presentes en la plantilla y, luego, insertarlas en ella.

La siguiente UDF valida las URL de las calificaciones entrantes. Las calificaciones sin URL o con URL incorrectas se reenvían a una tabla de salida diferente con el sufijo _error_records, también conocida como tabla de mensajes no entregados, en el mismo proyecto y conjunto de datos.

JavaScript

/**
 * User-defined function (UDF) to transform events
 * as part of a Dataflow template job.
 *
 * @param {string} inJson input Pub/Sub JSON message (stringified)
 */
 function process(inJson) {
    const obj = JSON.parse(inJson);
    const includePubsubMessage = obj.data && obj.attributes;
    const data = includePubsubMessage ? obj.data : obj;

    if (!data.hasOwnProperty('url')) {
      throw new Error("No url found");
    } else if (data.url !== "https://beam.apache.org/") {
      throw new Error("Unrecognized url");
    }

    return JSON.stringify(obj);
  }

Guarda este fragmento de JavaScript en el bucket de Cloud Storage que creaste antes.

Ejecuta la canalización

Ejecuta una canalización de transmisión con la plantilla Suscripción de Pub/Sub a BigQuery proporcionada por Google. La canalización obtiene datos entrantes del tema de Pub/Sub y los envía a tu conjunto de datos de BigQuery.

Console

  1. En la consola de Google Cloud, ve a la página Trabajos de Dataflow.

    Ir a Trabajos

  2. Haz clic en Create job from template (Crear un trabajo a partir de una plantilla).

  3. En Job name (Nombre del trabajo), ingresa un nombre para el trabajo de Dataflow.

  4. En Extremo regional, selecciona una región para tu trabajo de Dataflow.

  5. En Plantilla de Dataflow, selecciona la plantilla Suscripción de Pub/Sub a BigQuery.

  6. En Tabla de salida de BigQuery, ingresa lo siguiente:

    PROJECT_ID:tutorial_dataset.tutorial
    
  7. En Suscripción de entrada de Pub/Sub, ingresa lo siguiente:

    projects/PROJECT_ID/subscriptions/SUBSCRIPTION_ID
    

    Reemplaza PROJECT_ID por el ID del proyecto en el que creaste tu conjunto de datos de BigQuery y SUBSCRIPTION_ID por el nombre de tu suscripción de Pub/Sub.

  8. En Ubicación temporal, ingresa lo siguiente:

    gs://BUCKET_NAME/temp/
    

    Reemplaza BUCKET_NAME por el nombre de tu bucket de Cloud Storage. La carpeta temp almacena archivos temporales, como el trabajo de canalización en etapa de pruebas.

  9. Opcional: A fin de incluir una UDF para el trabajo, expande Parámetros opcionales.

    1. En Ruta de acceso de la UDF de JavaScript en Cloud Storage, ingresa lo siguiente:

      gs://BUCKET_NAME/dataflow_udf_transform.js
      
    2. En JavaScript UDF name, ingresa lo siguiente:

      process
      
  10. Haga clic en Ejecutar trabajo.

Para verificar si la plantilla puede reenviar mensajes a una tabla de mensajes no entregados, publica algunas calificaciones sin URL o con URLs incorrectas.

  1. Ve a la página Temas de Pub/Sub.

  2. Haz clic en tu TOPIC_ID.

  3. Ve a la sección Mensajes.

  4. Haz clic en Publish message.

  5. Ingresa algunas calificaciones sin URL o con URLs incorrectas en Cuerpo del mensaje. Por ejemplo:

    {"url": "https://beam.apache.org/documentation/sdks/java/", "review": "positive"}
    
  6. Haz clic en Publish (Publicar).

gcloud

Para ejecutar la plantilla en tu shell o terminal, usa el comando gcloud dataflow jobs run.

gcloud dataflow jobs run JOB_NAME \
    --gcs-location gs://dataflow-templates-DATAFLOW_REGION/latest/PubSub_Subscription_to_BigQuery \
    --region DATAFLOW_REGION \
    --staging-location gs://BUCKET_NAME/temp \
    --parameters \
inputSubscription=projects/PROJECT_ID/subscriptions/SUBSCRIPTION_ID,\
outputTableSpec=PROJECT_ID:tutorial_dataset.tutorial

Reemplaza JOB_NAME por el nombre único que elijas.

Si lo deseas, para ejecutar la plantilla con la UDF, usa el siguiente comando:

gcloud dataflow jobs run JOB_NAME \
    --gcs-location gs://dataflow-templates-DATAFLOW_REGION/latest/PubSub_Subscription_to_BigQuery \
    --region DATAFLOW_REGION \
    --staging-location gs://BUCKET_NAME/temp \
    --parameters \
inputSubscription=projects/PROJECT_ID/subscriptions/SUBSCRIPTION_ID,\
outputTableSpec=PROJECT_ID:tutorial_dataset.tutorial,\
javascriptTextTransformGcsPath=gs://BUCKET_NAME/dataflow_udf_transform.js,\
javascriptTextTransformFunctionName=process

Para verificar si la plantilla puede reenviar mensajes a una tabla de mensajes no entregados, publica algunas calificaciones sin URL o con URLs incorrectas. El siguiente es un ejemplo de esto:

gcloud pubsub topics publish TOPIC_ID \
  --message='{"url": "https://beam.apache.org/documentation/sdks/java/", "review": "positive"}'

Ve los resultados

Visualiza los datos escritos en tus tablas de BigQuery.

Console

  1. En la consola de Google Cloud, ve a la página de BigQuery.
    Ir a la página de BigQuery

  2. En el Editor de consultas, ejecute la siguiente consulta:

    SELECT * FROM `PROJECT_ID.tutorial_dataset.tutorial`
    LIMIT 1000
    

    Los datos pueden tardar hasta un minuto en comenzar a aparecer en la tabla.

    La consulta muestra las filas que se agregaron a tu tabla en las últimas 24 horas. También puedes ejecutar consultas con SQL estándar.

    Si esperas que se escriban algunos registros de error en tu tabla de mensajes no entregados, en la consulta, usa el nombre de tabla tutorial_error_records. Por ejemplo:

    SELECT * FROM `PROJECT_ID.tutorial_dataset.tutorial_error_records`
    LIMIT 1000
    

gcloud

Ejecuta la siguiente consulta para verificar los resultados en BigQuery:

bq query --use_legacy_sql=false 'SELECT * FROM `'"PROJECT_ID.tutorial_dataset.tutorial"'`'

Mientras esta canalización se está ejecutando, puedes ver filas nuevas agregadas a la tabla de BigQuery cada minuto.

Si esperas que se escriban algunos registros de error en tu tabla de mensajes no entregados, en la consulta, usa el nombre de tabla tutorial_error_records. Por ejemplo:

SELECT * FROM `PROJECT_ID.tutorial_dataset.tutorial_error_records`
LIMIT 1000

Realiza una limpieza

Para evitar que se apliquen cargos a tu cuenta de Google Cloud por los recursos usados en este instructivo, borra el proyecto que contiene los recursos o conserva el proyecto y borra los recursos individuales.

Borra el proyecto

La manera más fácil de eliminar la facturación es borrar el proyecto de Google Cloud que creaste para el instructivo.

Console

  1. En la consola de Google Cloud, ve a la página Administrar recursos.

    Ir a Administrar recursos

  2. En la lista de proyectos, elige el proyecto que quieres borrar y haz clic en Borrar.
  3. En el diálogo, escribe el ID del proyecto y, luego, haz clic en Cerrar para borrar el proyecto.

gcloud

    Borra un proyecto de Google Cloud:

    gcloud projects delete PROJECT_ID

Borra los recursos individuales

Si quieres reutilizar el proyecto más adelante, puedes conservar el proyecto, pero borrar los recursos que creaste durante el instructivo.

Detén la canalización de Dataflow

Console

  1. En la consola de Google Cloud, ve a la página Trabajos de Dataflow.

    Ir a Trabajos

  2. Haz clic en el trabajo que deseas detener.

    Para detener un trabajo, su estado debe ser En ejecución.

  3. En la página de detalles del trabajo, haz clic en Detener.

  4. Haga clic en Cancelar.

  5. Para confirmar tu elección, haz clic en Detener trabajo.

gcloud

Para cancelar tu trabajo de Dataflow, usa el comando gcloud dataflow jobs.

gcloud dataflow jobs list \
  --filter 'NAME=JOB_NAME AND STATE=Running' \
  --format 'value(JOB_ID)' \
  --region "DATAFLOW_REGION" \
  | xargs gcloud dataflow jobs cancel --region "DATAFLOW_REGION"

Borra los recursos del proyecto de Google Cloud

Console

  1. Borra los trabajos de Cloud Scheduler.

    1. Ve a la página de Cloud Scheduler en la consola de Google Cloud.

      Ir a Cloud Scheduler

    2. Selecciona tus trabajos.

    3. Haz clic en el botón Borrar en la parte superior de la página y confirma la eliminación.

  2. Borra el tema y la suscripción de Pub/Sub.

    1. Ve a la página Temas de Pub/Sub en la consola de Google Cloud.

      Ir a temas

    2. Selecciona el tema que creaste.

    3. Haz clic en Borrar para borrar el tema de forma definitiva.

    4. Ve a la página Suscripciones a Pub/Sub en la consola de Google Cloud.

      Ir a las suscripciones

    5. Selecciona la suscripción que se creó con tu tema.

    6. Haz clic en Borrar para borrar la suscripción de forma definitiva.

  3. Borra la tabla y el conjunto de datos de BigQuery.

    1. En la consola de Google Cloud, ve a la página de BigQuery.

      Ir a BigQuery

    2. En el panel Explorador, expande tu proyecto.

    3. Junto al conjunto de datos que deseas borrar, haz clic en Ver acciones y, luego, en borrar.

  4. Borra el bucket de Cloud Storage.

    1. En la consola de Google Cloud, ve a la página Buckets de Cloud Storage.

      Ir a Buckets

    2. Selecciona el bucket que deseas borrar, haz clic en Borrar y sigue las instrucciones.

gcloud

  1. Para borrar los trabajos de Cloud Scheduler, usa el comando gcloud scheduler jobs delete.

    gcloud scheduler jobs delete negative-ratings-publisher --location=DATAFLOW_REGION
    
    gcloud scheduler jobs delete positive-ratings-publisher --location=DATAFLOW_REGION
    
  2. Para borrar la suscripción y el tema de Pub/Sub, usa los comandos gcloud pubsub subscriptions delete y gcloud pubsub topics delete.

    gcloud pubsub subscriptions delete SUBSCRIPTION_ID
    gcloud pubsub topics delete TOPIC_ID
    
  3. Para borrar la tabla de BigQuery, usa el comando bq rm.

    bq rm -f -t PROJECT_ID:tutorial_dataset.tutorial
    
  4. Borra el conjunto de datos de BigQuery. El conjunto de datos por sí solo no genera cargos.

    bq rm -r -f -d PROJECT_ID:tutorial_dataset
    
  5. Para borrar el bucket de Cloud Storage, usa el comando gcloud storage rm. El bucket por sí solo no genera cargos.

    gcloud storage rm gs://BUCKET_NAME --recursive
    

Revoca credenciales

Console

Si conservas tu proyecto, revoca los roles que otorgaste a la cuenta de servicio predeterminada de Compute Engine.

  1. En la consola de Google Cloud, ve a la página IAM.

Ir a IAM

  1. Selecciona un proyecto, una carpeta o una organización.

  2. Busca la fila que contiene el principal cuyo acceso deseas revocar. En esa fila, haz clic en Editar principal.

  3. Haz clic en el botón Borrar para cada rol que desees revocar y, luego, haz clic en Guardar.

gcloud

  • Si conservas tu proyecto, revoca los roles que otorgaste a la cuenta de servicio predeterminada de Compute Engine. Ejecuta el siguiente comando una vez para cada uno de los siguientes roles de IAM:
    • roles/dataflow.admin
    • roles/dataflow.worker
    • roles/storage.admin
    • roles/pubsub.editor
    • roles/bigquery.dataEditor
      gcloud projects remove-iam-policy-binding <var>PROJECT_ID</var> \
      --member=serviceAccount:<var>PROJECT_NUMBER</var>-compute@developer.gserviceaccount.com \
      --role=<var>ROLE</var>
    

  • Opcional: Revoca las credenciales de autenticación que creaste y borra el archivo local de credenciales.

    gcloud auth application-default revoke
  • Opcional: Revoca credenciales desde gcloud CLI.

    gcloud auth revoke

¿Qué sigue?