Exporta datos a AlloyDB (ETL inverso)

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 AlloyDB para PostgreSQL. Puedes hacerlo mediante la EXPORT DATA declaración.

Antes de comenzar

Roles obligatorios

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

Para obtener más información sobre cómo otorgar roles, consulta Administra el acceso a proyectos, carpetas y organizaciones.

También puedes obtener los permisos necesarios mediante roles personalizados o cualquier otro rol predefinido.

Limitaciones

  • Las exportaciones de AlloyDB solo admiten exportaciones por lotes. No puedes usar consultas continuas para exportar a AlloyDB.

  • Los datos exportados a AlloyDB se agregan exclusivamente como filas nuevas. El proceso de exportación no modifica ni borra los registros existentes en AlloyDB. Si la tabla de destino no tiene definidas las restricciones PRIMARY KEY o UNIQUE, la exportación de los mismos datos varias veces generará entradas duplicadas.

  • Para garantizar la integridad de los datos, te recomendamos que definas restricciones PRIMARY KEY o UNIQUE en tus tablas de AlloyDB. Los trabajos de exportación no realizan "upserts", en los que se actualiza un registro existente si hay una clave coincidente única. Si alguna fila entrante infringe una restricción PRIMARY KEY o UNIQUE, fallará todo el trabajo de exportación.

  • No recomendamos ejecutar varios trabajos EXPORT DATA simultáneos en la misma tabla de AlloyDB. Si lo haces, puede provocar un comportamiento impredecible, como la pérdida de datos o fallas en los trabajos. Te recomendamos que verifiques que solo un trabajo de exportación escriba en una tabla específica a la vez.

  • Solo se admite la autenticación con nombre de usuario y contraseña a través de una conexión de BigQuery.

  • No se admiten los tipos de datos ARRAY, BYTES, GEOGRAPHY, INTERVAL y STRUCT de BigQuery.

  • Si la instrucción SELECT de BigQuery omite columnas que existen en la tabla de AlloyDB de destino, esas columnas deben permitir valores NULL o tener valores predeterminados definidos en AlloyDB. Si tienen una restricción NOT NULL y no tienen un valor predeterminado, fallará la exportación.

  • Las exportaciones a AlloyDB solo se admiten para las ediciones Enterprise o Enterprise Plus de BigQuery. No se admiten la edición Standard de BigQuery ni el procesamiento on demand. Para obtener más información, consulta Funciones de administración.

  • Un trabajo de BigQuery, como un trabajo de extracción a AlloyDB, tiene una duración máxima de 6 horas. Para exportaciones muy grandes, te recomendamos que las dividas en varios trabajos más pequeños.

Consideraciones de ubicación

La exportación de datos a AlloyDB tiene requisitos específicos en cuanto a la ubicación de tu conjunto de datos de BigQuery y tu instancia de AlloyDB:

  • Exportaciones a la misma región: La instancia de AlloyDB de destino debe residir en la misma región exacta que el conjunto de datos de BigQuery . Google Cloud Por ejemplo, un conjunto de datos en us-east1 solo se puede exportar a una instancia de AlloyDB en us-east1.

  • Exportaciones multirregionales:

    • Los conjuntos de datos en la multirregión US solo se pueden exportar a una instancia de AlloyDB ubicada en la región us-central1.
    • Los conjuntos de datos en la multirregión EU solo se pueden exportar a una instancia de AlloyDB ubicada en la región europe-west4.

No se admiten las exportaciones entre regiones que no sean las combinaciones mencionadas anteriormente.

Configura exportaciones con alloydb_options

Puedes usar la opción alloydb_options para especificar el esquema, la tabla y las conexiones máximas de AlloyDB de destino. La configuración se expresa como una cadena JSON. Solo se requiere el parámetro table. Todos los demás parámetros son opcionales.

Cuando configures la exportación, las columnas de la instrucción SELECT deben tener alias que coincidan con los nombres de las columnas de la tabla de AlloyDB de destino.

EXPORT DATA
  WITH CONNECTION `PROJECT_ID.LOCATION.CONNECTION_ID`
  OPTIONS(
    format='ALLOYDB',
    uri="https://alloydb.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/clusters/CLUSTER_ID/instances/INSTANCE_ID",
    alloydb_options="""{
      "schema": "SCHEMA_NAME",
      "table": "TABLE_NAME",
      "max_parallel_connections": MAX_CONNECTIONS
    }"""
  )
AS SELECT * FROM `mydataset.table1`;

Reemplaza lo siguiente:

  • PROJECT_ID: Es el nombre de tu Google Cloud proyecto.
  • LOCATION: Es la ubicación de tu conexión y de la instancia de destino.
  • CONNECTION_ID: Es el nombre de tu conexión de BigQuery.
  • CLUSTER_ID: Es el nombre de tu clúster de AlloyDB.
  • INSTANCE_ID: Es el nombre de tu instancia de AlloyDB de destino.
  • SCHEMA_NAME (opcional): Es el nombre del esquema de destino en AlloyDB. Si no se proporciona, se usa el esquema predeterminado configurado para el usuario de la base de datos.
  • TABLE_NAME: Es el nombre de una tabla de destino existente en AlloyDB, sin el prefijo del esquema.
  • MAX_CONNECTIONS (opcional): Es la cantidad máxima de conexiones paralelas simultáneas de los trabajadores de BigQuery a la instancia de AlloyDB. Limitar las conexiones puede evitar la sobrecarga de la instancia de destino durante las exportaciones grandes.

Exportar datos

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

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

EXPORT DATA
  WITH CONNECTION `myproject.us-central1.my-alloydb-conn`
  OPTIONS (
    format='ALLOYDB',
    uri="https://alloydb.googleapis.com/v1/projects/myproject/locations/us-central1/clusters/my-cluster/instances/my-instance",
    alloydb_options="""{
      "schema": "public",
      "table": "my_target_table"
    }"""
  )
AS SELECT
  col1 AS id,
  col2 AS name,
  col3 AS value
FROM
  `mydataset.table1`;

Precios

Cuando exportas datos a AlloyDB con la instrucción EXPORT DATA, se te factura a través de los precios de procesamiento de capacidad de BigQuery.

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