Exporta datos a Spanner (ETL inverso)

Para enviar comentarios o solicitar asistencia para esta función, envía un correo electrónico a bq-cloud-spanner-federation-preview@google.com.

En este documento, se describe cómo configurar un flujo de trabajo inverso de extracción, transformación y carga (ETL inverso) de BigQuery a Spanner. Puedes hacerlo mediante la declaración EXPORT DATA para exportar datos de una tabla de BigQuery a una tabla de Spanner.

En este flujo de trabajo de ETL inverso, se combinan capacidades analíticas en BigQuery con baja latencia y alta capacidad de procesamiento en Spanner. Este flujo de trabajo te permite entregar datos a los usuarios de la aplicación sin agotar cuotas y límites en BigQuery.

Antes de comenzar

Roles obligatorios

Para obtener los permisos que necesitas para exportar los datos de BigQuery a Spanner, pídele a tu administrador que te otorgue los siguientes roles de IAM en tu proyecto:

Si quieres obtener más información para otorgar roles, consulta Administra el acceso.

También puedes obtener los permisos necesarios a través de roles personalizados o cualquier otro rol predefinido.

Limitaciones

Los siguientes tipos de datos de BigQuery no tienen equivalentes en Spanner y no son compatibles:

Dialecto de la base de datos de Spanner Tipos de BigQuery no compatibles
Todos los dialectos
  • STRUCT
  • GEOGRAPHY
  • DATETIME
  • RANGE
  • TIME
GoogleSQL
  • BIGNUMERIC: El tipo NUMERIC admitido no es lo suficientemente ancho. Considera agregar conversiones explícitas al tipo NUMERIC en la consulta.

El tamaño máximo de una fila exportada no puede exceder 1 MiB.

Configura exportaciones con la opción spanner_options

Puedes usar la opción spanner_options para especificar una base de datos y una tabla de destino de Spanner. La configuración se expresa en forma de una string JSON, como se muestra en el siguiente ejemplo:

EXPORT DATA OPTIONS(
   uri="https://spanner.googleapis.com/projects/PROJECT_ID/instances/INSTANCE_ID/databases/DATABASE_ID",
  format='CLOUD_SPANNER',
   spanner_options = """{
      "table": "TABLE_NAME",
      "priority": "PRIORITY",
      "tag": "TAG",
   }"""
)

Reemplaza lo siguiente:

  • PROJECT_ID: El nombre de tu proyecto de Google Cloud.
  • INSTANCE_ID: el nombre de tu instancia de base de datos.
  • DATABASE_ID: el nombre de tu base de datos.
  • TABLE_NAME: el nombre de una tabla de destino existente.
  • PRIORITY (opcional): Es la prioridad de las solicitudes de escritura. Valores permitidos: LOW, MEDIUM, HIGH. Valor predeterminado: MEDIUM.
  • TAG (opcional): Es la etiqueta de solicitud para ayudar a identificar el tráfico del exportador en la supervisión de Spanner. Valor predeterminado: bq_export.

Requisitos de las consultas de exportación

Para exportar los resultados de las consultas a Spanner, estos deben cumplir con los siguientes requisitos:

  • Todas las columnas del conjunto de resultados deben existir en la tabla de destino y sus tipos deben coincidir.
  • El conjunto de resultados debe contener todas las columnas NOT NULL de la tabla de destino.
  • Los valores de la columna no deben exceder los límites de tamaño de los datos dentro de las tablas de Spanner.
  • Los tipos de columnas no compatibles deben convertirse en uno de los tipos compatibles antes de exportar a Spanner.

Exportar datos

Puedes usar la declaración EXPORT DATA para exportar datos de una tabla de BigQuery a una tabla de Spanner.

En el siguiente ejemplo, se exportan los campos seleccionados de una tabla llamada mydataset.table1:

EXPORT DATA OPTIONS (
  uri="https://spanner.googleapis.com/projects/PROJECT_ID/instances/INSTANCE_ID/databases/DATABASE_ID",
  format='CLOUD_SPANNER',
  spanner_options="""{ "table": "TABLE_NAME" }"""
)
AS SELECT * FROM mydataset.table1;

Reemplaza lo siguiente:

  • PROJECT_ID: el nombre de tu proyecto de Google Cloud
  • INSTANCE_ID: el nombre de tu instancia de base de datos
  • DATABASE_ID: el nombre de tu base de datos
  • TABLE_NAME: el nombre de una tabla de destino existente

Optimización de exportaciones

Para optimizar la exportación de registros de BigQuery a Spanner, puedes probar lo siguiente:

  • Aumenta la cantidad de nodos en la instancia de destino de Spanner. El exportador escala de forma automática la cantidad de ranuras de exportación de BigQuery en proporción a la cantidad de nodos y unidades de procesamiento de Spanner. Para obtener detalles adicionales sobre cómo maximizar la capacidad de procesamiento de escritura, consulta la Descripción general del rendimiento.

  • Evita ordenar los resultados de la consulta. Si el conjunto de resultados contiene todas las columnas de clave primaria, el exportador ordena automáticamente las claves primarias de la tabla de destino para optimizar las escrituras y minimizar la contención.

    Si la clave primaria de la tabla de destino incluye columnas generadas, debes agregar las expresiones de las columnas generadas a la consulta para asegurarte de que los datos exportados se ordenen de forma correcta.

Precios

Para obtener información sobre los precios de la exportación de datos, consulta Precios de BigQuery.

Una vez que se exportan los datos, se te cobra por almacenarlos en Spanner. Para obtener más información, consulta Precios de Spanner.