Programar una transferencia de Snowflake
El conector de Snowflake que proporciona BigQuery Data Transfer Service te permite programar y gestionar tareas de transferencia automatizadas para migrar datos de Snowflake a BigQuery mediante listas de permitidas de IPs públicas.
Información general
El conector de Snowflake emplea agentes de migración en Google Kubernetes Engine e inicia una operación de carga de Snowflake a un área de stage del mismo proveedor de nube en el que se aloja Snowflake. En el caso de las cuentas de Snowflake alojadas en AWS, los datos se almacenan primero en tu segmento de Amazon S3, que luego se transfiere a BigQuery con BigQuery Data Transfer Service.
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 mediante 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 en Microsoft Azure.
- El conector de Snowflake no admite transferencias de datos incrementales.
- El conector de Snowflake solo admite transferencias desde tablas de una única base de datos y un único esquema de Snowflake. Para transferir datos de tablas con varias bases de datos o esquemas de Snowflake, puedes configurar cada tarea de transferencia por separado.
- La velocidad de carga de datos de Snowflake a tu segmento de Amazon S3 está limitada por el almacén de Snowflake que hayas elegido para esta transferencia.
Los datos se extraen de Snowflake en formato 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 Evaluar datos de Snowflake.
El siguiente tipo de datos de Parquet no se admite, pero se puede convertir:
TIMESTAMP_NTZ
Usa el archivo YAML de configuración de conversión de tipo global para anular el comportamiento predeterminado de la conversión de
DATETIME
aTIMESTAMP
cuando generes metadatos y ejecutes el motor de traducción.El archivo YAML de configuración puede ser similar al siguiente ejemplo:
type: experimental_object_rewriter global: typeConvert: datetime: TIMESTAMP
- No se admiten los siguientes tipos de datos de Parquet:
Antes de empezar
Antes de configurar una transferencia de Snowflake, debe seguir todos los pasos que se indican 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 segmento de Amazon S3
- Crea un usuario de Snowflake con los permisos necesarios.
- Añadir políticas de red
- Opcional: Generar metadatos y ejecutar el motor de traducción
- Evaluar Snowflake para detectar tipos de datos no admitidos
- Recoger información sobre la transferencia
Prepara tu proyecto de Google Cloud
Crea y configura tu proyecto de Google Cloud para una transferencia de Snowflake siguiendo estos pasos:
Crea un proyecto Google Cloud o selecciona uno que ya tengas.
Comprueba que has completado todas las acciones necesarias para habilitar BigQuery Data Transfer Service.
Crea un conjunto de datos de BigQuery para almacenar tus datos. No es necesario que cree ninguna tabla.
Roles de BigQuery necesarios
Para obtener los permisos que necesitas para crear una transferencia,
pide a tu administrador que te conceda el
rol de gestión de identidades y accesos Administrador de BigQuery (roles/bigquery.admin
).
Para obtener más información sobre cómo conceder roles, consulta el artículo Gestionar el acceso a proyectos, carpetas y organizaciones.
Este rol predefinido contiene los permisos necesarios para crear una transferencia. Para ver los permisos exactos que se necesitan, despliega la sección Permisos necesarios:
Permisos obligatorios
Para crear una transferencia, se necesitan los siguientes permisos:
-
bigquery.transfers.update
en la cuenta de usuario o de servicio que cree la configuración de transferencia -
bigquery.datasets.get
en la cuenta de usuario o de servicio que cree la configuración de transferencia -
bigquery.datasets.update
en la cuenta de usuario o de servicio que cree la configuración de transferencia
También puedes obtener estos permisos con roles personalizados u otros roles predefinidos.
Preparar un segmento de Amazon S3
Para completar una transferencia de datos de Snowflake, debes crear un segmento de Amazon S3 y, a continuación, configurarlo para permitir el acceso de escritura desde Snowflake.
Crea un segmento de Amazon S3. El segmento de Amazon S3 se usa para almacenar los datos antes de cargarlos en BigQuery.
Crea y configura un objeto de integración de almacenamiento de Snowflake para permitir que Snowflake escriba datos en el segmento de Amazon S3 como un área de almacenamiento externa.
Para permitir el acceso de lectura a tu segmento de Amazon S3, debes hacer lo siguiente:
Crea un usuario de gestión de identidades y accesos de Amazon específico y concédele la política AmazonS3ReadOnlyAccess.
Crea un par de claves de acceso de Amazon para el usuario de IAM.
Crear un usuario de Snowflake con los permisos necesarios
Durante una transferencia de Snowflake, el conector de Snowflake se conecta a tu cuenta de Snowflake mediante una conexión JDBC. Debe crear un usuario de Snowflake 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;
Haz los cambios siguientes:
MIGRATION_ROLE
: el nombre del rol personalizado que vas a crearWAREHOUSE_NAME
: el nombre de tu almacén de datosDATABASE_NAME
: el nombre de tu base de datos de SnowflakeSCHEMA_NAME
: el nombre de tu esquema de copo de nieveTABLE_NAME
: el nombre de la instancia de Snowflake incluida en esta transferencia de datosSTORAGE_INTEGRATION_OBJECT_NAME
: el nombre de tu objeto de integración de almacenamiento de Snowflake.
Generar un par de claves para la autenticación
Debido a la obsolescencia de los inicios de sesión con contraseña de un solo factor por parte de Snowflake, te recomendamos que utilices un par de claves para la autenticación.
Puede configurar un par de claves generando un par de claves RSA cifrado o sin cifrar y, a continuación, asignando la clave pública a un usuario de Snowflake. Para obtener más información, consulta Configurar la autenticación con pares de claves.
Añadir políticas de red
En el caso de la conectividad pública, la cuenta de Snowflake permite la conexión pública con las credenciales de la base de datos de forma predeterminada. Sin embargo, es posible que hayas configurado reglas o políticas de red que impidan que el conector de Snowflake se conecte a tu cuenta. En ese caso, debe añadir las direcciones IP necesarias a su lista de permitidas.
En la siguiente tabla se muestra una lista de las direcciones IP de las ubicaciones regionales y multirregionales que se usan para las transferencias públicas. Puedes añadir las direcciones IP que solo correspondan a la ubicación de tu conjunto de datos o todas las direcciones IP que se indican en la tabla. Estas son direcciones IP reservadas por Google para las transferencias de datos de BigQuery Data Transfer Service.
Para añadir una dirección IP a una lista de permitidas, sigue estos pasos:
- Crea una regla de red
con
type
=IPV4
. BigQuery Data Transfer Service usa una conexión JDBC para conectarse a la cuenta de Snowflake. - Crea una política de red con la regla de red que has creado 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 |
|
Norte de Virginia | 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 Paolo | 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 | |||
Deli | 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 multirregional | Nombre multirregional | Direcciones IP |
---|---|---|
Centros de datos en 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 europe-west2
(Londres) ni europe-west6
(Zúrich).
Generar metadatos y ejecutar el motor de traducción
Puedes saltarte esta sección si quieres que el conector de Snowflake detecte automáticamente el esquema de tus tablas de Snowflake durante una transferencia de datos de Snowflake.
Sin embargo, si quieres definir tu esquema manualmente (por ejemplo, si quieres anular determinados atributos del esquema), puedes hacerlo siguiendo estos pasos para generar tus metadatos y ejecutar el motor de traducción.
El conector de BigQuery Data Transfer Service para Snowflake usa el motor de traducción del servicio de migración de BigQuery para asignar esquemas al migrar tablas de Snowflake a BigQuery. Para completar una transferencia de datos de Snowflake, primero debe generar metadatos para la traducción y, a continuación, ejecutar el motor de traducción:
- Ejecuta
dwh-migration-tool
para Snowflake. Para obtener más información, consulta Generar metadatos para la traducción y la evaluación. - Sube el archivo
metadata.zip
generado a un segmento 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
comometadata
. Para obtener más información, consulta Traducir consultas de SQL con la API Translation.- A continuación, se muestra 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\": \"metadata\", } } }, }" \ -H "Content-Type:application/json" \ -H "Authorization: Bearer TOKEN" -X POST https://bigquerymigration.googleapis.com/v2alpha/projects/project_id/locations/location/workflows
- Puedes consultar el estado de este comando en la página Traducción de SQL de BigQuery.
El resultado de la tarea de traducción por lotes se almacena en
gs://translation_target_base_uri/metadata/config/
.
Permisos de cuenta de servicio necesarios
En una transferencia de Snowflake, se usa una cuenta de servicio para leer los datos de la salida del motor de traducción en la ruta de Cloud Storage especificada.
Debes conceder a la cuenta de servicio los permisos storage.objects.get
y storage.objects.list
.
Te recomendamos que la cuenta de servicio pertenezca al mismo Google Cloud proyecto en el que se creen la configuración de transferencia y el conjunto de datos de destino. Si la cuenta de servicio está en un Google Cloud proyecto distinto del proyecto que creó la transferencia de datos de BigQuery, debes habilitar la autorización de cuentas de servicio entre proyectos.
Para obtener más información, consulta el artículo sobre los roles y permisos de gestión de identidades y accesos de BigQuery.
Evaluar 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, a continuación, importar los archivos CSV a BigQuery. Para obtener más información, consulta la descripción general de las transferencias de Amazon S3.
Recoger información sobre la transferencia
Reúne la información que necesitas para configurar la migración con BigQuery Data Transfer Service:
- 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 clave privada asociada con los permisos adecuados para tu base de datos de Snowflake. Solo debe tener los permisos necesarios para ejecutar la transferencia de datos.
- El URI del segmento de Amazon S3 que quieras usar para la transferencia y el par de claves de acceso de usuario de AWS. Te recomendamos que configures una política de ciclo de vida para este segmento y así evitar cargos innecesarios.
- El URI del segmento de Cloud Storage en el que has almacenado los archivos de asignación de esquemas obtenidos del motor de traducción.
Configurar una transferencia de Snowflake
Selecciona una de las opciones siguientes:
Consola
Ve a la página Transferencias de datos de la Google Cloud consola.
Haz clic en
Crear transferencia.En la sección Tipo de fuente, seleccione Migración de Snowflake en la lista Fuente.
En la sección Nombre de la configuración de transferencia, indica un nombre para la transferencia, como
My migration
, en el campo Nombre visible. El nombre visible puede ser cualquier valor que te permita identificar la transferencia si necesitas modificarla más adelante.En la sección Configuración de destino, elija el conjunto de datos que ha creado en la lista Conjunto de datos.
En la sección Detalles de la fuente de datos, haga lo siguiente:
- En Identificador de cuenta, introduzca un identificador único para su cuenta de Snowflake, que es una combinación del nombre de su organización y el nombre de la cuenta. El identificador es el prefijo de la URL de la cuenta de Snowflake y no la URL completa. Por ejemplo,
ACCOUNT_IDENTIFIER.snowflakecomputing.com
. - En Nombre de usuario, introduce el nombre de usuario de Snowflake cuyas credenciales y autorización se usarán para acceder a tu base de datos y transferir las tablas de Snowflake. Te recomendamos que uses el usuario que has creado para esta transferencia.
- En Auth mechanism (Mecanismo de autenticación), selecciona un método de autenticación de usuario de Snowflake. Para obtener más información, consulta Generar un par de claves para la autenticación.
- En Password (Contraseña), introduce la contraseña del usuario de Snowflake. Este campo es obligatorio si has seleccionado PASSWORD en el campo Auth mechanism (Mecanismo de autenticación).
- En Clave privada, introduce la clave privada vinculada a la clave pública asociada al usuario de Snowflake. Este campo es obligatorio si has seleccionado KEY_PAIR en el campo Mecanismo de autenticación.
- En ¿Está cifrada la clave privada?, seleccione este campo si la clave privada está cifrada con una frase de contraseña.
- En Frase de contraseña de la clave privada, introduce la frase de contraseña de la clave privada cifrada. Este campo es obligatorio si ha seleccionado KEY_PAIR en los campos Mecanismo de autenticación y ¿Está cifrada la clave privada?.
- En Almacén, introduce un almacén que se use para ejecutar esta transferencia de datos.
- En Cuenta de servicio, introduce una cuenta de servicio que quieras usar para esta transferencia de datos. La cuenta de servicio debe tener los permisos necesarios
storage.objects.list
ystorage.objects.get
. - En Base de datos, introduzca el nombre de la base de datos de Snowflake que contiene las tablas incluidas en esta transferencia de datos.
- En Esquema, introduce el nombre del esquema de Snowflake que contiene las tablas incluidas en esta transferencia de datos.
En Patrones de nombres de tabla, especifica una tabla que quieras transferir introduciendo 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 expresiones regulares de Java. Por ejemplo,lineitem;ordertb
coincide con las tablas llamadaslineitem
yordertb
..*
coincide con todas las tablas.
Opcional: En Ruta de GCS de salida de la traducción, especifica una ruta a la carpeta de Cloud Storage que contiene los archivos de asignación de esquemas del motor de traducción. Puedes dejar este campo vacío para que el conector de Snowflake detecte automáticamente tu esquema.
- La ruta debe tener el formato
translation_target_base_uri/metadata/config/db/schema/
y debe terminar con/
.
- La ruta debe tener el formato
En Storage integration object name (Nombre del objeto de integración de almacenamiento), introduzca el nombre del objeto de integración de almacenamiento de Snowflake. En este caso,
S3
.En Proveedor de servicios en la nube, selecciona
AWS
.En URI de GCS, nombre de cuenta de almacenamiento de Azure, nombre de contenedor de Azure y SAS de Azure, deja estos campos en blanco.
En URI de Amazon S3, introduce el URI del segmento de S3 que quieras usar como área de almacenamiento temporal.
En ID de clave de acceso y Clave de acceso secreta, introduce el par de claves de acceso.
- En Identificador de cuenta, introduzca un identificador único para su cuenta de Snowflake, que es una combinación del nombre de su organización y el nombre de la cuenta. El identificador es el prefijo de la URL de la cuenta de Snowflake y no la URL completa. Por ejemplo,
Opcional: En la sección Opciones de notificación, haz lo siguiente:
- Haz clic en el interruptor para habilitar las notificaciones por correo electrónico. Si habilitas esta opción, el administrador de las transferencias recibirá una notificación por correo cuando falle una ejecución de transferencia.
- En Selecciona un tema de Pub/Sub, elige el tema o haz clic en Crear un tema. Esta opción configura las notificaciones de Pub/Sub sobre la transferencia.
Haz clic en Guardar.
La consola muestra todos los detalles de la configuración de la transferencia, incluido el nombre del recurso de esta transferencia. Google Cloud
bq
Introduce el comando bq mk
y proporciona la marca de creación de transferencia
--transfer_config
. También se necesitan 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'
Haz los cambios siguientes:
- project_id: tu ID de proyecto Google Cloud . Si no se especifica
--project_id
, se usa el proyecto predeterminado. - data_source: la fuente de datos,
snowflake_migration
. - dataset: el conjunto de datos de destino de BigQuery de la configuración de transferencia.
- name: el nombre visible de la configuración de la transferencia. El nombre de la transferencia puede ser cualquier valor que te permita identificarla si necesitas modificarla más adelante.
- service_account: (opcional) el nombre de la cuenta de servicio que se usa para autenticar la transferencia. La cuenta de servicio debe ser propiedad del mismo
project_id
que se usó para crear la transferencia y debe tener todos los roles necesarios. - parameters: 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
: especifica un identificador único para tu cuenta de Snowflake, que es una combinación del nombre de tu organización y el nombre de la cuenta. El identificador es el prefijo de la URL de la cuenta de Snowflake y no la URL completa. Por ejemplo,account_identifier.snowflakecomputing.com
.username
: especifica el nombre de usuario de Snowflake cuyas credenciales y autorización se utilizan para acceder a tu base de datos para transferir las tablas de Snowflake.auth_mechanism
: especifica el método de autenticación de usuarios de Snowflake. Los valores posibles sonPASSWORD
yKEY_PAIR
. Para obtener más información, consulta Generar un par de claves para la autenticación.password
: especifica la contraseña del usuario de Snowflake. Este campo es obligatorio si ha especificadoPASSWORD
en el campoauth_mechanism
.private_key
: especifica la clave privada vinculada a la clave pública asociada al usuario de Snowflake. Este campo es obligatorio si ha especificadoKEY_PAIR
en el campoauth_mechanism
.is_private_key_encrypted
: especificatrue
si la clave privada está cifrada con una frase de contraseña.private_key_passphrase
: especifica la frase de contraseña de la clave privada cifrada. Este campo es obligatorio si ha especificadoKEY_PAIR
en el campoauth_mechanism
ytrue
en el campois_private_key_encrypted
.warehouse
: especifica un almacén que se utiliza para ejecutar esta transferencia de datos.service_account
: especifica una cuenta de servicio que se usará con esta transferencia de datos. La cuenta de servicio debe pertenecer al mismo proyecto Google Cloud en el que se creen 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
: especifica el nombre de la base de datos de Snowflake que contiene las tablas incluidas en esta transferencia de datos.schema
: especifica el nombre del esquema de Snowflake que contiene las tablas incluidas en esta transferencia de datos.table_name_patterns
: especifica una tabla que se va a transferir introduciendo 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 expresiones regulares de Java. Por ejemplo,lineitem;ordertb
coincide con las tablas llamadaslineitem
yordertb
..*
coincide con todas las tablas.También puede dejar este campo en blanco para migrar todas las tablas del esquema especificado.
translation_output_gcs_path
: (Opcional) especifica la ruta a la carpeta de Cloud Storage que contiene los archivos de asignación de esquemas del motor de traducción. Puedes dejar este campo vacío para que el conector de Snowflake detecte automáticamente tu esquema.- La ruta debe tener el formato
gs://translation_target_base_uri/metadata/config/db/schema/
y debe terminar con/
.
- La ruta debe tener el formato
storage_integration_object_name
: especifica el nombre del objeto de integración de almacenamiento de Snowflake. En este caso,S3
.cloud_provider
: especificaAWS
.amazon_s3_uri
: especifica el URI del bucket de S3 que se va a usar como área de almacenamiento provisional.aws_access_key_id
: especifica el par de claves de acceso.aws_secret_access_key
: especifica 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 your_project_id
.
PARAMS='{ "account_identifier": "your_account_identifier", "auth_mechanism": "KEY_PAIR", "aws_access_key_id": "your_access_key_id", "aws_secret_access_key": "your_aws_secret_access_key", "cloud_provider": "AWS", "database": "your_sf_database", "private_key": "-----BEGIN PRIVATE KEY----- privatekey\nseparatedwith\nnewlinecharacters=-----END PRIVATE KEY-----", "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/metadata/config/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 proporciona una instancia del recurso TransferConfig
.
Cuotas y límites
BigQuery tiene una cuota de carga de 15 TB por cada tarea de carga y por cada tabla. Internamente, 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 que indica Snowflake. Si tienes previsto migrar una tabla de más de 15 TB, ponte en contacto 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 de BigQuery Data Transfer Service, consulta la página Precios.
- Si el almacén de Snowflake y el segmento de Amazon S3 están en regiones diferentes, Snowflake aplica cargos de salida cuando ejecutas una transferencia de datos de Snowflake. No se aplican cargos por salida de datos de Snowflake si tanto el almacén de Snowflake como el segmento de Amazon S3 se encuentran en la misma región.
- Cuando los datos se transfieren de AWS a Google Cloud, se aplican cargos de salida entre nubes.
Siguientes pasos
- Más información sobre BigQuery Data Transfer Service
- Migra código SQL con la traducción de SQL por lotes.