Tutoriels de migration de Snowflake vers BigQuery
Ce document fournit des exemples de bout en bout et des tutoriels sur les différentes façons de configurer un pipeline de migration de Snowflake vers BigQuery.
Exemples de pipeline de migration Snowflake
Vous pouvez migrer vos données de 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 d'extraction, de chargement et de transformation (ELT) de deux manières :
- Utiliser un pipeline pour extraire des données de Snowflake et les charger dans BigQuery
- Extraire des données de Snowflake à l'aide d'autres Google Cloud produits.
Utiliser un pipeline pour extraire des données de 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 de Cloud Storage vers BigQuery à l'aide de l'un des outils suivants :
- Le connecteur BigQuery Data Transfer Service 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
- Managed Service pour Apache Spark
- 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
- Managed Service pour Apache Spark
- Dataprep by Trifacta
Extraction, transformation et chargement
Si vous souhaitez transformer vos données avant de les charger dans BigQuery, envisagez d'utiliser les 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.
- Managed Service pour Apache Spark
- 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 une liste des partenaires clés et des solutions qu'ils proposent, consultez la page Partenaires BigQuery.
Tutoriel sur l'exportation Snowflake
Le tutoriel suivant montre un exemple d'exportation de données de Snowflake vers
BigQuery à l'aide de la commande Snowflake COPY INTO <location>.
Pour obtenir un processus détaillé avec des exemples de code, consultez
la section Google Cloud Services professionnels Snowflake vers l'outil BigQuery.
Préparer l'exportation
Vous pouvez préparer vos données Snowflake pour une exportation en les extrayant dans un bucket Cloud Storage ou Amazon Simple Storage Service (Amazon S3) en procédant comme suit :
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 un nom pour le format de fichier. Exemple :my_parquet_unload_format.Créez une intégration avec la
CREATE STORAGE INTEGRATIONcommande.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. Exemple :gcs_intBUCKET_NAME: chemin d'accès au bucket Cloud Storage. Exemple :gcs://mybucket/extract/
Récupérez le compte de service Cloud Storage associé à 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é comme
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 d'étape Cloud Storage. 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. Exemple :s3_intBUCKET_NAME: chemin d'accès au bucket Amazon S3 dans lequel charger les fichiers. Exemple :s3://unload/files/
Récupérez l'utilisateur IAM AWS à l'aide de la
DESCRIBE INTEGRATIONcommande.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 privilège
CREATE STAGEpour le schéma et du privilègeUSAGEpour 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 un nom pour le rôle. Exemple :myrole.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 d'étape Cloud Storage. Exemple :my_ext_unload_stage
Exporter les 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 d'étape externe, STAGE_NAME.
copy into @STAGE_NAME/d1 from TABLE_NAME;
Remplacez TABLE_NAME par le nom de votre table de base de données Snowflake.
À la suite de cette commande, les données de la table sont copiées dans l'objet d'étape, qui est lié 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 la section Déchargement vers Microsoft Azure. Transférez ensuite les fichiers exportés vers Cloud Storage à l'aide du service de transfert de stockage.