Tutoriels sur la migration de Snowflake vers BigQuery

Ce document fournit des exemples et des tutoriels de bout en bout pour les différentes façons de configurer un pipeline de migration de Snowflake vers BigQuery.

Exemples de pipelines de migration Snowflake

Vous pouvez migrer vos données depuis Snowflake vers BigQuery à l'aide de trois processus différents : ELT, ETL ou à l'aide d'outils partenaires.

Extraction, chargement et transformation

Vous pouvez configurer un processus ELT (extraction, chargement et transformation) de deux manières :

  • Utiliser un pipeline pour extraire des données depuis Snowflake et les charger dans BigQuery
  • Extrayez les données de Snowflake à l'aide d'autres produits Google Cloud .

Utiliser un pipeline pour extraire des données depuis Snowflake

Pour extraire des données de Snowflake et les charger directement dans Cloud Storage, utilisez l'outil snowflake2bq.

Vous pouvez ensuite charger vos données depuis Cloud Storage vers BigQuery à l'aide de l'un des outils suivants :

Autres outils pour extraire des données de Snowflake

Vous pouvez également utiliser les outils suivants pour extraire des données de Snowflake :

Autres outils pour charger des données dans BigQuery

Vous pouvez également utiliser les outils suivants pour charger des données dans BigQuery :

Extraction, transformation et chargement

Si vous souhaitez transformer vos données avant de les charger dans BigQuery, pensez aux outils suivants :

  • Dataflow
  • Cloud Data Fusion
    • Créez un pipeline réutilisable et transformez vos données à l'aide des plug-ins CDAP.
  • Dataproc
    • Transformez vos données à l'aide de Spark SQL ou de code personnalisé dans l'un des langages Spark compatibles, tels que Scala, Java, Python ou R.

Outils partenaires pour la migration

Plusieurs fournisseurs sont spécialisés dans l'espace de migration d'entrepôt de données d'entreprise. Pour obtenir la liste des partenaires clés et des solutions qu'ils proposent, consultez la page Partenaires BigQuery.

Tutoriel sur l'exportation Snowflake

Le tutoriel suivant présente un exemple d'exportation de données depuis Snowflake vers BigQuery utilisant la commande COPY INTO <location> de Snowflake. Pour obtenir un processus détaillé avec des exemples de code, consultez l'outil de services professionnelsGoogle Cloud Snowflake vers BigQuery.

Préparer l'exportation

Pour préparer vos données Snowflake à l'exportation, vous pouvez les extraire dans un bucket Cloud Storage ou Amazon Simple Storage Service (Amazon S3) en suivant les étapes ci-dessous :

Cloud Storage

Ce tutoriel prépare le fichier au format PARQUET.

  1. Utilisez les instructions SQL Snowflake pour créer une spécification de format de fichier nommé.

    create or replace file format NAMED_FILE_FORMAT
        type = 'PARQUET'

    Remplacez NAMED_FILE_FORMAT par le nom du format de fichier. Exemple :my_parquet_unload_format

  2. Créez une intégration avec la commande CREATE STORAGE INTEGRATION.

    create storage integration INTEGRATION_NAME
        type = external_stage
        storage_provider = gcs
        enabled = true
        storage_allowed_locations = ('BUCKET_NAME')

    Remplacez les éléments suivants :

    • INTEGRATION_NAME : nom de l'intégration de stockage. Par exemple, gcs_int.
    • BUCKET_NAME : chemin d'accès au bucket Cloud Storage. Par exemple, gcs://mybucket/extract/.
  3. Récupérez le compte de service Cloud Storage pour Snowflake avec la commande DESCRIBE INTEGRATION.

    desc storage integration INTEGRATION_NAME;

    Le résultat ressemble à ce qui suit :

    +-----------------------------+---------------+-----------------------------------------------------------------------------+------------------+
    | 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@iam.gserviceaccount.com                 |                  |
    +-----------------------------+---------------+-----------------------------------------------------------------------------+------------------+
  4. Accordez au compte de service listé en tant que STORAGE_GCP_SERVICE_ACCOUNT un accès en lecture et en écriture au bucket spécifié dans la commande d'intégration de stockage. Dans cet exemple, accordez au compte de service service-account-id@ un accès en lecture et en écriture au bucket <var>UNLOAD_BUCKET</var>.

  5. Créez une étape Cloud Storage externe qui fait référence à l'intégration que vous avez créée précédemment.

    create or replace stage STAGE_NAME
        url='UNLOAD_BUCKET'
        storage_integration = INTEGRATION_NAME
        file_format = NAMED_FILE_FORMAT;

    Remplacez les éléments suivants :

    • STAGE_NAME : nom de l'objet Cloud Storage intermédiaire. Par exemple, my_ext_unload_stage.

