Exporta datos a AlloyDB (ETL inverso)
Un flujo de trabajo de extracción, transformación y carga inversa (ETL inversa) de
BigQuery a AlloyDB para PostgreSQL te permite mover datos de
BigQuery a una base de datos de AlloyDB. Puedes usar
la declaración
EXPORT DATA para procesar
o filtrar los datos con una consulta antes de exportarlos, o puedes sincronizar tu
tabla de BigQuery con
AlloyDB para copiar o duplicar la tabla
completa.
Antes de comenzar
Crea un clúster y una instancia de AlloyDB, que incluya una base de datos, un esquema y una tabla, para recibir los datos exportados. Debes tener el esquema y la tabla de destino antes de ejecutar el trabajo de exportación.
La instancia de AlloyDB de destino debe ser una instancia
PRIMARYen estadoREADY.Crea una conexión de BigQuery para conectarte a tu instancia de AlloyDB. La conexión se debe autenticar con un nombre de usuario y una contraseña. El usuario de la base de datos especificado en la conexión debe tener privilegios
INSERTen la tabla de destino yUSAGEen el esquema de destino.Para usar esta función, debes crear una reserva de nivel Enterprise o Enterprise Plus de BigQuery. Las exportaciones a AlloyDB solo se admiten para reservas con una asignación de
QUERY.Otorga roles de Identity and Access Management (IAM) que les brindan a los usuarios los permisos necesarios para realizar cada tarea de este documento.
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:
-
Exportar datos desde una tabla de BigQuery:
Visualizador de datos de BigQuery (
roles/bigquery.dataViewer) -
Ejecutar un trabajo de extracción:
Usuario de BigQuery (
roles/bigquery.user) -
Usa una conexión de BigQuery:
Usuario de conexión de BigQuery (
roles/bigquery.connectionUser) -
Conectarse a una instancia de AlloyDB:
Cliente de AlloyDB (
roles/alloydb.client): la cuenta de servicio de conexión
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 restricciones
PRIMARY KEYoUNIQUE, exportar los mismos datos varias veces generará entradas duplicadas.Para garantizar la integridad de los datos, te recomendamos que definas restricciones
PRIMARY KEYoUNIQUEen tus tablas de AlloyDB. Los trabajos de exportación no realizan "actualizaciones o inserciones", en las que se actualiza un registro existente si hay una clave de coincidencia única. Si alguna fila entrante incumple una restricciónPRIMARY KEYoUNIQUE, fallará todo el trabajo de exportación.No recomendamos ejecutar varios trabajos de
EXPORT DATAsimultáneos en la misma tabla de AlloyDB. Si lo haces, se puede producir 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 de nombre de usuario y contraseña a través de una conexión de BigQuery.
No se admiten los tipos de datos de BigQuery
ARRAY,BYTES,GEOGRAPHY,INTERVALniSTRUCT.Si la sentencia
SELECTde BigQuery omite columnas que existen en la tabla de AlloyDB de destino, esas columnas deben permitir valoresNULLo tener valores predeterminados definidos en AlloyDB. Si tienen una restricciónNOT NULLy no tienen un valor predeterminado, la exportación fallará.Las exportaciones a AlloyDB solo se admiten en 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 dividas la exportación en varios trabajos más pequeños.
Consideraciones de ubicación
La exportación de datos a AlloyDB tiene requisitos específicos en relación con 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 de Google Cloud que el conjunto de datos de BigQuery. Por ejemplo, un conjunto de datos en
us-east1solo se puede exportar a una instancia de AlloyDB enus-east1.Exportaciones multirregionales:
- Los conjuntos de datos de la multirregión
USsolo se pueden exportar a una instancia de AlloyDB ubicada en la regiónus-central1. - Los conjuntos de datos de la multirregión
EUsolo se pueden exportar a una instancia de AlloyDB ubicada en la regióneurope-west4.
- Los conjuntos de datos de la multirregión
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 sentencia 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 proyecto de Google Cloud .LOCATION: Es la ubicación de tu conexión y de la instancia de destino.CONNECTION_ID: 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 que se sobrecargue la instancia de destino durante las exportaciones grandes.
Exportar datos
Puedes usar la
declaración EXPORT DATA
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`;
Sincroniza una tabla para exportarla
Para realizar copias de tablas completas o duplicaciones automatizadas sin necesidad de transformaciones basadas en SQL, puedes sincronizar tu tabla de BigQuery directamente con AlloyDB. Si bien la sentencia EXPORT DATA te permite usar una consulta SELECT
para procesar, asignar alias o filtrar datos antes de moverlos, puedes usar las sincronizaciones de tablas
para una migración uno a uno de una tabla de BigQuery.
Las sincronizaciones de tablas están disponibles en los siguientes modos:
- Importación única: Crea una copia independiente y con permisos de escritura de una tabla de BigQuery en AlloyDB.
- Sincronización periódica (duplicación): Crea una tabla local de solo lectura en AlloyDB que se actualiza automáticamente desde BigQuery según un programa definido.
Para obtener más información, consulta Sincroniza datos de BigQuery con AlloyDB.
Precios
Cuando exportas datos a AlloyDB con la sentencia 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.