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 :
- Connecteur du service de transfert de données BigQuery pour Cloud Storage
- La commande
LOADà l'aide de l'outil de ligne de commande bq - Bibliothèques clientes de l'API BigQuery
Autres outils pour extraire des données de Snowflake
Vous pouvez également utiliser les outils suivants pour extraire des données de Snowflake :
- Dataflow
- Cloud Data Fusion
- Dataproc
- Connecteur Apache Spark BigQuery
- Connecteur Snowflake pour Apache Spark
- Connecteur Hadoop BigQuery
- Le pilote JDBC de Snowflake et Sqoop pour extraire les données de Snowflake dans Cloud Storage :
Autres outils pour charger des données dans BigQuery
Vous pouvez également utiliser les outils suivants pour charger des données dans BigQuery :
- Dataflow
- Cloud Data Fusion
- Dataproc
- Dataprep by Trifacta
Extraction, transformation et chargement
Si vous souhaitez transformer vos données avant de les charger dans BigQuery, pensez aux outils suivants :
- Dataflow
- Clonez le code du modèle JDBC vers BigQuery, puis modifiez-le pour ajouter des transformations Apache Beam.
- 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.
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_FORMATpar le nom du format de fichier. Exemple :my_parquet_unload_formatCré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/.
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 | | +-----------------------------+---------------+-----------------------------------------------------------------------------+------------------+
Accordez au compte de service listé en tant que
STORAGE_GCP_SERVICE_ACCOUNTun 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 serviceservice-account-id@un accès en lecture et en écriture au bucket<var>UNLOAD_BUCKET</var>.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 :
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/.
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=
| | +---------------------------+---------------+================================================================================+------------------+ Créez un rôle disposant du droit
CREATE STAGEpour le schéma et du droitUSAGEpour 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_NAMEpar le nom du rôle. Exemple :myroleAccordez à 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.