Usar Datastream para ingerir datos en tablas particionadas de BigQuery

Puede que tengas que particionar tus tablas de BigQuery en segmentos más pequeños para mejorar el rendimiento de las consultas y controlar los costes. Como Datastream no admite la creación de particiones de tablas en BigQuery, debes añadir las particiones manualmente antes de iniciar tu flujo. Para obtener información general sobre las particiones en BigQuery, consulta Introducción a las tablas con particiones.

Crear particiones en tablas de BigQuery

Para crear particiones en tus tablas de BigQuery, usa una de las opciones que se describen en las secciones siguientes, en función de tu caso práctico.

Opción 1: La tabla ya existe en BigQuery y está incluida en un flujo

  1. Excluye la tabla de la configuración de la fuente de tu flujo. Para obtener más información sobre cómo incluir y excluir objetos de la configuración de origen, consulta Configurar bases de datos de origen.
  2. Espera unos minutos para asegurarte de que Datastream ha terminado de procesar todos los eventos de la tabla.
  3. Crea la tabla con particiones en BigQuery. Si quieres conservar los datos que ya estaban en la tabla de BigQuery original, asigna a la tabla un nombre temporal diferente.
  4. Copia los datos de la tabla original en la nueva tabla con particiones.
  5. Elimina o cambia el nombre de la tabla original.
  6. Cambia el nombre temporal de la nueva tabla por el de la tabla original.
  7. Añade la tabla de origen a la configuración de tu flujo.

Opción 2: La tabla no existe en BigQuery

  1. Crea la tabla en BigQuery con uno de los siguientes métodos:

    • Usa el kit de herramientas de migración de BigQuery.
    • Crea manualmente una tabla de BigQuery compatible con Datastream. Por ejemplo, si quiere crear una tabla y particionar los datos en función de la columna TIMESTAMP, puede usar una consulta similar a la siguiente:

      CREATE TABLE dataset.partitioned_table (
      'id' INT64,
      'name' STRING
      'update_date' DATETIME,
      'datastream_metadata' STRUCT<'uuid' STRING, 'source_timestamp' INT64>,
      PRIMARY KEY ('id') NOT ENFORCED
      )
      PARTITION BY TIMESTAMP(update_date)
      
  2. Después de crear la tabla particionada, asegúrate de que el valor de max_staleness se haya definido según tus requisitos. Si no define ningún valor, se asignará el valor predeterminado 0. Si dejas este valor en 0, te aseguras de que los datos estén actualizados, pero esto supone un coste significativo. Para obtener información sobre cómo encontrar el valor óptimo para tu tabla, consulta Usar tablas de BigQuery con la opción max_staleness.

  3. Añade la tabla de origen a la configuración de tu flujo.

  4. Si has configurado el relleno manual para el flujo, puedes iniciar el relleno de la tabla.