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 IPs públicas permitidas.
Descripción general
El conector de Snowflake involucra 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 bucket de Cloud Storage.
- Para las cuentas de Snowflake alojadas en Amazon Web Services (AWS), Azure o Google Cloud, los datos primero se almacenan en etapa de pruebas en tu bucket de Cloud Storage, que luego se transfiere a BigQuery con el Servicio de transferencia de datos de BigQuery.
En el siguiente diagrama, se ilustran las transferencias de datos públicos desde cuentas de Snowflake alojadas en Amazon Web Services (AWS) o Azure, o cuentas de Snowflake alojadas en Google Cloud.

Limitaciones
Las transferencias de datos realizadas con el conector de Snowflake están sujetas a las siguientes limitaciones:
- El conector de Snowflake solo admite transferencias desde tablas dentro de una sola base de datos y un 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 en tu bucket de Amazon S3, contenedor de Azure Blob Storage o bucket de Cloud Storage está limitada por el almacén de Snowflake que elegiste para esta transferencia.
- BigQuery escribe datos de Snowflake en
Cloud Storage como archivos de Parquet. Los archivos Parquet no admiten los tipos de datos
TIMESTAMP_TZniTIMESTAMP_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 Introducción a las transferencias de datos de Amazon S3.
Antes de comenzar
Antes de configurar una transferencia de Snowflake, debes realizar todos los pasos que se indican en esta sección. A continuación, se muestra una lista de todos los pasos obligatorios.
- Prepara tu proyecto de Google Cloud
- Roles de BigQuery requeridos
- Prepara tu bucket de etapa de pruebas
- Crea un usuario de Snowflake con los permisos necesarios
- Agrega políticas de red
- Opcional: Detección y asignación de esquemas
- Evalúa tu Snowflake para detectar tipos de datos no admitidos
- Opcional: Habilita las transferencias incrementales
- Opcional: Habilita la conectividad privada
- Recopila información de transferencia
- Si planeas especificar una clave de encriptación administrada por el cliente (CMEK), asegúrate de que tu cuenta de servicio tenga permisos para encriptar y desencriptar y de tener el Cloud KMS. Es el ID de recurso de la clave necesario para usar CMEK. Para obtener información sobre cómo funciona CMEK con las transferencias, consulta Especifica una clave de encriptación con transferencias.
Prepara tu proyecto de Google Cloud
Crea y configura tu proyecto de Google Cloud para una transferencia de Snowflake con los siguientes pasos:
Crea un proyecto de Google Cloud o selecciona uno existente.
Verifica que completaste todas las acciones obligatorias 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 de datos del Servicio de transferencia de datos de BigQuery,
pídele a tu administrador que te otorgue el
rol de IAM de administrador de BigQuery (roles/bigquery.admin) en tu proyecto.
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 de datos del Servicio de transferencia de datos de BigQuery. 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 de datos del Servicio de transferencia de datos de BigQuery:
-
Permisos del Servicio de transferencia de datos de BigQuery:
-
bigquery.transfers.update -
bigquery.transfers.get
-
-
Permisos de BigQuery:
-
bigquery.datasets.get -
bigquery.datasets.getIamPolicy -
bigquery.datasets.update -
bigquery.datasets.setIamPolicy -
bigquery.jobs.create
-
También puedes obtener estos permisos con roles personalizados o con otros roles predefinidos.
Para obtener más información, consulta Otorga acceso a bigquery.admin.
Prepara el bucket de etapa de pruebas
Para prepararte para una transferencia de datos de Snowflake, crea un bucket de etapa de pruebas y, luego, configúralo para permitir el acceso de escritura desde Snowflake. Debes almacenar los datos de Snowflake en un bucket de Cloud Storage antes de cargarlos en BigQuery.
- Crea buckets de Cloud Storage.
- Crea y configura un objeto de integración de almacenamiento de Snowflake para permitir que Snowflake escriba datos en el bucket de Cloud Storage como una etapa externa.
- Cuando ejecutas el comando
DESCRIBE INTEGRATION, la cuenta de servicio de Cloud Storage aparece en el campoSTORAGE_GCP_SERVICE_ACCOUNT. Otorga a la cuenta de servicio de Cloud Storage los siguientes permisos en el bucket de Cloud Storage:storage.objects.createstorage.objects.deletestorage.objects.getstorage.objects.list
Para permitir el acceso al bucket de etapa de pruebas, otorga al agente de servicio de DTS el rol
roles/storage.objectViewercon el siguiente comando:gcloud storage buckets add-iam-policy-binding gs://STAGING_BUCKET_NAME \ --member=serviceAccount:service-PROJECT_NUMBER@gcp-sa-bigquerydatatransfer.iam.gserviceaccount.com \ --role=roles/storage.objectViewer
Para una transferencia de datos privada de Snowflake, crea el bucket de etapa de pruebas y configúralo para la conectividad privada.
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 con 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 INTEGRATION STORAGE_INTEGRATION_OBJECT_NAME
TO ROLE MIGRATION_ROLE;
Reemplaza lo siguiente:
MIGRATION_ROLE: Es el nombre del rol personalizado que estás creando.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 incluido en esta transferencia de datosSTORAGE_INTEGRATION_OBJECT_NAME: Es el nombre de tu objeto de integración de almacenamiento de Snowflake.
Genera un par de claves para la autenticación
Debido a que Snowflake dejó de admitir los accesos con contraseña de un solo factor, te recomendamos que uses un par de claves para la autenticación.
Para configurar un par de claves, genera un par de clave RSA encriptado o sin encriptar y, luego, asigna la clave pública a un usuario de Snowflake. Para obtener más información, consulta Configura la autenticación de par de claves.
Permite la descarga en ubicaciones externas intercaladas
El conector de Snowflake descarga datos en ubicaciones externas intercaladas durante la transferencia. Si tu cuenta de Snowflake restringe la descarga a ubicaciones intercaladas, la transferencia fallará.
Para permitir la descarga en ubicaciones intercaladas, ejecuta el siguiente comando de SQL en tu cuenta de Snowflake. Debes tener el rol ACCOUNTADMIN en Snowflake para ejecutar este comando.
ALTER ACCOUNT SET PREVENT_UNLOAD_TO_INLINE_URL = false;
Agrega políticas de red
Para la conectividad pública, la cuenta de Snowflake permite la conexión pública con credenciales de 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. Para obtener más información, consulta Configura políticas de red para las transferencias de Snowflake.
Detección y asignación de esquemas
Para definir tu esquema, puedes usar el Servicio de transferencia de datos de BigQuery para detectar automáticamente el esquema y la asignación de tipos de datos cuando transfieras datos de Snowflake a BigQuery. Como alternativa, puedes usar el motor de traducción para definir tu esquema y los tipos de datos de forma manual.
Para obtener más información, consulta Detección y asignación de esquemas para Snowflake.
Habilita las transferencias incrementales
Para configurar una transferencia de datos incremental de Snowflake, consulta Configura transferencias incrementales para Snowflake.
Habilita la conectividad privada
Si deseas crear una transferencia de datos privada de Snowflake, debes configurar tu red para la conectividad privada.
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:
- Es 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 puede tener los permisos necesarios para ejecutar la transferencia de datos.
- El URI del bucket de etapa de pruebas que se usará para la transferencia. Te recomendamos que configures una política de ciclo de vida para este bucket para evitar cargos innecesarios.
- 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 adelante.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 Credenciales de Snowflake, haz lo siguiente:
- En Identificador de la 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 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, ingresa el nombre de 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 usar el usuario que creaste para esta transferencia.
- En Mecanismo de autenticación, selecciona un método de autenticación de usuario de Snowflake:
CONTRASEÑA
- En Contraseña, ingresa la contraseña del usuario de Snowflake.
KEY_PAIR
- En Clave privada, ingresa la clave privada vinculada con la clave pública asociada con el usuario de Snowflake.
- En Is Private Key Encrypted, selecciona este campo si la clave privada está encriptada con una frase de contraseña.
- En Frase de contraseña de clave privada, ingresa la frase de contraseña de la clave privada encriptada. Este campo es obligatorio si seleccionaste ¿La clave privada está encriptada?. Para obtener más información, consulta Genera un par de claves para la autenticación.
- En Almacén, ingresa un almacén que se use para la ejecución de esta transferencia de datos.
- En Base de datos de Snowflake, ingresa el nombre de la base de datos de Snowflake que contiene las tablas incluidas en esta transferencia de datos.
- En Esquema de Snowflake, ingresa el nombre del esquema de Snowflake que contiene las tablas incluidas en esta transferencia de datos.
- En Identificador de la 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 la
cuenta. El identificador es el prefijo de la URL de la cuenta de Snowflake
y no la URL completa. Por ejemplo,
En la sección Configuración del almacenamiento, haz lo siguiente:
- En Nombre del objeto de integración de almacenamiento, ingresa el nombre del objeto de integración de almacenamiento de Snowflake.
- Opcional: En Tamaño máximo del archivo, especifica el tamaño máximo de cada archivo descargado de Snowflake a la ubicación de etapa de pruebas (en MB).
En Proveedor de servicios en la nube, selecciona
AWS,AZUREoGCPsegún el proveedor de servicios en la nube que aloje tu cuenta de Snowflake.- En URI de GCS, ingresa el URI del bucket de Cloud Storage que usarás como bucket de etapa de pruebas.
En la sección Cuenta de servicio, haz lo siguiente:
- En Cuenta de servicio, ingresa una cuenta de servicio para usarla con esta
transferencia de datos. La cuenta de servicio debe pertenecer al mismo
proyecto deGoogle 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 de
storage.objects.listystorage.objects.get.
- En Cuenta de servicio, ingresa una cuenta de servicio para usarla con esta
transferencia de datos. La cuenta de servicio debe pertenecer al mismo
proyecto deGoogle 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 de
En la sección Configuración del esquema, haz lo siguiente:
- En Ingestion type, selecciona Full o Incremental. Para obtener más información, consulta Configura transferencias incrementales.
- En Patrones de nombre de la tabla, especifica una tabla para transferir ingresando
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;ordertbcoincide con las tablas llamadaslineitemyordertb..*coincide con todas las tablas.
- Opcional: En Usar el resultado del motor de traducción de BigQuery, selecciona este campo si deseas especificar una ruta de acceso de salida de traducción personalizada.
- Opcional: En Ruta de acceso de GCS de salida de 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. Puedes dejar este campo vacío para que el conector de Snowflake detecte automáticamente tu esquema.
- La ruta de acceso debe seguir el formato
translation_target_base_uri/metadata/config/db/schema/y terminar con/.
- La ruta de acceso debe seguir el formato
- Opcional: En Ruta de acceso del archivo de esquema personalizado, especifica la ruta de acceso de Cloud Storage a un archivo de esquema personalizado.
- Opcional: En Asignar NUMBER de Snowflake de escala cero a INT64 de BigQuery, selecciona este campo si deseas que los tipos
NUMBER(p, 0)de Snowflake se asignen aINT64de BigQuery.
En la sección Conectividad de red, haz lo siguiente:
- En Usar red privada, si creas una transferencia de datos privada, selecciona Verdadero.
- En Adjunto de servicio de PSC, si creas una conexión privada, ingresa el URI del adjunto de servicio. Para obtener más información, consulta Crea una configuración de transferencia privada de Snowflake.
- En Servicio de red privada, si creas una transferencia de datos privada, ingresa el vínculo propio del directorio de servicios. Para obtener más información, consulta Crea una configuración de transferencia privada de Snowflake.
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.
Si usas CMEK, en la sección Opciones avanzadas, selecciona Clave administrada por el cliente. Aparecerá una lista de las CMEK disponibles para que elijas. Para obtener información sobre cómo funcionan las CMEK con el Servicio de transferencia de datos de BigQuery, consulta Especifica la clave de encriptación con transferencias.
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: Es el ID del proyecto de Google Cloud . 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.NAMEes 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): Es el nombre de la cuenta de servicio que se usa para autenticar tu transferencia. La cuenta de servicio debe ser propiedad del mismoPROJECT_IDque se usa para crear la transferencia y debe tener todos los roles necesarios.PARAMETERSson los parámetros de la configuración de transferencia creada en formato JSON. Por ejemplo:--params='{"param":"param_value"}'
Puedes configurar los siguientes parámetros para tu configuración de transferencia de Snowflake:
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.comusername: Especifica el nombre de usuario del usuario de Snowflake cuyas credenciales y autorización se usan para acceder a tu base de datos para transferir las tablas de Snowflake.auth_mechanism: Especifica el método de autenticación de usuario de Snowflake. Los valores admitidos sonPASSWORDyKEY_PAIR. Para obtener más información, consulta Genera un par de claves para la autenticación.password: especifica la contraseña del usuario de Snowflake. Este campo es obligatorio si especificastePASSWORDen el campoauth_mechanism.private_key: Especifica la clave privada vinculada con la clave pública asociada con el usuario de Snowflake. Este campo es obligatorio si especificasteKEY_PAIRen el campoauth_mechanism.is_private_key_encrypted: Especificatruesi la clave privada está encriptada con una frase de contraseña.private_key_passphrase: Especifica la frase de contraseña para la clave privada encriptada. Este campo es obligatorio si especificasteKEY_PAIRen el campoauth_mechanismytrueen el campois_private_key_encrypted.warehouse: Especifica un almacén que se usa para la ejecución de esta transferencia de datos.service_account: Especifica una cuenta de servicio para usar con esta transferencia de datos. La cuenta de servicio debe pertenecer al mismo proyecto de 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 destorage.objects.listystorage.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 para transferir ingresando 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;ordertbcoincide con las tablas llamadaslineitemyordertb..*coincide con todas las tablas.También puedes dejar este campo en blanco para migrar todas las tablas del esquema especificado.
ingestion_mode: Especifica el modo de transferencia. Los valores admitidos sonFULLyINCREMENTAL. Para obtener más información, consulta Configura transferencias incrementales.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 (opcional). Puedes dejar este campo vacío para que el conector de Snowflake detecte automáticamente tu esquema.- La ruta de acceso debe seguir el formato
gs://translation_target_base_uri/metadata/config/db/schema/y terminar con/.
- La ruta de acceso debe seguir el formato
storage_integration_object_name: Especifica el nombre del objeto de integración de almacenamiento de Snowflake.max_file_size_mb: (Opcional) Especifica el tamaño máximo de cada archivo descargado de Snowflake a la ubicación de etapa de pruebas en MB. El valor debe ser de entre16y5120. El valor predeterminado es512.staging_gcs_uri: Ingresa el URI del bucket de Cloud Storage que usarás para almacenar tus datos en etapa de pruebas.use_private_network: Si creas una transferencia de datos privada, establécela enTRUE.service_attachment: Si creas una transferencia de datos privada, especifica el URI del adjunto de servicio. Para obtener más información, consulta Crea una configuración de transferencia privada de Snowflake.private_network_service: Si creas una transferencia de datos privada, especifica el vínculo propio del servicio de NLB. Para obtener más información, consulta Crea una configuración de transferencia privada de Snowflake.
Por ejemplo, para una cuenta de Snowflake alojada en AWS, 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", "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", "ingestion_mode": "INCREMENTAL", "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", "max_file_size_mb": "512", "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 suministra una instancia del recurso TransferConfig.
Especifica la clave de encriptación con transferencias
Puedes especificar claves de encriptación administradas por el cliente (CMEKs) para encriptar los datos de una ejecución de transferencia. Puedes usar una CMEK para admitir transferencias de Snowflake.Cuando especificas una CMEK con una transferencia, el Servicio de transferencia de datos de BigQuery aplica la CMEK a cualquier memoria caché del disco intermedia de datos transferidos para que todo el flujo de trabajo de transferencia de datos cumpla con la CMEK.
No puedes actualizar una transferencia existente para agregar una CMEK si la transferencia no se creó en un principio con una CMEK. Por ejemplo, no puedes cambiar una tabla de destino que se encriptó de forma predeterminada para que ahora se encripte con CMEK. Por el contrario, tampoco puedes cambiar una tabla de destino encriptada con CMEK para que tenga un tipo de encriptación diferente.
Puedes actualizar una CMEK para una transferencia si la configuración de transferencia se creó en un principio con una encriptación de CMEK. Cuando actualizas una CMEK para una configuración de transferencia, el Servicio de transferencia de datos de BigQuery propaga la CMEK a las tablas de destino en la siguiente ejecución de la transferencia, en la que el Servicio de transferencia de datos de BigQuery reemplaza cualquier CMEK desactualizada por la CMEK nueva durante la ejecución de la transferencia. Para obtener más información, consulta Actualiza una transferencia.
También puedes usar las claves predeterminadas del proyecto. Cuando especificas una clave predeterminada de proyecto con una transferencia, el Servicio de transferencia de datos de BigQuery usa la clave predeterminada del proyecto como la clave predeterminada para cualquier configuración de transferencia nueva.
Cuotas y límites
De forma predeterminada, BigQuery tiene una cuota de carga de 15 TB para cada trabajo de carga por cada tabla. De forma interna, 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.
Para mejorar los tiempos de carga de las tablas más grandes y quitar el límite de carga de 15 TB de BigQuery, especifica el tipo de trabajo PIPELINE
para tu asignación de reserva.
Debido al modelo de coherencia de Amazon S3, es posible que algunos archivos no se incluyan en la transferencia a BigQuery.
Optimiza el rendimiento de la transferencia de datos
Puedes supervisar el rendimiento de tus transferencias de datos consultando los registros de la transferencia de datos. Para mejorar el rendimiento de tus transferencias de datos, te recomendamos que sigas estos pasos de optimización:
- Mantén tu instancia de Snowflake, el bucket de etapa de pruebas y el conjunto de datos de BigQuery en la misma región
- Puedes mejorar las velocidades de descarga de tablas de la siguiente manera:
- Aumenta el tamaño de tu almacén virtual de Snowflake, en especial cuando transfieras tablas grandes de Snowflake (1 TiB o más).
- Ajusta la opción
MAX_FILE_SIZEen la configuración de transferencia.- Los tamaños de archivo más pequeños pueden mejorar las velocidades de transferencia, pero si son demasiado pequeños, puede haber demasiados archivos.
- Puedes mejorar las velocidades de carga de las tablas aumentando la cantidad de reservas de ranura de BigQuery para los tipos de trabajo
PIPELINEyQUERY. - Cuando realices una transferencia completa, evita agrupar en clústeres y particionar la tabla de BigQuery de destino.
- Cuando realices una transferencia incremental en el modo Actualizar o insertar, considera agrupar en clústeres y particionar las columnas de clave primaria para mejorar el rendimiento de la transferencia.
- Sin embargo, evita agrupar en clústeres y particionar en columnas que no sean de clave primaria para evitar operaciones de combinación más lentas.
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 los datos se transfieren 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.