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 la descripción general 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 privilegio CREATE 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.

Una migración en curso de Snowflake a BigQuery.

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.

Snowflake a BigQuery después de la migración.

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:

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

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

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

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 a NULLABLE).

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
  • bqHerramienta 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:

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:

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.

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 Socios de BigQuery.

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:

  1. Exportar tus datos directamente a Cloud Storage desde Snowflake.
  2. 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:

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

    1. 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/')
      
    2. 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                  |                  |
      +-----------------------------+---------------+---------------------------------------------------------
      --------------------+------------------+
      
    3. 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;
      
  2. 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:

  1. 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/')
    
  2. 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=                                                   |                  |
    +---------------------------+---------------+================================================================================+------------------+
    
  3. 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;
    
  4. 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;
    
  5. 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?