Programa una transferencia de Snowflake
El conector de Snowflake que proporciona el Servicio de transferencia de datos de BigQuery te permite programar y administrar trabajos de transferencia automatizados para migrar datos de Snowflake a BigQuery con listas de entidades permitidas de IP públicas.
Descripción general
El conector de Snowflake activa los agentes de migración en Google Kubernetes Engine y activa una operación de carga de Snowflake a un área de etapa de pruebas dentro del mismo proveedor de servicios en la nube en el que se aloja Snowflake. En el caso de las cuentas de Snowflake alojadas en AWS, los datos se implementan primero en tu bucket de Amazon S3, que luego se transfiere a BigQuery con el Servicio de transferencia de datos de BigQuery.
En el siguiente diagrama, se muestra cómo se transfieren los datos de un almacén de datos de Snowflake alojado en AWS a BigQuery.
Limitaciones
Las transferencias de datos que se realizan con el conector de Snowflake están sujetas a las siguientes limitaciones:
- Las transferencias de datos solo se admiten desde cuentas de Snowflake alojadas en AWS. No se admiten las transferencias de datos desde cuentas de Snowflake alojadas en Google Cloud ni Microsoft Azure.
- El conector de Snowflake no admite transferencias de datos incrementales.
- El conector de Snowflake solo admite transferencias de tablas dentro de una sola base de datos y esquema de Snowflake. Para transferir desde tablas con varias bases de datos o esquemas de Snowflake, puedes configurar cada trabajo de transferencia por separado.
- La velocidad de carga de datos de Snowflake a tu bucket de Amazon S3 está limitada por el almacén de Snowflake que elegiste para esta transferencia.
Los datos se extraen de Snowflake en el formato de datos Parquet antes de cargarse en BigQuery:
- No se admiten los siguientes tipos de datos de Parquet:
TIMESTAMP_TZ
,TIMESTAMP_LTZ
OBJECT
,VARIANT
,ARRAY
- Para obtener más información, consulta Cómo evaluar los datos de Snowflake.
El siguiente tipo de datos de Parquet no se admite, pero se puede convertir:
TIMESTAMP_NTZ
Usa el YAML de configuración de conversión de tipo global para anular el comportamiento predeterminado de la conversión de
DATETIME
aTIMESTAMP
cuando generas metadatos y ejecutas el motor de traducción.El YAML de configuración podría verse similar al siguiente ejemplo:
type: experimental_object_rewriter global: typeConvert: datetime: TIMESTAMP
- No se admiten los siguientes tipos de datos de Parquet:
Antes de comenzar
Antes de configurar una transferencia de Snowflake, debes realizar todos los pasos que se enumeran en esta sección. A continuación, se muestra una lista de todos los pasos necesarios.
- Prepara tu Google Cloud proyecto
- Roles de BigQuery obligatorios
- Prepara tu bucket de Amazon S3
- Crea un usuario de Snowflake con los permisos necesarios
- Cómo agregar políticas de red
- Genera metadatos y ejecuta el motor de traducción
- Evalúa tu cuenta de Snowflake para detectar tipos de datos no admitidos
- Cómo recopilar información de transferencia
Prepara tu Google Cloud proyecto
Crea y configura tu Google Cloud proyecto para una transferencia a Snowflake con los siguientes pasos:
Crea un Google Cloud proyecto o selecciona uno existente.
Verifica si completaste todas las acciones necesarias para habilitar el Servicio de transferencia de datos de BigQuery.
Crea un conjunto de datos de BigQuery para almacenar tus datos. No es necesario crear ninguna tabla.
Roles de BigQuery requeridos
Para obtener los permisos que necesitas para crear una transferencia, pídele a tu administrador que te otorgue el rol de IAM de administrador de BigQuery (roles/bigquery.admin
).
Para obtener más información sobre cómo otorgar roles, consulta Administra el acceso a proyectos, carpetas y organizaciones.
Este rol predefinido contiene los permisos necesarios para crear una transferencia. Para ver los permisos exactos que son necesarios, expande la sección Permisos requeridos:
Permisos necesarios
Se requieren los siguientes permisos para crear una transferencia:
-
bigquery.transfers.update
en la cuenta de usuario o servicio que crea la configuración de transferencia -
bigquery.datasets.get
en la cuenta de usuario o servicio que crea la configuración de transferencia -
bigquery.datasets.update
en la cuenta de usuario o servicio que crea la configuración de transferencia
También puedes obtener estos permisos con roles personalizados o con otros roles predefinidos.
Prepara tu bucket de Amazon S3
Para completar una transferencia de datos de Snowflake, debes crear un bucket de Amazon S3 y, luego, configurarlo para permitir el acceso de escritura desde Snowflake.
Crea un bucket de Amazon S3. El bucket de Amazon S3 se usa para preparar los datos antes de que se carguen en BigQuery.
Crea y configura un objeto de integración de almacenamiento de Snowflake para permitir que Snowflake escriba datos en el bucket de Amazon S3 como una etapa externa.
Para permitir el acceso de lectura en tu bucket de Amazon S3, también debes hacer lo siguiente:
Crea un usuario de IAM de Amazon dedicado y bríndale la política AmazonS3ReadOnlyAccess.
Crea un par de claves de acceso de Amazon para el usuario de IAM.
Crea un usuario de Snowflake con los permisos necesarios
Durante una transferencia de Snowflake, el conector de Snowflake se conecta a tu cuenta de Snowflake a través de una conexión JDBC. Debes crear un usuario de Snowflake nuevo con un rol personalizado que solo tenga los privilegios necesarios para realizar la transferencia de datos:
// Create and configure new role, MIGRATION_ROLE GRANT USAGE ON WAREHOUSE WAREHOUSE_NAME TO ROLE MIGRATION_ROLE; GRANT USAGE ON DATABASE DATABASE_NAME TO ROLE MIGRATION_ROLE; GRANT USAGE ON SCHEMA DATABASE_NAME.SCHEMA_NAME TO ROLE MIGRATION_ROLE; // You can modify this to give select permissions for all tables in a schema GRANT SELECT ON TABLE DATABASE_NAME.SCHEMA_NAME.TABLE_NAME TO ROLE MIGRATION_ROLE; GRANT USAGE ON STORAGE_INTEGRATION_OBJECT_NAME TO ROLE MIGRATION_ROLE;
Reemplaza lo siguiente:
MIGRATION_ROLE
: Es el nombre del rol personalizado que creas.WAREHOUSE_NAME
: Es el nombre de tu almacén de datos.DATABASE_NAME
: el nombre de tu base de datos de SnowflakeSCHEMA_NAME
: El nombre de tu esquema de SnowflakeTABLE_NAME
: el nombre de Snowflake que se incluye en esta transferencia de datosSTORAGE_INTEGRATION_OBJECT_NAME
: Es el nombre de tu objeto de integración de almacenamiento de Snowflake.
Cómo agregar políticas de red
Para la conectividad pública, la cuenta de Snowflake permite la conexión pública con credenciales de la base de datos de forma predeterminada. Sin embargo, es posible que hayas configurado reglas o políticas de red que podrían impedir que el conector de Snowflake se conecte a tu cuenta. En este caso, debes agregar las direcciones IP necesarias a tu lista de entidades permitidas.
En la siguiente tabla, se muestra una lista de direcciones IP de las ubicaciones regionales y multirregionales que se usan para las transferencias públicas. Puedes agregar las direcciones IP que solo correspondan a la ubicación de tu conjunto de datos o puedes agregar todas las direcciones IP que se indican en la tabla. Estas son direcciones IP reservadas por Google para las transferencias de datos del Servicio de transferencia de datos de BigQuery.
Para agregar una dirección IP a una lista de entidades permitidas, haz lo siguiente:
- Crea una regla de red con
type
=IPV4
. El Servicio de transferencia de datos de BigQuery usa una conexión JDBC para conectarse a la cuenta de Snowflake. - Crea una política de red con la regla de red que creaste antes y la dirección IP de la siguiente tabla.
Ubicaciones regionales
Descripción de la región | Nombre de la región | Direcciones IP | |
---|---|---|---|
América | |||
Columbus, Ohio | us-east5 |
34.162.72.184 34.162.173.185 34.162.205.205 34.162.81.45 34.162.182.149 34.162.59.92 34.162.157.190 34.162.191.145 |
|
Dallas | us-south1 |
34.174.172.89 34.174.40.67 34.174.5.11 34.174.96.109 34.174.148.99 34.174.176.19 34.174.253.135 34.174.129.163 |
|
Iowa | us-central1 |
34.121.70.114 34.71.81.17 34.122.223.84 34.121.145.212 35.232.1.105 35.202.145.227 35.226.82.216 35.225.241.102 |
|
Las Vegas | us-west4 |
34.125.53.201 34.125.69.174 34.125.159.85 34.125.152.1 34.125.195.166 34.125.50.249 34.125.68.55 34.125.91.116 |
|
Los Ángeles | us-west2 |
35.236.59.167 34.94.132.139 34.94.207.21 34.94.81.187 34.94.88.122 35.235.101.187 34.94.238.66 34.94.195.77 |
|
México | northamerica-south1 |
34.51.6.35 34.51.7.113 34.51.12.83 34.51.10.94 34.51.11.219 34.51.11.52 34.51.2.114 34.51.15.251 |
|
Montreal | northamerica-northeast1 |
34.95.20.253 35.203.31.219 34.95.22.233 34.95.27.99 35.203.12.23 35.203.39.46 35.203.116.49 35.203.104.223 |
|
Virginia del Norte | us-east4 |
35.245.95.250 35.245.126.228 35.236.225.172 35.245.86.140 35.199.31.35 35.199.19.115 35.230.167.48 35.245.128.132 35.245.111.126 35.236.209.21 |
|
Oregón | us-west1 |
35.197.117.207 35.199.178.12 35.197.86.233 34.82.155.140 35.247.28.48 35.247.31.246 35.247.106.13 34.105.85.54 |
|
Salt Lake City | us-west3 |
34.106.37.58 34.106.85.113 34.106.28.153 34.106.64.121 34.106.246.131 34.106.56.150 34.106.41.31 34.106.182.92 |
|
São Paulo | southamerica-east1 |
35.199.88.228 34.95.169.140 35.198.53.30 34.95.144.215 35.247.250.120 35.247.255.158 34.95.231.121 35.198.8.157 |
|
Santiago | southamerica-west1 |
34.176.188.48 34.176.38.192 34.176.205.134 34.176.102.161 34.176.197.198 34.176.223.236 34.176.47.188 34.176.14.80 |
|
Carolina del Sur | us-east1 |
35.196.207.183 35.237.231.98 104.196.102.222 35.231.13.201 34.75.129.215 34.75.127.9 35.229.36.137 35.237.91.139 |
|
Toronto | northamerica-northeast2 |
34.124.116.108 34.124.116.107 34.124.116.102 34.124.116.80 34.124.116.72 34.124.116.85 34.124.116.20 34.124.116.68 |
|
Europa | |||
Bélgica | europe-west1 |
35.240.36.149 35.205.171.56 34.76.234.4 35.205.38.234 34.77.237.73 35.195.107.238 35.195.52.87 34.76.102.189 |
|
Berlín | europe-west10 |
34.32.28.80 34.32.31.206 34.32.19.49 34.32.33.71 34.32.15.174 34.32.23.7 34.32.1.208 34.32.8.3 |
|
Finlandia | europe-north1 |
35.228.35.94 35.228.183.156 35.228.211.18 35.228.146.84 35.228.103.114 35.228.53.184 35.228.203.85 35.228.183.138 |
|
Fráncfort | europe-west3 |
35.246.153.144 35.198.80.78 35.246.181.106 35.246.211.135 34.89.165.108 35.198.68.187 35.242.223.6 34.89.137.180 |
|
Londres | europe-west2 |
35.189.119.113 35.189.101.107 35.189.69.131 35.197.205.93 35.189.121.178 35.189.121.41 35.189.85.30 35.197.195.192 |
|
Madrid | europe-southwest1 |
34.175.99.115 34.175.186.237 34.175.39.130 34.175.135.49 34.175.1.49 34.175.95.94 34.175.102.118 34.175.166.114 |
|
Milán | europe-west8 |
34.154.183.149 34.154.40.104 34.154.59.51 34.154.86.2 34.154.182.20 34.154.127.144 34.154.201.251 34.154.0.104 |
|
Países Bajos | europe-west4 |
35.204.237.173 35.204.18.163 34.91.86.224 34.90.184.136 34.91.115.67 34.90.218.6 34.91.147.143 34.91.253.1 |
|
París | europe-west9 |
34.163.76.229 34.163.153.68 34.155.181.30 34.155.85.234 34.155.230.192 34.155.175.220 34.163.68.177 34.163.157.151 |
|
Estocolmo | europe-north2 |
34.51.133.48 34.51.136.177 34.51.128.140 34.51.141.252 34.51.139.127 34.51.142.55 34.51.134.218 34.51.138.9 |
|
Turín | europe-west12 |
34.17.15.186 34.17.44.123 34.17.41.160 34.17.47.82 34.17.43.109 34.17.38.236 34.17.34.223 34.17.16.47 |
|
Varsovia | europe-central2 |
34.118.72.8 34.118.45.245 34.118.69.169 34.116.244.189 34.116.170.150 34.118.97.148 34.116.148.164 34.116.168.127 |
|
Zúrich | europe-west6 |
34.65.205.160 34.65.121.140 34.65.196.143 34.65.9.133 34.65.156.193 34.65.216.124 34.65.233.83 34.65.168.250 |
|
Asia-Pacífico | |||
Delhi | asia-south2 |
34.126.212.96 34.126.212.85 34.126.208.224 34.126.212.94 34.126.208.226 34.126.212.232 34.126.212.93 34.126.212.206 |
|
Hong Kong | asia-east2 |
34.92.245.180 35.241.116.105 35.220.240.216 35.220.188.244 34.92.196.78 34.92.165.209 35.220.193.228 34.96.153.178 |
|
Yakarta | asia-southeast2 |
34.101.79.105 34.101.129.32 34.101.244.197 34.101.100.180 34.101.109.205 34.101.185.189 34.101.179.27 34.101.197.251 |
|
Melbourne | australia-southeast2 |
34.126.196.95 34.126.196.106 34.126.196.126 34.126.196.96 34.126.196.112 34.126.196.99 34.126.196.76 34.126.196.68 |
|
Bombay | asia-south1 |
34.93.67.112 35.244.0.1 35.200.245.13 35.200.203.161 34.93.209.130 34.93.120.224 35.244.10.12 35.200.186.100 |
|
Osaka | asia-northeast2 |
34.97.94.51 34.97.118.176 34.97.63.76 34.97.159.156 34.97.113.218 34.97.4.108 34.97.119.140 34.97.30.191 |
|
Seúl | asia-northeast3 |
34.64.152.215 34.64.140.241 34.64.133.199 34.64.174.192 34.64.145.219 34.64.136.56 34.64.247.158 34.64.135.220 |
|
Singapur | asia-southeast1 |
34.87.12.235 34.87.63.5 34.87.91.51 35.198.197.191 35.240.253.175 35.247.165.193 35.247.181.82 35.247.189.103 |
|
Sídney | australia-southeast1 |
35.189.33.150 35.189.38.5 35.189.29.88 35.189.22.179 35.189.20.163 35.189.29.83 35.189.31.141 35.189.14.219 |
|
Taiwán | asia-east1 |
35.221.201.20 35.194.177.253 34.80.17.79 34.80.178.20 34.80.174.198 35.201.132.11 35.201.223.177 35.229.251.28 35.185.155.147 35.194.232.172 |
|
Tokio | asia-northeast1 |
34.85.11.246 34.85.30.58 34.85.8.125 34.85.38.59 34.85.31.67 34.85.36.143 34.85.32.222 34.85.18.128 34.85.23.202 34.85.35.192 |
|
Oriente Medio | |||
Dammam | me-central2 |
34.166.20.177 34.166.10.104 34.166.21.128 34.166.19.184 34.166.20.83 34.166.18.138 34.166.18.48 34.166.23.171 |
|
Doha | me-central1 |
34.18.48.121 34.18.25.208 34.18.38.183 34.18.33.25 34.18.21.203 34.18.21.80 34.18.36.126 34.18.23.252 |
|
Tel Aviv | me-west1 |
34.165.184.115 34.165.110.74 34.165.174.16 34.165.28.235 34.165.170.172 34.165.187.98 34.165.85.64 34.165.245.97 |
|
África | |||
Johannesburgo | africa-south1 |
34.35.11.24 34.35.10.66 34.35.8.32 34.35.3.248 34.35.2.113 34.35.5.61 34.35.7.53 34.35.3.17 |
Ubicaciones multirregionales
Descripción de la multirregión | Nombre de la multirregión | Direcciones IP |
---|---|---|
Centros de datos dentro de los estados miembros de la Unión Europea1 | EU |
34.76.156.158 34.76.156.172 34.76.136.146 34.76.1.29 34.76.156.232 34.76.156.81 34.76.156.246 34.76.102.206 34.76.129.246 34.76.121.168 |
Centros de datos en Estados Unidos | US |
35.185.196.212 35.197.102.120 35.185.224.10 35.185.228.170 35.197.5.235 35.185.206.139 35.197.67.234 35.197.38.65 35.185.202.229 35.185.200.120 |
1 Los datos ubicados en la multirregión EU
no se almacenan en los centros de datos de europe-west2
(Londres) ni deeurope-west6
(Zúrich).
Genera metadatos y ejecuta el motor de traducción
El conector del Servicio de transferencia de datos de BigQuery para Snowflake usa el motor de traducción del servicio de migración de BigQuery para la asignación de esquemas cuando se migran tablas de Snowflake a BigQuery. Para completar una transferencia de datos de Snowflake, primero debes generar metadatos para la traducción y, luego, ejecutar el motor de traducción:
- Ejecuta
dwh-migration-tool
para Snowflake. Para obtener más información, consulta Genera metadatos para la traducción y la evaluación. - Sube el archivo
metadata.zip
generado a un bucket de Cloud Storage. El archivometadata.zip
se usa como entrada para el motor de traducción. - Ejecuta el servicio de traducción por lotes y especifica el campo
target_types
comodts-mapping
. Para obtener más información, consulta Cómo traducir consultas de SQL con la API de traducción.- El siguiente es un ejemplo de un comando para ejecutar una traducción por lotes para Snowflake:
curl -d "{ "name": "sf_2_bq_translation", "displayName": "Snowflake to BigQuery Translation", "tasks": { string: { "type": "Snowflake2BigQuery_Translation", "translation_details": { "target_base_uri": "gs://sf_test_translation/output", "source_target_mapping": { "source_spec": { "base_uri": "gs://sf_test_translation/input" } }, "target_types": "dts-mapping", } } }, }"
-H "Content-Type:application/json"
-H "Authorization: Bearer TOKEN" -X POST https://bigquerymigration.googleapis.com/v2alpha/projects/project_id/locations/location/workflows - Puedes verificar el estado de este comando en la página Traducción de SQL de BigQuery.
El resultado del trabajo de traducción por lotes se almacena en
gs://translation_target_base_uri/dts/config/
.
- El siguiente es un ejemplo de un comando para ejecutar una traducción por lotes para Snowflake:
Permisos necesarios de la cuenta de servicio
En una transferencia de Snowflake, se usa una cuenta de servicio para leer datos del resultado del motor de traducción en la ruta de acceso de Cloud Storage especificada.
Debes otorgar los permisos storage.objects.get
y storage.objects.list
a la cuenta de servicio.
Si la cuenta de servicio proviene de un Google Cloud proyecto diferente al proyecto que creó la transferencia de datos de BigQuery, también debes habilitar la autorización de cuentas de servicio entre proyectos.
Para obtener más información, consulta Roles y permisos de IAM de BigQuery.
Evalúa los datos de Snowflake
BigQuery escribe datos de Snowflake en
Cloud Storage como archivos Parquet. Los archivos Parquet no admiten los tipos de datos TIMESTAMP_TZ
y TIMESTAMP_LTZ
. Si tus datos contienen estos tipos, puedes exportarlos a
Amazon S3 como archivos CSV y, luego, importarlos a
BigQuery. Para obtener más información, consulta Descripción general de las transferencias de Amazon S3.
Recopila información de transferencia
Recopila la información que necesitas para configurar la migración con el Servicio de transferencia de datos de BigQuery:
- El identificador de tu cuenta de Snowflake, que es el prefijo de la URL de tu cuenta de Snowflake Por ejemplo,
ACCOUNT_IDENTIFIER.snowflakecomputing.com
. - El nombre de usuario y la contraseña de un usuario con los permisos adecuados para tu base de datos de Snowflake Solo puede tener los permisos necesarios para ejecutar la transferencia de datos.
- El URI del bucket de Amazon S3 que deseas usar para la transferencia y el par de claves de acceso del usuario de AWS Te recomendamos que configures una política de ciclo de vida para este bucket a fin de evitar cargos innecesarios.
- Es el URI del bucket de Cloud Storage en el que almacenaste los archivos de asignación de esquemas obtenidos del motor de traducción.
Configura una transferencia de Snowflake
Selecciona una de las siguientes opciones:
Console
Ve a la página Transferencia de datos en la consola de Google Cloud .
Haz clic en
Crear transferencia.En la sección Tipo de fuente, selecciona Migración de Snowflake en la lista Fuente.
En la sección Transfer config name (Nombre de la configuración de transferencia), ingresa un nombre para la transferencia, como
My migration
, en el campo Display name (Nombre visible). El nombre visible puede ser cualquier valor que te permita identificar la transferencia si necesitas modificarla más tarde.En la sección Destination settings (Configuración de destino), elige el conjunto de datos que creaste de la lista Dataset (Conjunto de datos).
En la sección Detalles de fuente de datos, haz lo siguiente:
- En Identificador de cuenta, ingresa un identificador único para tu cuenta de Snowflake, que es una combinación del nombre de tu organización y el nombre de tu cuenta. El identificador es el prefijo de la URL de la cuenta de Snowflake, no la URL completa. Por ejemplo,
ACCOUNT_IDENTIFIER.snowflakecomputing.com
- En Nombre de usuario, ingresa el nombre de usuario del usuario de Snowflake cuyas credenciales y autorización se usan para acceder a tu base de datos y transferir las tablas de Snowflake. Te recomendamos que uses el usuario que creaste para esta transferencia.
- En Contraseña, ingresa la contraseña del usuario de Snowflake.
- En Almacén, ingresa un almacén que se use para ejecutar esta transferencia de datos.
- En Cuenta de servicio, ingresa una cuenta de servicio para usar con esta
transferencia de datos. La cuenta de servicio debe pertenecer al mismo proyectoGoogle Cloud en el que se crean la configuración de transferencia y el conjunto de datos de destino. La cuenta de servicio debe tener los permisos necesarios
storage.objects.list
ystorage.objects.get
. - En Base de datos, ingresa el nombre de la base de datos de Snowflake que contiene las tablas incluidas en esta transferencia de datos.
- En Esquema, ingresa el nombre del esquema de Snowflake que contiene las tablas incluidas en esta transferencia de datos.
En Patrones de nombre de la tabla (Table name patterns), especifica una tabla para transferir. Para ello, ingresa un nombre o un patrón que coincida con el nombre de la tabla en el esquema. Puedes usar expresiones regulares para especificar el patrón, por ejemplo,
table1_regex;table2_regex
. El patrón debe seguir la sintaxis de la expresión regular de Java. Por ejemplo:lineitem;ordertb
coincide con las tablas llamadaslineitem
yordertb
..*
coincide con todas las tablas.
En Ruta de acceso de GCS a la salida de la traducción, especifica una ruta de acceso a la carpeta de Cloud Storage que contiene los archivos de asignación de esquemas del motor de traducción.
- La ruta de acceso debe seguir el formato
gs:/translation_target_base_uri/dts/db/schema/
y debe terminar con/
.
- La ruta de acceso debe seguir el formato
En Nombre del objeto de integración de almacenamiento, ingresa el nombre del objeto de integración de almacenamiento de Snowflake. En este caso, es
S3
.En Proveedor de servicios en la nube (Cloud provider), selecciona
AWS
.Para URI de GCS, nombre de la cuenta de almacenamiento de Azure, nombre del contenedor de Azure, SAS de Azure, deja estos campos en blanco.
En URI de Amazon S3 (Amazon S3 URI), ingresa el URI del bucket S3 que usarás como área de etapa de pruebas.
En ID de clave de acceso (Access key ID) y Clave de acceso secreta (Secret access key), ingresa el par de claves de acceso.
- En Identificador de cuenta, ingresa un identificador único para tu cuenta de Snowflake, que es una combinación del nombre de tu organización y el nombre de tu cuenta. El identificador es el prefijo de la URL de la cuenta de Snowflake, no la URL completa. Por ejemplo,
Opcional: En la sección Opciones de notificación, haz lo siguiente:
- Haz clic en el botón de activación para habilitar las notificaciones por correo electrónico. Cuando habilitas esta opción, el administrador de transferencias recibe una notificación por correo electrónico cuando falla una ejecución de transferencia.
- En Seleccionar un tema de Cloud Pub/Sub (Select a Cloud Pub/Sub topic), elige el nombre de tu tema o haz clic en Crear un tema (Create a topic). Con esta opción, se configuran las notificaciones de ejecución de Pub/Sub para tu transferencia.
Haz clic en Guardar.
La consola de Google Cloud muestra todos los detalles de configuración de la transferencia, incluido un Nombre de recurso para esta transferencia.
bq
Ingresa el comando bq mk
y suministra la marca de creación de transferencias --transfer_config
. También se requieren las siguientes marcas:
--project_id
--data_source
--target_dataset
--display_name
--params
bq mk \ --transfer_config \ --project_id=project_id \ --data_source=data_source \ --target_dataset=dataset \ --display_name=name \ --service_account_name=service_account \ --params='parameters'
Reemplaza lo siguiente:
- project_id: El Google Cloud ID de tu proyecto. Si no se especifica
--project_id
, se usa el proyecto predeterminado. - data_source: Es la fuente de datos,
snowflake_migration
. - dataset: Es el conjunto de datos de destino de BigQuery para la configuración de transferencia.
- name es el nombre visible de la configuración de transferencia. El nombre de la transferencia puede ser cualquier valor que te permita identificarla si es necesario hacerle modificaciones más tarde.
- service_account: (Opcional) El nombre de la cuenta de servicio que se usa para autenticar tu transferencia. La cuenta de servicio debe ser propiedad del mismo
project_id
que se usa para crear la transferencia y debe tener todos los roles necesarios. - parameters son los parámetros de la configuración de transferencia creada en formato JSON. Por ejemplo:
--params='{"param":"param_value"}'
Los parámetros necesarios para una configuración de transferencia de Snowflake son los siguientes:
account_identifier
: Es un identificador único para tu cuenta de Snowflake, que es una combinación del nombre de tu organización y el nombre de tu cuenta. El identificador es el prefijo de la URL de la cuenta de Snowflake, no la URL completa. Por ejemplo,account_identifier.snowflakecomputing.com
username
: Es el nombre de usuario del usuario de Snowflake cuyas credenciales y autorización se usan para acceder a tu base de datos y transferir las tablas de Snowflake.password
: Ingresa la contraseña del usuario de Snowflake.warehouse
: Ingresa un almacén que se use para ejecutar esta transferencia de datos.service_account
: Ingresa una cuenta de servicio para usar con esta transferencia de datos. La cuenta de servicio debe pertenecer al mismo proyecto Google Cloud en el que se crean la configuración de transferencia y el conjunto de datos de destino. La cuenta de servicio debe tener los permisos necesariosstorage.objects.list
ystorage.objects.get
.database
: Ingresa el nombre de la base de datos de Snowflake que contiene las tablas incluidas en esta transferencia de datos.schema
: Ingresa el nombre del esquema de Snowflake que contiene las tablas incluidas en esta transferencia de datos.table_name_patterns
: Para especificar una tabla que se transferirá, ingresa un nombre o un patrón que coincida con el nombre de la tabla en el esquema. Puedes usar expresiones regulares para especificar el patrón, por ejemplo,table1_regex;table2_regex
. El patrón debe seguir la sintaxis de la expresión regular de Java. Por ejemplo:lineitem;ordertb
coincide con las tablas llamadaslineitem
yordertb
..*
coincide con todas las tablas.También puedes dejar este campo en blanco para migrar todas las tablas del esquema especificado.
translation_output_gcs_path
: Especifica una ruta de acceso a la carpeta de Cloud Storage que contiene los archivos de asignación de esquemas del motor de traducción.- La ruta de acceso debe seguir el formato
gs:/translation_target_base_uri/dts/db/schema/
y debe terminar con/
.
- La ruta de acceso debe seguir el formato
storage_integration_object_name
: Ingresa el nombre del objeto de integración de almacenamiento de Snowflake. En este caso, esS3
.cloud_provider
: IngresaAWS
.amazon_s3_uri
: Ingresa el URI del bucket de S3 que usarás como área de etapa de pruebas.aws_access_key_id
: Ingresa el par de claves de acceso.aws_secret_access_key
: Ingresa el par de claves de acceso.
Por ejemplo, el siguiente comando crea una transferencia de Snowflake llamada snowflake transfer config
con un conjunto de datos de destino llamado your_bq_dataset
y un proyecto con el ID de your_project_id
.
PARAMS='{ "account_identifier": "your_account_identifier", "aws_access_key_id": "your_access_key_id", "aws_secret_access_key": "your_aws_secret_access_key", "cloud_provider": "AWS", "database": "your_sf_database", "password": "your_sf_password", "schema": "your_snowflake_schema", "service_account": "your_service_account", "storage_integration_object_name": "your_storage_integration_object", "staging_s3_uri": "s3://your/s3/bucket/uri", "table_name_patterns": ".*", "translation_output_gcs_path": "gs://sf_test_translation/output/dts/database_name/schema_name/", "username": "your_sf_username", "warehouse": "your_warehouse" }' bq mk --transfer_config \ --project_id=your_project_id \ --target_dataset=your_bq_dataset \ --display_name='snowflake transfer config' \ --params="$PARAMS" \ --data_source=snowflake_migration
API
Usa el método projects.locations.transferConfigs.create
y suministra una instancia del recurso TransferConfig
.
Cuotas y límites
BigQuery tiene una cuota de carga de 15 TB para cada trabajo de carga por cada tabla. Por dentro, Snowflake comprime los datos de la tabla, por lo que el tamaño de la tabla exportada es mayor que el tamaño de la tabla informado por Snowflake. Si planeas migrar una tabla de más de 15 TB, comunícate con dts-migration-preview-support@google.com.
Debido al modelo de coherencia de Amazon S3, es posible que algunos archivos no se incluyan en la transferencia a BigQuery.
Precios
Para obtener información sobre los precios del Servicio de transferencia de datos de BigQuery, consulta la página Precios.
- Si el almacén de Snowflake y el bucket de Amazon S3 están en regiones diferentes, Snowflake aplica cargos de salida cuando ejecutas una transferencia de datos de Snowflake. No hay cargos de salida por las transferencias de datos de Snowflake si el almacén de Snowflake y el bucket de Amazon S3 se encuentran en la misma región.
- Cuando se transfieren datos de AWS a Google Cloud, se aplican cargos de salida entre nubes.
¿Qué sigue?
- Obtén más información acerca del Servicio de transferencia de datos de BigQuery.
- Migra el código SQL con la traducción de SQL por lotes.