Amazon S3

L'exemple suivant montre comment déplacer des données d'une table Snowflake vers un bucket Amazon S3 :

  1. Dans Snowflake, configurez un objet d'intégration de stockage pour permettre à Snowflake d'écrire dans un bucket Amazon S3 référencé lors d'une étape Cloud Storage externe.

    Cette étape implique de configurer les autorisations d'accès au bucket Amazon S3, créer le rôle IAM Amazon Web Services (AWS) et créer une intégration de stockage dans Snowflake avec la commande 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')

    Remplacez les éléments suivants :

    • INTEGRATION_NAME : nom de l'intégration de stockage. Par exemple, s3_int.
    • BUCKET_NAME : chemin d'accès au bucket Amazon S3 dans lequel charger les fichiers. Par exemple, s3://unload/files/.
  2. Récupérez l'utilisateur AWS IAM à l'aide de la commande DESCRIBE INTEGRATION.

    desc integration INTEGRATION_NAME;

    Le résultat ressemble à ce qui suit :

    +---------------------------+---------------+================================================================================+------------------+
    | 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. Créez un rôle disposant du droit CREATE STAGE pour le schéma et du droit USAGE pour l'intégration de stockage :

        CREATE role ROLE_NAME;  
        GRANT CREATE STAGE ON SCHEMA public TO ROLE ROLE_NAME;
        GRANT USAGE ON INTEGRATION s3_int TO ROLE ROLE_NAME;

    Remplacez ROLE_NAME par le nom du rôle. Exemple :myrole

  4. Accordez à l'utilisateur IAM AWS les autorisations pour accéder au bucket Amazon S3 et créez une étape externe à l'aide de la commande CREATE STAGE :

        USE SCHEMA mydb.public;
    
        create or replace stage STAGE_NAME
            url='BUCKET_NAME'
            storage_integration = INTEGRATION_NAMEt
            file_format = NAMED_FILE_FORMAT;

    Remplacez les éléments suivants :

    • STAGE_NAME : nom de l'objet Cloud Storage intermédiaire. Par exemple, my_ext_unload_stage.

Exporter des données Snowflake

Une fois vos données préparées, vous pouvez les déplacer vers Google Cloud. Utilisez la commande COPY INTO pour copier les données de la table de base de données Snowflake dans un bucket Cloud Storage ou Amazon S3 en spécifiant l'objet de l'étape externe, STAGE_NAME.

    copy into @STAGE_NAME/d1
    from TABLE_NAME;

Remplacez TABLE_NAME par le nom de la table de votre base de données Snowflake.

Cette commande permet de copier les données de la table dans l'objet intermédiaire, qui est associé au bucket Cloud Storage ou Amazon S3. Le fichier inclut le préfixe d1.

Autres méthodes d'exportation

Pour utiliser Azure Blob Storage pour vos exportations de données, suivez les étapes décrites dans Décharger des données dans Microsoft Azure. Transférez ensuite les fichiers exportés vers Cloud Storage à l'aide du service de transfert de stockage.