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 Snowflake involucra agentes de migración en Google Kubernetes Engine y activa una operación de carga desde 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 primero se almacenan de forma intermedia en tu bucket de Amazon S3 y, luego, se transfieren a BigQuery con el Servicio de transferencia de datos de BigQuery.
- En el caso de las cuentas de Snowflake alojadas enGoogle Cloud, los datos primero se almacenan en etapa intermedia en tu bucket de Cloud Storage y, luego, se transfieren a BigQuery con el Servicio de transferencia de datos de BigQuery.
- En el caso de las cuentas de Snowflake alojadas en Azure, los datos primero se almacenan en etapa de pruebas en tu contenedor de Azure Blob Storage y, luego, se transfieren a BigQuery con el Servicio de transferencia de datos de BigQuery.
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 esquema de Snowflake. Para transferir datos 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 desde Snowflake a 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 Parquet. Los archivos Parquet no admiten los tipos de datos
TIMESTAMP_TZyTIMESTAMP_LTZ. Si tus datos contienen estos tipos, puedes exportarlos a Amazon S3 como archivos CSV y, luego, importar los archivos CSV a BigQuery. Para obtener más información, consulta Descripción general de las transferencias de Amazon S3.
Antes de comenzar
Antes de configurar una transferencia de Snowflake, debes seguir todos los pasos que se indican en esta sección. A continuación, se incluye una lista de todos los pasos necesarios.
- 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 funcionan las CMEK con las transferencias, consulta Especifica la clave de encriptación con transferencias.
Prepara tu proyecto de Google Cloud
Crea y configura tu proyecto Google Cloud para una transferencia de 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 de datos de 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 Cómo otorgar acceso a bigquery.admin.
Prepara el bucket de etapa de pruebas
Para completar una transferencia de datos de Snowflake, debes crear un bucket de etapa de pruebas y, luego, configurarlo para permitir el acceso de escritura desde Snowflake.
Selecciona una de las siguientes opciones:
AWS
Bucket de staging para la cuenta de Snowflake alojada en AWS
En el caso de la cuenta de Snowflake alojada en AWS, crea un bucket de Amazon S3 para organizar los datos de Snowflake 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 otórgale la política AmazonS3ReadOnlyAccess.
Crea un par de claves de acceso de Amazon para el usuario de IAM.
Azure
Contenedor de Azure Blob Storage de almacenamiento provisional para la cuenta de Snowflake hospedada en Azure
Para las cuentas de Snowflake alojadas en Azure, crea un contenedor de Azure Blob Storage para almacenar los datos de Snowflake antes de que se carguen en BigQuery.
- Crea una cuenta de almacenamiento de Azure y un contenedor de almacenamiento dentro de ella.
- Crea y configura un objeto de integración de almacenamiento de Snowflake para permitir que Snowflake escriba datos en el contenedor de almacenamiento de Azure como una etapa externa. Ten en cuenta que puedes omitir el "Paso 3: Crear una etapa externa", ya que no la usaremos.
Para permitir el acceso de lectura en tu contenedor de Azure, genera un token SAS para él.
Google Cloud
Bucket de transferencia para la cuenta de Snowflake alojada en Google Cloud
En el caso de las cuentas de Snowflake alojadas en Google Cloud, crea un bucket de Cloud Storage para almacenar los datos de Snowflake en etapa intermedia antes de que se carguen 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.
Para permitir el acceso al bucket de etapa de pruebas, otorga al agente de servicio de DTS el rol de
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
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 nuevo 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;
Reemplaza lo siguiente:
MIGRATION_ROLE: El nombre del rol personalizado que creasWAREHOUSE_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 SnowflakeTABLE_NAME: Es el nombre de la instancia de Snowflake incluida en esta transferencia de datos.STORAGE_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 la obsolescencia de los inicios de sesión con contraseña de un solo factor por parte de Snowflake, te recomendamos que uses un par de claves para la autenticación.
Puedes configurar un par de claves generando un par de clave RSA encriptado o sin encriptar y, luego, asignando la clave pública a un usuario de Snowflake. Para obtener más información, consulta Configura la autenticación con pares de claves.
Agrega 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. Para obtener más información, consulta Configura políticas de red para 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:
- 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 deseas usar para la transferencia:
- En el caso de una cuenta de Snowflake alojada en AWS, se requiere un URI de bucket de Amazon S3 junto con las credenciales de acceso.
- Para un Snowflake alojado en Azure, se requiere una cuenta y un contenedor de Azure Blob Storage.
- Para una cuenta de Snowflake alojada enGoogle Cloud, se requiere un URI de bucket de Cloud Storage. 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 Google Cloud consola.
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 Account Identifier, 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 que uses el usuario que creaste para esta transferencia.
- En Authentication Mechanism, 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 a 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 Is Private Key Encrypted. Para obtener más información, consulta Cómo generar 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 Account Identifier, 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 de 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 transferencia (en MB).
En Cloud Provider, selecciona
AWS,AZUREoGCPsegún el proveedor de servicios en la nube que aloje tu cuenta de Snowflake.AWS
- En URI de Amazon S3, ingresa el URI del bucket de Amazon S3 que usarás como área de etapa de pruebas.
- En ID de clave de acceso y Clave de acceso secreta, ingresa el par de claves de acceso.
Azure
- En Nombre de la cuenta de almacenamiento de Azure y El contenedor en la cuenta de almacenamiento de Azure, ingresa el nombre de la cuenta de almacenamiento y el contenedor de Azure Blob Storage que se usarán como área de almacenamiento provisional.
- En Token SAS, ingresa el token SAS generado para el contenedor.
Google Cloud
- En URI de GCS, ingresa el URI de Cloud Storage que se usará como área de etapa de pruebas.
En la sección Cuenta de servicio, haz lo siguiente:
- En Cuenta de servicio, ingresa una cuenta de servicio para usar 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
storage.objects.listystorage.objects.get.
- En Cuenta de servicio, ingresa una cuenta de servicio para usar 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
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 Comportamiento de la transferencia de datos.
- 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 Use BigQuery Translation Engine Output, selecciona este campo si deseas especificar una ruta de salida de traducción personalizada.
- Opcional: En Ruta de acceso de GCS del resultado 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. 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 debe terminar con/.
- La ruta de acceso debe seguir el formato
- Opcional: En Ruta de acceso al archivo de esquema personalizado, especifica la ruta de Cloud Storage a un archivo de esquema personalizado.
- Opcional: En Map zero scale Snowflake NUMBER to BigQuery INT64, 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 Use Private Network, si creas una transferencia de datos privada, selecciona True.
- 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 el caso de Private Network Service, 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.
- 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_idque 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"}'
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 y 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 Cómo generar 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 a 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 necesariosstorage.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 de la transferencia. Los valores admitidos sonFULLyINCREMENTAL. Para obtener más información, consulta Comportamiento de la transferencia de datos.translation_output_gcs_path: (Opcional) Especifica una ruta de acceso a la carpeta de Cloud Storage que contiene los archivos de asignación de esquema 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
gs://translation_target_base_uri/metadata/config/db/schema/y debe 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.cloud_provider: IngresaAWS,AZUREoGCPsegún el proveedor de servicios en la nube que aloje tu cuenta de Snowflake.staging_s3_uri: Ingresa el URI del bucket de S3 que se usará como área de etapa de pruebas. Solo se requiere cuando tucloud_provideresAWS.aws_access_key_id: Ingresa el par de claves de acceso. Solo se requiere cuando tucloud_provideresAWS.aws_secret_access_key: Ingresa el par de claves de acceso. Solo se requiere cuando tucloud_provideresAWS.azure_storage_account: Ingresa el nombre de la cuenta de almacenamiento que se usará como área de transferencia. Solo se requiere cuando tucloud_provideresAZURE.staging_azure_container: Ingresa el contenedor dentro de Azure Blob Storage que se usará como área de transferencia. Solo se requiere cuando tucloud_provideresAZURE.azure_sas_token: Ingresa el token de SAS. Solo se requiere cuando tucloud_provideresAZURE.staging_gcs_uri: Ingresa el URI de Cloud Storage que se usará como área de transferencia. Solo se requiere cuando tucloud_provideresGCP.use_private_network: Si creas una transferencia de datos privada, configúralo comoTRUE.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", "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 la 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. 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 informado por Snowflake. Para cargar tablas de más de 15 TB, comunícate con dts-migration-preview-support@google.com.
Para mejorar los tiempos de carga de las tablas más grandes, especifica el tipo de trabajo PIPELINE para la asignación de tu reserva.
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 se encuentran 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 tanto el almacén de Snowflake como 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.