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.

El flujo de datos durante una migración de Snowflake 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:

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.

  1. Prepara tu Google Cloud proyecto
  2. Roles de BigQuery obligatorios
  3. Prepara tu bucket de Amazon S3
  4. Crea un usuario de Snowflake con los permisos necesarios
  5. Cómo agregar políticas de red
  6. Genera metadatos y ejecuta el motor de traducción
  7. Evalúa tu cuenta de Snowflake para detectar tipos de datos no admitidos
  8. 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:

  1. Crea un Google Cloud proyecto o selecciona uno existente.

  2. Verifica si completaste todas las acciones necesarias para habilitar el Servicio de transferencia de datos de BigQuery.

  3. 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.

  1. Crea un bucket de Amazon S3. El bucket de Amazon S3 se usa para preparar los datos antes de que se carguen en BigQuery.

  2. 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:

  1. Crea un usuario de IAM de Amazon dedicado y bríndale la política AmazonS3ReadOnlyAccess.

  2. 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 Snowflake
  • SCHEMA_NAME: El nombre de tu esquema de Snowflake
  • TABLE_NAME: el nombre de Snowflake que se incluye en esta transferencia de datos
  • STORAGE_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:

  1. 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.
  2. 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:

  1. Ejecuta dwh-migration-tool para Snowflake. Para obtener más información, consulta Genera metadatos para la traducción y la evaluación.
  2. Sube el archivo metadata.zip generado a un bucket de Cloud Storage. El archivo metadata.zip se usa como entrada para el motor de traducción.
  3. Ejecuta el servicio de traducción por lotes y especifica el campo target_types como dts-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/.

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:

Configura una transferencia de Snowflake

Selecciona una de las siguientes opciones:

Console

  1. Ve a la página Transferencia de datos en la consola de Google Cloud .

    Ir a Transferencias de datos

  2. Haz clic en Crear transferencia.

  3. En la sección Tipo de fuente, selecciona Migración de Snowflake en la lista Fuente.

  4. 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.

  5. En la sección Destination settings (Configuración de destino), elige el conjunto de datos que creaste de la lista Dataset (Conjunto de datos).

  6. En la sección Detalles de fuente de datos, haz lo siguiente:

    1. 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
    2. 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.
    3. En Contraseña, ingresa la contraseña del usuario de Snowflake.
    4. En Almacén, ingresa un almacén que se use para ejecutar esta transferencia de datos.
    5. 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 y storage.objects.get.
    6. En Base de datos, ingresa el nombre de la base de datos de Snowflake que contiene las tablas incluidas en esta transferencia de datos.
    7. En Esquema, ingresa el nombre del esquema de Snowflake que contiene las tablas incluidas en esta transferencia de datos.
    8. 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 llamadas lineitem y ordertb.
      • .* coincide con todas las tablas.
    9. 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 /.
    10. 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.

    11. En Proveedor de servicios en la nube (Cloud provider), selecciona AWS.

    12. 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.

    13. En URI de Amazon S3 (Amazon S3 URI), ingresa el URI del bucket S3 que usarás como área de etapa de pruebas.

    14. En ID de clave de acceso (Access key ID) y Clave de acceso secreta (Secret access key), ingresa el par de claves de acceso.

  7. Opcional: En la sección Opciones de notificación, haz lo siguiente:

    1. 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.
    2. 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.
  8. Haz clic en Guardar.

  9. 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 necesarios storage.objects.list y storage.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 llamadas lineitem y ordertb.
    • .* 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 /.
  • storage_integration_object_name: Ingresa el nombre del objeto de integración de almacenamiento de Snowflake. En este caso, es S3.

  • cloud_provider: Ingresa AWS.

  • 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?