Instructivos de migración de Snowflake a BigQuery
En este documento, se proporcionan ejemplos y instructivos de extremo a extremo para las diferentes formas en que puedes configurar una canalización de migración de Snowflake a BigQuery.
Ejemplos de canalizaciones de migración de Snowflake
Puedes migrar tus datos de Snowflake a BigQuery con tres procesos diferentes: ELT, ETL o herramientas de socios.
Extracción, carga y transformación
Puedes configurar un proceso de extracción, carga y transformación (ELT) con dos métodos:
- Usa una canalización para extraer datos de Snowflake y cargarlos en BigQuery
- Extrae datos de Snowflake con otros Cloud de Confiance productos.
Usa una canalización para extraer datos de Snowflake
Para extraer datos de Snowflake y cargarlos directamente en Cloud Storage, usa la herramienta snowflake2bq.
Luego, puedes cargar tus datos de Cloud Storage en BigQuery con una de las siguientes herramientas:
- El conector del Servicio de transferencia de datos de BigQuery para Cloud Storage
- El comando
LOADcon la herramienta de línea de comandos de bq - Bibliotecas cliente de la API de BigQuery
Otras herramientas para extraer datos de Snowflake
También puedes usar las siguientes herramientas para extraer datos de Snowflake:
- Dataflow
- Cloud Data Fusion
- Dataproc
- Conector de BigQuery para Apache Spark
- Conector de Snowflake para Apache Spark
- Conector BigQuery de Hadoop
- El controlador JDBC de Snowflake y Sqoop para extraer datos de Snowflake en Cloud Storage:
Otras herramientas para cargar datos en BigQuery
También puedes usar las siguientes herramientas para cargar datos en BigQuery:
- Dataflow
- Cloud Data Fusion
- Dataproc
- Dataprep by Trifacta
Extracción, transformación y carga
Si deseas transformar tus datos antes de cargarlos en BigQuery, considera las siguientes herramientas:
- Dataflow
- Clona el código de la plantilla de JDBC a BigQuery y modifícala para agregar transformaciones de Apache Beam.
- Cloud Data Fusion
- Crea una canalización reutilizable y transforma tus datos con los complementos de CDAP.
- Dataproc
- Transforma tus datos con Spark SQL o un código personalizado en cualquiera de los lenguajes compatibles de Spark, como Scala, Java, Python o R.
Herramientas de socios para la migración
Hay varios proveedores que se especializan en el espacio de migración de EDW. Para obtener una lista de los socios clave y las soluciones proporcionadas, consulta Socios de BigQuery.
Instructivo de exportación de Snowflake
En el siguiente instructivo, se muestra una exportación de datos de muestra de Snowflake a BigQuery que usa el comando COPY INTO <location> de Snowflake.
Para obtener un proceso detallado y paso a paso que incluya muestras de código, consulta la Cloud de Confiance herramienta Snowflake de servicios profesionales para BigQuery.
Prepárate para la exportación
Para preparar tus datos de Snowflake para una exportación, extráelos en un bucket de Cloud Storage o de Amazon Simple Storage Service (Amazon S3) con los siguientes pasos:
Cloud Storage
En este instructivo, se prepara el archivo en formato PARQUET.
Usa instrucciones de SQL de Snowflake para crear una especificación de formato de archivo con nombre.
create or replace file format NAMED_FILE_FORMAT type = 'PARQUET'
Reemplaza
NAMED_FILE_FORMATpor un nombre para el formato de archivo. Por ejemplo,my_parquet_unload_formatCrea una integración con el comando
CREATE STORAGE INTEGRATION.create storage integration INTEGRATION_NAME type = external_stage storage_provider = gcs enabled = true storage_allowed_locations = ('BUCKET_NAME')
Reemplaza lo siguiente:
INTEGRATION_NAME: Es un nombre para la integración de almacenamiento. Por ejemplo,gcs_intBUCKET_NAME: Es la ruta de acceso al bucket de Cloud Storage. Por ejemplo,gcs://mybucket/extract/
Recupera la cuenta de servicio de Cloud Storage para Snowflake con el comando
DESCRIBE INTEGRATION.desc storage integration INTEGRATION_NAME;
El resultado es similar a lo siguiente:
+-----------------------------+---------------+-----------------------------------------------------------------------------+------------------+ | property | property_type | property_value | property_default | +-----------------------------+---------------+-----------------------------------------------------------------------------+------------------| | ENABLED | Boolean | true | false | | STORAGE_ALLOWED_LOCATIONS | List | gcs://mybucket1/path1/,gcs://mybucket2/path2/ | [] | | STORAGE_BLOCKED_LOCATIONS | List | gcs://mybucket1/path1/sensitivedata/,gcs://mybucket2/path2/sensitivedata/ | [] | | STORAGE_GCP_SERVICE_ACCOUNT | String | service-account-id@s3ns.iam.gserviceaccount.com | | +-----------------------------+---------------+-----------------------------------------------------------------------------+------------------+
Otorga a la cuenta de servicio que aparece como
STORAGE_GCP_SERVICE_ACCOUNTacceso de lectura y escritura al bucket especificado en el comando de integración de almacenamiento. En este ejemplo, otorga a la cuenta de servicioservice-account-id@acceso de lectura y escritura al bucket<var>UNLOAD_BUCKET</var>.Crea una etapa externa de Cloud Storage que haga referencia a la integración que creaste anteriormente.
create or replace stage STAGE_NAME url='UNLOAD_BUCKET' storage_integration = INTEGRATION_NAME file_format = NAMED_FILE_FORMAT;
Reemplaza lo siguiente:
STAGE_NAME: Es un nombre para el objeto de etapa de Cloud Storage. Por ejemplo,my_ext_unload_stage
Amazon S3
En el siguiente ejemplo, se muestra cómo transferir datos de una tabla de Snowflake a un bucket de Amazon S3:
En Snowflake, configura un objeto de integración de almacenamiento para permitir que Snowflake escriba en un bucket de Amazon S3 al que se hace referencia en una etapa de Cloud Storage externa.
Este paso implica configurar los permisos de acceso al bucket de Amazon S3, crear el rol de IAM de los servicios web de Amazon (AWS) y crear una integración de almacenamiento en Snowflake con el comando
CREATE STORAGE INTEGRATION:create storage integration INTEGRATION_NAME type = external_stage storage_provider = s3 enabled = true storage_aws_role_arn = 'arn:aws:iam::001234567890:role/myrole' storage_allowed_locations = ('BUCKET_NAME')
Reemplaza lo siguiente:
INTEGRATION_NAME: Es un nombre para la integración de almacenamiento. Por ejemplo,s3_intBUCKET_NAME: Es la ruta de acceso al bucket de Amazon S3 en el que se cargarán los archivos. Por ejemplo,s3://unload/files/
Recupera el usuario de IAM de AWS con el comando
DESCRIBE INTEGRATION.desc integration INTEGRATION_NAME;
El resultado es similar a lo siguiente:
+---------------------------+---------------+================================================================================+------------------+ | property | property_type | property_value | property_default | +---------------------------+---------------+================================================================================+------------------| | ENABLED | Boolean | true | false | | STORAGE_ALLOWED_LOCATIONS | List | s3://mybucket1/mypath1/,s3://mybucket2/mypath2/ | [] | | STORAGE_BLOCKED_LOCATIONS | List | s3://mybucket1/mypath1/sensitivedata/,s3://mybucket2/mypath2/sensitivedata/ | [] | | STORAGE_AWS_IAM_USER_ARN | String | arn:aws:iam::123456789001:user/abc1-b-self1234 | | | STORAGE_AWS_ROLE_ARN | String | arn:aws:iam::001234567890:role/myrole | | | STORAGE_AWS_EXTERNAL_ID | String | MYACCOUNT_SFCRole=
| | +---------------------------+---------------+================================================================================+------------------+ Crea un rol que tenga el privilegio
CREATE STAGEpara el esquema y el privilegioUSAGEpara la integración de almacenamiento:CREATE role ROLE_NAME; GRANT CREATE STAGE ON SCHEMA public TO ROLE ROLE_NAME; GRANT USAGE ON INTEGRATION s3_int TO ROLE ROLE_NAME;
Reemplaza
ROLE_NAMEpor un nombre para el rol. Por ejemplo,myroleOtorga al usuario de IAM de AWS permisos para acceder al bucket de Amazon S3 y crea una etapa externa con el comando
CREATE STAGE:USE SCHEMA mydb.public; create or replace stage STAGE_NAME url='BUCKET_NAME' storage_integration = INTEGRATION_NAMEt file_format = NAMED_FILE_FORMAT;
Reemplaza lo siguiente:
STAGE_NAME: Es un nombre para el objeto de etapa de Cloud Storage. Por ejemplo,my_ext_unload_stage
Exporta datos de Snowflake
Después de preparar tus datos, puedes transferirlos a Cloud de Confiance.
Usa el comando COPY INTO para copiar datos de la tabla de base de datos de Snowflake en un bucket de Cloud Storage o Amazon S3 especificando el objeto de etapa externa, STAGE_NAME.
copy into @STAGE_NAME/d1 from TABLE_NAME;
Reemplaza TABLE_NAME por el nombre de tu tabla de base de datos de Snowflake.
Como resultado de este comando, los datos de la tabla se copian en el objeto de etapa de pruebas, que está vinculado al bucket de Cloud Storage o Amazon S3. El archivo incluye el prefijo d1.
Otros métodos de exportación
Para usar Azure Blob Storage en tus exportaciones de datos, sigue los pasos detallados en Descarga en Microsoft Azure. Luego, transfiere los archivos exportados a Cloud Storage con el Servicio de transferencia de almacenamiento.