Migración de Snowflake a BigQuery
En este documento, se proporciona información técnica sobre cómo migrar datos desde Snowflake a BigQuery. Se abordan las diferencias fundamentales entre Snowflake y BigQuery. También se proporciona orientación para una migración exitosa, como se muestra a continuación:
- Qué cambios de esquema son necesarios
- Qué herramientas y opciones de migración están disponibles
- Cómo migrar datos (mediante un proceso de exportación de muestra)
También puedes usar la traducción de SQL por lotes para migrar tus secuencias de comandos de SQL de forma masiva o la traducción de SQL interactiva para traducir consultas ad hoc. SQL de Snowflake es compatible con ambas herramientas en la vista previa.
Terminología
En este documento, se usa la terminología de Snowflake y BigQuery para describir las funciones que proporciona cada producto. En la siguiente tabla, se asignan los términos de Snowflake que son equivalentes a los términos de BigQuery:
Snowflake | BigQuery |
---|---|
Base de datos | Conjunto de datos |
Esquema | Esquema |
Tabla temporal o transitoria específica de la sesión | Tabla anónima o temporal |
Ver | Ver |
Vistas seguras | Vistas autorizadas |
Almacén virtual | Reserva |
Vista materializada | Vista materializada |
No hay equivalente para la partición (porque se usa la micropartición) | Partición |
Agrupamiento en clústeres | Agrupamiento en clústeres |
Funciones definidas por el usuario (UDF) con seguridad mejorada | UDF autorizadas |
Comparación de arquitectura
Snowflake y BigQuery son almacenes de datos analíticos, pero tienen algunas diferencias clave en la arquitectura.
La arquitectura de Snowflake es un híbrido de arquitecturas de bases de datos de discos compartidos y arquitecturas de bases de datos que no comparten nada. Al igual que con las arquitecturas que no comparten nada, los datos de Snowflake se administran en un servicio de almacenamiento de objetos en la nube independiente. Al igual que con una arquitectura de disco compartido, las consultas en Snowflake usan clústeres de procesamiento dedicados. En Snowflake, cada clúster administra partes almacenadas en caché de todo el conjunto de datos para acelerar el rendimiento de las consultas. Para obtener más información, consulta Arquitectura de Snowflake.
La arquitectura de BigQuery es muy diferente a las soluciones de almacén de datos en la nube basadas en nodos o los sistemas de MPP. Separa el almacenamiento y el procesamiento, lo que permite escalar de forma independiente a pedido. Para obtener más información, consulta Funcionamiento interno de BigQuery.
Comparación de la interfaz de usuario
La interfaz web de Snowflake refleja la interfaz de línea de comandos (CLI) de Snowflake. Ambas interfaces te permiten hacer lo siguiente:
- Administrar bases de datos
- Administrar almacenes
- Administrar consultas y hojas de cálculo
- Visualizar consultas históricas
La interfaz web también te permite administrar la contraseña de Snowflake y las preferencias del usuario.
El cliente de la CLI de Snowflake usa SnowSQL para conectarse a Snowflake a fin de ejecutar consultas en SQL y otras operaciones.
La interfaz de BigQuery está integrada en la consola de Google Cloud y contiene una lista de recursos de BigQuery que puedes ver:
- En la sección BigQuery Studio, se muestran tus conjuntos de datos, tablas, vistas y otros recursos de BigQuery. Aquí es donde puedes crear y ejecutar consultas, trabajar con tablas y vistas, ver tu historial de trabajos de BigQuery y realizar otras tareas habituales de BigQuery.
- En la sección Transferencias de datos, se abre la página del Servicio de transferencia de datos de BigQuery.
- En la sección Consultas programadas (Scheduled queries), se muestran tus consultas programadas.
- En la sección Administración de la capacidad, se muestran compromisos de ranuras, reservas y asignaciones de reserva.
- En la sección BI Engine, se abre la página BigQuery BI Engine.
BigQuery también tiene una herramienta de línea de comandos basada en Python. Para obtener más información, consulta cómo usar la herramienta de línea de comandos de bq.
Seguridad
Cuando migres de Snowflake a BigQuery, debes tener en cuenta la forma en que Google Cloud en general y, BigQuery en particular, manejan la seguridad de manera diferente a Snowflake.
Snowflake tiene varias funciones relacionadas con la seguridad, como las siguientes:
- Acceso a la red y al sitio
- Autenticación de cuentas y usuarios
- Seguridad de objetos
- Seguridad de los datos
- Validaciones de seguridad
La seguridad en Snowflake se basa en las características de tu proveedor de servicios en la nube. Proporciona un control detallado sobre el acceso a los objetos, las operaciones de objetos y quién puede crear o modificar las políticas de control de acceso.
Los privilegios de control de acceso de BigQuery paralelos a los privilegios de control de acceso de Snowflake son roles de Identity and Access Management (IAM) en Google Cloud. Estos privilegios determinan las operaciones permitidas en un recurso. Los privilegios se aplican a nivel de Google Cloud.
Encriptación
En Snowflake, la seguridad a nivel de columna es compatible con la edición Enterprise, y las claves de encriptación administradas por el cliente son compatibles con la edición Business Critical. Estas ediciones tienen precios diferentes. En BigQuery, todas las funciones y medidas de seguridad mejoradas se ofrecen como funciones estándares sin costo adicional.
Snowflake proporciona encriptación de extremo a extremo en la que encripta todos los datos almacenados de forma automática. Google Cloud proporciona la misma función mediante la encriptación de todos los datos en reposo y en tránsito de forma predeterminada.
Similar a la edición Business Criticalde Snowflake, BigQuery es compatible con claves de encriptación administradas por el cliente para los usuarios que desean controlar y administrar claves de encriptación de claves en Cloud Key Management Service. BigQuery también permite la encriptación a nivel de columna. Para obtener más información sobre la encriptación en Google Cloud, consulta Encriptación en reposo en Google Cloud y Encriptación en tránsito en Google Cloud.
Funciones
Los roles son las entidades a las que se les pueden otorgar y revocar privilegios en objetos que se pueden proteger.
Snowflake admite los siguientes dos tipos de roles:
- Roles definidos por el sistema: estos roles consisten en privilegios relacionados con el sistema y la seguridad y se crean con privilegios relacionados con la administración de la cuenta.
- Roles personalizados: puedes crear estos roles mediante los roles
SECURITYADMIN
o mediante cualquier rol que tenga el privilegioCREATE ROLE
. Cada rol personalizado en Snowflake está compuesto por privilegios.
En IAM, los permisos se agrupan en roles. IAM proporciona tres tipos de roles:
- Roles básicos: estos roles incluyen los roles de propietario, editor y visualizador. Puedes aplicar estos roles en los niveles de recursos de proyecto o servicio mediante la consola de Cloud, la API de administración de identidades y accesos, o
gcloud CLI
. En general, para obtener la seguridad más sólida, recomendamos que uses roles específicos de BigQuery para seguir el principio de privilegio mínimo. - Roles predefinidos: estos roles proporcionan un acceso más detallado a las funciones de un producto (como BigQuery) y están diseñados para admitir casos de uso comunes y patrones de control de acceso.
- Roles personalizados: estos roles se componen de permisos especificados por el usuario.
Control de acceso
Snowflake te permite otorgar roles a otros roles, lo que crea una jerarquía de roles. IAM no admite una jerarquía de roles, pero implementa una jerarquía de recursos. La jerarquía de IAM incluye el nivel de organización, el nivel de carpeta, el nivel de proyecto y el nivel de recurso. Puedes establecer roles de IAM en cualquier nivel de la jerarquía, y los recursos heredan todas las políticas de sus recursos superiores.
Snowflake y BigQuery admiten el control de acceso a nivel de tabla. Los permisos a nivel de tabla determinan los usuarios, grupos y cuentas de servicio que pueden acceder a una tabla o vista. Puedes otorgar a un usuario acceso a tablas o vistas específicas sin que tenga acceso al conjunto de datos completo.
Snowflake también usa la seguridad a nivel de la fila y la seguridad a nivel de la columna.
En BigQuery, IAM proporciona un control de acceso a nivel de tabla. Para obtener un acceso más detallado, también puedes usar el control de acceso a nivel de columna o la seguridad a nivel de la fila. Este tipo de control proporciona un acceso detallado a columnas sensibles mediante el uso de etiquetas de política o clasificaciones de datos basadas en tipos.
También puedes crear vistas autorizadas para limitar el acceso a los datos a fin de obtener un control de acceso más detallado, de modo que los usuarios especificados puedan consultar una vista sin tener acceso de lectura a las tablas subyacentes.
Aspectos que debes tener en cuenta cuando migres
Existen algunas funciones de Snowflake que no puedes transferir directamente a BigQuery. Por ejemplo, BigQuery no ofrece compatibilidad integrada en las siguientes situaciones. En estas situaciones, es posible que debas usar otros servicios en Google Cloud.
Viaje en el tiempo: en BigQuery, puedes usar viaje en el tiempo para acceder a los datos desde cualquier punto en los últimos siete días. Si necesitas acceder a los datos después de siete días, considera exportar instantáneas programadas con regularidad. Snowflake te permite acceder a los datos históricos (datos que se modificaron o borraron) en cualquier momento dentro de un período definido. Puedes establecer este período en cualquier valor entre 0 y 90 días.
Transmisiones: BigQuery admite la captura de datos modificados (CDC) con Datastream. También puedes usar el software de CDC, como Debezium, para escribir registros en BigQuery con Dataflow. Para obtener más información sobre cómo diseñar de forma manual una canalización de CDC con BigQuery, consulta Migra almacenes de datos a BigQuery: Cambia la captura de datos (CDC). En Snowflake, un objeto de transmisión registra los cambios en el lenguaje de manipulación de datos realizados en las tablas y también los metadatos de cada cambio para que puedas realizar acciones con los datos modificados.
Tareas: BigQuery te permite programar consultas y transmisiones, o transmitir la integración en consultas con Datastream. Snowflake puede combinar tareas con transmisiones de tablas para flujos de trabajo de extracción, carga y transferencia continuas a fin de procesar filas de tablas modificadas recientemente.
Funciones externas: BigQuery admite llamadas de funciones externas a través de Cloud Run Functions. Sin embargo, puedes usar también funciones definidas por el usuario (UDF), como UDF de SQL, aunque estas funciones no se ejecutan fuera de BigQuery. En Snowflake, una función externa llama a un código que se ejecuta fuera de Snowflake. Por ejemplo, la información enviada a un servicio remoto suele transmitirse a través de un servicio de proxy.
Migra datos de Snowflake a BigQuery
En esta sección, se describe cómo configurar y, luego, iniciar la migración de Snowflake a BigQuery según el framework que se describe en Migra almacenes de datos a BigQuery: qué y cómo migrar.
Arquitectura
Para iniciar la migración, debes ejecutar Snowflake y BigQuery. En el siguiente diagrama, se muestra una arquitectura que afecta de forma mínima las operaciones existentes. Mediante la transferencia de datos limpios y cuya calidad se controló, puedes volver a usar las herramientas y los procesos existentes mientras se descargan las cargas de trabajo en BigQuery. También puedes validar informes y paneles en comparación con versiones anteriores. Sin embargo, debido a que los datos de OLAP se mantienen en lugares redundantes, esta operación no es rentable. También extiende el tiempo de procesamiento.
- En el punto 1, se muestran los datos que se transfieren de Snowflake a Cloud Storage.
- En el punto 2, se muestra la persistencia de los datos en BigQuery.
- En el punto 3, se muestra cómo se envían los datos al usuario final.
Puedes validar los informes y los paneles en comparación con iteraciones anteriores. Para obtener más información, consulta Migra almacenes de datos a BigQuery: verifica y valida.
La arquitectura final para la migración de almacén de datos contiene todos los datos de los sistemas de origen que persisten directamente en Google Cloud. Según la cantidad y la complejidad de los sistemas de origen, entregar esta arquitectura se puede habilitar a etapa aún más si los sistemas de origen se abordan de a uno según prioridad, interdependencias, riesgos de integración o distintos factores empresariales.
En el siguiente diagrama, se supone la migración de canalizaciones de datos y la transferencia a Google Cloud.
- En el punto 1, se muestran los puntos de integración síncrona y asíncrona. La integración síncrona se produce, por ejemplo, entre fuentes de datos y App Engine cuando se trata de casos de uso que requieren acciones de usuario explícitas como parte del flujo.
- En el punto 2, se muestra cómo usar Pub/Sub para grandes volúmenes de datos de eventos simultáneos.
- En el punto 3, se muestra la persistencia de los datos mediante uno o más productos de Google Cloud, según la naturaleza de los datos.
- En el punto 4, se muestra el proceso de extracción, transformación y carga (ETL) en BigQuery.
Prepara el entorno de Cloud Storage
Google Cloud ofrece varias formas de transferir tus datos a BigQuery mediante otras herramientas de ETL. El patrón es el siguiente:
Extrae los datos de tu fuente: copia los archivos extraídos desde tu fuente hasta un almacenamiento de etapa de pruebas en tu entorno local. Para obtener más información, consulta Migra almacenes de datos a BigQuery: extrae los datos de origen.
Transfiere datos a un bucket de etapa de pruebas de Cloud Storage: después de terminar de extraer los datos desde tu fuente, transfiérelos a un bucket temporal en Cloud Storage. Según la cantidad de datos que transfieras y el ancho de banda de red disponible, tienes varias opciones.
Es importante asegurarse de que la ubicación del conjunto de datos de BigQuery y la fuente de datos externa, o el bucket de Cloud Storage, estén en la misma región. Para obtener más información sobre las consideraciones de ubicación geográfica para cargar datos desde Cloud Storage, consulta Datos de carga por lotes.
Carga datos del bucket de Cloud Storage en BigQuery: tus datos ahora están en un bucket de Cloud Storage, más cerca de su destino. Existen varias opciones para subir los datos a BigQuery. Esas opciones dependen de cuánto tengan que transformarse los datos. Como alternativa, puedes transformar tus datos dentro de BigQuery si sigues el enfoque de ETL.
Cuando importas tus datos de forma masiva desde un archivo JSON, Avro o CSV, BigQuery detecta de manera automática el esquema para que no tengas que predefinirlo. Para obtener una descripción general detallada del proceso de migración del esquema en las cargas de trabajo de EDW, consulta Proceso de migración del esquema y los datos.
Tipos de datos, propiedades y formatos de archivo admitidos
Snowflake y BigQuery admiten la mayoría de los mismos tipos de datos, aunque a veces usan nombres diferentes. Para obtener una lista completa de los tipos de datos compatibles en Snowflake y BigQuery, consulta la sección Tipos de datos de la referencia de traducción de SQL de Snowflake. También puedes usar el traductor de SQL por lotes para traducir. Si deseas obtener más información sobre los tipos de datos compatibles con BigQuery, consulta Tipos de datos de GoogleSQL.
Snowflake puede exportar datos en los siguientes formatos de archivo. Puedes cargar los formatos directamente en BigQuery:
- CSV: consulta Carga datos de CSV desde Cloud Storage.
- Parquet: consulta Carga datos de Parquet desde Cloud Storage.
- JSON (delimitado por saltos de línea): consulta Carga datos JSON desde Cloud Storage.
Cambios de esquema
Si planeas cambiar los esquemas en tu migración a BigQuery, te recomendamos que primero migres el esquema tal como está. BigQuery admite una amplia variedad de patrones de diseño de modelos de datos, como esquema de estrella o esquema de Snowflake. Debido a esta compatibilidad, no necesitas actualizar tus canalizaciones de datos ascendentes para un esquema nuevo y puedes usar herramientas de migración automatizadas a fin de transferir los datos y el esquema.
Actualiza un esquema
Una vez que tus datos estén en BigQuery, siempre puedes realizar actualizaciones en el esquema, como agregar columnas a la definición del esquema o disminuir la rigurosidad del modo de una columna de REQUIRED
a NULLABLE
.
Recuerda que BigQuery usa convenciones de nombres que distinguen entre mayúsculas y minúsculas para el nombre de la tabla, mientras que Snowflake usa patrones de nombres que no distinguen entre mayúsculas y minúsculas. Esta convención significa que es posible que debas revisar las inconsistencias en las convenciones de nombres de tablas que podrían existir en Snowflake y rectificar cualquier incoherencia que haya surgido durante el traslado a BigQuery. Para obtener más información sobre la modificación de esquemas, consulta Modifica esquemas de tablas.
Algunas modificaciones de esquemas no son compatibles directamente con BigQuery y requieren soluciones alternativas manuales, que incluyen las siguientes:
- Cambiar el nombre de una columna
- Cambiar el tipo de datos de una columna
- Cambiar el modo de una columna (excepto disminuir la rigurosidad de las columnas
REQUIRED
aNULLABLE
).
Para obtener instrucciones específicas sobre cómo implementar estos cambios de esquema de forma manual, consulta Cambia manualmente esquemas de tablas.
Optimización
Después de la migración del esquema, puedes probar el rendimiento y realizar optimizaciones según los resultados. Por ejemplo, puedes ingresar la partición a fin de que tus datos sean más eficientes para administrar y consultar. La partición en BigQuery hace referencia a una tabla especial que se divide en segmentos llamados particiones. La partición es diferente de la micropartición de Snowflake, que ocurre de forma automática a medida que se cargan los datos. La partición de BigQuery te permite mejorar el rendimiento de las consultas y el control de costos mediante la partición por tiempo de transferencia, marca de tiempo o rango de números enteros. Para obtener más información, consulta Introducción a tablas con particiones.
Tablas agrupadas
Las tablas agrupadas son otra optimización del esquema. BigQuery, como Snowflake, te permite agrupar tablas, lo que te habilita a organizar de forma automática los datos de la tabla según el contenido de una o más columnas en el esquema de la tabla. BigQuery usa las columnas que especificas para colocar los datos relacionados. El agrupamiento en clústeres puede mejorar el rendimiento de ciertos tipos de consultas, como las consultas que usan cláusulas de filtro y las que agregan datos. Para obtener más información sobre cómo funcionan las tablas agrupadas en BigQuery, consulta Introducción a las tablas agrupadas en clústeres.
Herramientas de migración
En la siguiente lista, se describen las herramientas que puedes usar para migrar datos de Snowflake a BigQuery. Estas herramientas se combinan en la sección Ejemplos de migración mediante canalizaciones para agrupar canalizaciones de migración de extremo a extremo.
- Comando
COPY INTO <location>
: usa este comando en Snowflake para descargar datos de una tabla de Snowflake directamente en un bucket de Cloud Storage especificado. Para obtener un ejemplo de extremo a extremo, consulta Snowflake a BigQuery (snowflake2bq) en GitHub. - Apache Sqoop: para extraer datos de Snowflake en HDFS o Cloud Storage, envía los trabajos de Hadoop con el controlador JDBC de Sqoop y Snowflake. Sqoop se ejecuta en un entorno de Dataproc.
- JDBC de Snowflake: usa este controlador con la mayoría de las herramientas o aplicaciones cliente que son compatibles con JDBC.
Puedes usar las siguientes herramientas genéricas para migrar datos de Snowflake a BigQuery:
- Servicio de transferencia de datos de BigQuery: realiza una transferencia por lotes automatizada de datos de Cloud Storage a BigQuery con este servicio completamente administrado. Esta herramienta requiere que primero exportes a Cloud Storage los datos de Snowflake.
- Google Cloud CLI: Esta herramienta de línea de comandos copia los archivos descargados de Snowflake en Cloud Storage.
- Herramienta de línea de comandos de bq: Interactúa con BigQuery a través de esta herramienta de línea de comandos. Entre los casos de uso comunes, se incluyen la creación de esquemas de tablas de BigQuery, la carga de datos de Cloud Storage en tablas y la ejecución de consultas.
- Bibliotecas cliente de Cloud Storage: copia los archivos descargados de Snowflake en Cloud Storage con una herramienta personalizada que use las bibliotecas cliente de Cloud Storage.
- Bibliotecas cliente de BigQuery: interactúa con BigQuery mediante una herramienta personalizada compilada sobre la biblioteca cliente de BigQuery.
- Programador de consultas de BigQuery: programa consultas de SQL recurrentes con esta función integrada de BigQuery.
- Cloud Composer: usa este entorno de Apache Airflow completamente administrado para organizar los trabajos de carga y las transformaciones de BigQuery.
Para obtener más información sobre la carga de datos en BigQuery, consulta Carga datos en BigQuery.
Ejemplos de migración mediante canalizaciones
En las siguientes secciones, se muestran ejemplos de cómo migrar tus datos de Snowflake a BigQuery mediante tres técnicas diferentes: extracción y carga, ETL y herramientas de socios.
Extracción y carga
La técnica de extracción y carga ofrece dos métodos:
- Usa una canalización para descargar datos desde Snowflake
- Usa una canalización y un controlador JDBC para exportar datos desde Snowflake
Usa una canalización para descargar datos desde Snowflake
Para descargar datos desde Snowflake directamente en Cloud Storage (recomendado) o descargar datos y copiarlos en Cloud Storage con o gcloud CLI las bibliotecas cliente de Cloud Storage, usa la herramienta snowflake2bq para migrar los datos con el comando COPY INTO <location>
de Snowflake.
Luego, cargas los datos de Cloud Storage en BigQuery con una de las siguientes herramientas:
- Servicio de transferencia de datos de BigQuery
bq
Herramienta de línea de comandos- Bibliotecas cliente de la API de BigQuery
Usa una canalización y un controlador JDBC para exportar datos desde Snowflake
Usa cualquiera de los siguientes productos para exportar datos de Snowflake con el controlador JDBC de Snowflake:
- Dataflow
- Cloud Data Fusion
- Dataproc
- BigQuery con Apache Spark
- Snowflake Connector para Spark
- BigQuery Connector para Spark y Hadoop
- El controlador JDBC de Snowflake y Sqoop para extraer datos de Snowflake en Cloud Storage:
Extracción, transformación y carga
Si deseas transformar tus datos antes de cargarlos en BigQuery, puedes agregar un paso de transformación en las canalizaciones descritas en la sección anterior Extracción y carga.
Transforma los datos de Snowflake
Para transformar tus datos antes de cargarlos en BigQuery, descarga los datos directamente desde Snowflake hasta Cloud Storage o usa gcloud CLI para copiar datos, como se describe en la sección anterior Extracción y carga.
Carga datos de Snowflake
Después de transformar tus datos, cárgalos en BigQuery con uno de los siguientes métodos:
- Dataproc
- Leer desde Cloud Storage con Apache Spark
- Escribir en BigQuery con Apache Spark
- Conector Cloud Storage de Hadoop
- Conector BigQuery de Hadoop
- Dataflow
- Lee desde Cloud Storage
- Escribe en BigQuery
- Plantilla que proporciona Google: texto de Cloud Storage a BigQuery
- Cloud Data Fusion
- Dataprep by Trifacta
Usa una canalización y un controlador JDBC para transformar y exportar datos desde Snowflake
Agrega un paso de transformación en las siguientes opciones de canalización, como se describe en la sección anterior Extracción y carga.
- Dataflow
- Clona el código de la plantilla JDBC a BigQuery que proporciona Google y modifica la plantilla para agregar transformaciones de Apache Beam.
- Cloud Data Fusion
- 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 (Scala, Java, Python o R).
Es posible que tengas un caso de uso de extracción, carga y transformación para cargar tus datos de Snowflake en BigQuery y, luego, transformarlos. Para realizar esta tarea, carga tus datos desde Snowflake hasta una tabla de etapa de pruebas de BigQuery mediante uno de los métodos de la sección anterior Extracción y carga. Luego, ejecuta consultas en SQL en la tabla de etapa de pruebas y escribe el resultado en la tabla de producción final en BigQuery.
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 el sitio web del socio de BigQuery de Google Cloud.
Ejemplos del proceso de exportación
En las siguientes secciones, 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 herramienta Snowflake de servicios profesionales de Google Cloud para BigQuery.
Prepárate para la exportación
Para la descarga, usa instrucciones de SQL de Snowflake a fin de crear una especificación de formato de archivo con nombre.
En este instructivo, se usa my_parquet_unload_format
para el formato de archivo, pero puedes usar un nombre diferente.
create or replace file format my_parquet_unload_format
type = 'PARQUET'
field_delimiter = '|'
Exporta tus datos de Snowflake
Después de preparar tus datos, debes transferirlos a Google Cloud. Puedes realizar este paso de una de las siguientes dos maneras:
- Exportar tus datos directamente a Cloud Storage desde Snowflake.
- Realizar la etapa de pruebas de tus datos de Snowflake en un bucket de Amazon Simple Storage Service (Amazon S3) o en Azure Blob Storage.
Para evitar un salto adicional de datos, exporta tus datos directamente.
Exporta datos de Snowflake directamente a Cloud Storage
En las siguientes instrucciones, se muestra cómo usar el comando COPY
de Snowflake para descargar datos de Snowflake en Cloud Storage:
En Snowflake, configura un objeto de integración de almacenamiento para permitir que Snowflake escriba en un bucket de Cloud Storage al que se hace referencia en una etapa de Cloud Storage externa.
Este paso implica varios pasos secundarios.
Crea una integración con el comando
CREATE STORAGE INTEGRATION
:create storage integration gcs_int type = external_stage storage_provider = gcs enabled = true storage_allowed_locations = ('gcs://mybucket/unload/')
Recupera la cuenta de servicio de Cloud Storage para Snowflake con el comando
DESCRIBE INTEGRATION
y otorga permisos a la cuenta de servicio para acceder a un bucket de Cloud Storage seleccionado como el área de etapa de pruebas:desc storage integration gcs_int;
+-----------------------------+---------------+-----------------------------------------------------------------------------+------------------+ | 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@project1-123456.iam.gserviceaccount.com | | +-----------------------------+---------------+--------------------------------------------------------- --------------------+------------------+
Crea una etapa externa de Cloud Storage que haga referencia a la integración que creaste con el comando
CREATE STAGE
:create or replace stage my_ext_unload_stage url='gcs://mybucket/unload' storage_integration = gcs_int file_format = my_parquet_unload_format;
Usa el comando
COPY INTO <location>
para copiar los datos de la tabla de base de datos de Snowflate en un bucket de Cloud Storage mediante la especificación del objeto de etapa externa que creaste en el paso anterior:copy into @my_ext_unload_stage/d1 from mytable;
Exporta datos de Snowflake a Cloud Storage mediante el Servicio de transferencia de almacenamiento de Amazon S3
En el siguiente ejemplo, se muestra cómo descargar datos de una tabla de Snowflake a un bucket de Amazon S3 mediante el comando COPY
:
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 la función de IAM de AWS y crear una integración de almacenamiento en Snowflake con el comando
CREATE STORAGE INTEGRATION
:create storage integration s3_int type = external_stage storage_provider = s3 enabled = true storage_aws_role_arn = 'arn:aws:iam::001234567890:role/myrole' storage_allowed_locations = ('s3://unload/files/')
Recupera el usuario de IAM de AWS con el comando
DESCRIBE INTEGRATION
:desc integration s3_int;
+---------------------------+---------------+================================================================================+------------------+ | 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=
| | +---------------------------+---------------+================================================================================+------------------+ Otorga al usuario de IAM de AWS permisos para acceder al bucket de Amazon S3 y crea una etapa externa con el comando
CREATE STAGE
:create or replace stage my_ext_unload_stage url='s3://unload/files/' storage_integration = s3_int file_format = my_parquet_unload_format;
Usa el comando
COPY INTO <location>
para copiar los datos de la base de datos de Snowflake al bucket de Amazon S3 mediante la especificación del objeto de etapa externa que creaste antes:copy into @my_ext_unload_stage/d1 from mytable;
Transfiere los archivos exportados a Cloud Storage con el Servicio de transferencia de almacenamiento.
Exporta datos de Snowflake a Cloud Storage a través de otros proveedores de servicios en la nube:
Azure Blob Storage Sigue los pasos detallados en Descarga en Microsoft Azure. Luego, transfiere los archivos exportados a Cloud Storage con el Servicio de transferencia de almacenamiento.
Bucket de Amazon S3 Sigue los pasos que se detallan en Descarga en Amazon S3. Luego, transfiere los archivos exportados a Cloud Storage con el Servicio de transferencia de almacenamiento.
¿Qué sigue?
- Rendimiento y optimización posteriores a la migración.
- Explora arquitecturas de referencia, diagramas y prácticas recomendadas sobre Google Cloud. Consulta nuestro Cloud Architecture Center.