Traduire des requêtes SQL avec l'API Translation

Ce document explique comment utiliser l'API Translation dans BigQuery pour traduire des scripts écrits dans d'autres dialectes SQL en requêtes GoogleSQL. L'API Translation peut simplifier le processus de migration des charges de travail vers BigQuery.

Avant de commencer

Avant d'envoyer une tâche de traduction, procédez comme suit :

  1. Assurez-vous de disposer des autorisations requises.
  2. Activez l'API BigQuery Migration.
  3. Collectez les fichiers sources contenant les scripts et les requêtes SQL à traduire.
  4. Importez les fichiers source dans Cloud Storage.

Autorisations requises

Pour obtenir les autorisations nécessaires pour créer des jobs de traduction à l'aide de l'API Translation, demandez à votre administrateur de vous accorder le rôle éditeur MigrationWorkflow (roles/bigquerymigration.editor) sur la ressource parent. Pour en savoir plus sur l'attribution de rôles, consultez la section Gérer les accès.

Ce rôle prédéfini contient les autorisations requises pour créer des jobs de traduction à l'aide de l'API Translation. Pour connaître les autorisations exactes requises, développez la section Autorisations requises :

Autorisations requises

Vous devez disposer des autorisations suivantes pour créer des jobs de traduction à l'aide de l'API Translation :

  • bigquerymigration.workflows.create
  • bigquerymigration.workflows.get

Vous pouvez également obtenir ces autorisations avec des rôles personnalisés ou d'autres rôles prédéfinis.

Activer l'API BigQuery Migration

Si votre projet Google Cloud CLI a été créé avant le 15 février 2022, activez l'API BigQuery Migration comme suit :

  1. Dans la console Google Cloud, accédez à la page API BigQuery Migration.

    Accéder à l'API BigQuery Migration

  2. Cliquez sur Activer.

Importer des fichiers d'entrée dans Cloud Storage

Si vous souhaitez utiliser la console Google Cloud ou l'API BigQuery Migration pour effectuer une tâche de traduction, vous devez importer les fichiers sources contenant les requêtes et les scripts à traduire dans Cloud Storage. Vous pouvez également importer des fichiers de métadonnées ou des fichiers YAML de configuration dans le même bucket Cloud Storage contenant les fichiers sources. Pour en savoir plus sur la création de buckets et l'importation de fichiers dans Cloud Storage, consultez les pages Créer des buckets et Importer des objets à partir d'un système de fichiers.

Types de tâches compatibles

L'API Translation peut traduire les dialectes SQL suivants en langage GoogleSQL :

  • Amazon Redshift SQL - Redshift2BigQuery_Translation
  • CLI Apache HiveQL et Beeline - HiveQL2BigQuery_Translation
  • Apache Spark SQL - SparkSQL2BigQuery_Translation
  • Azure Snapse T-SQL - AzureSynapse2BigQuery_Translation
  • IBM Netezza SQL et NZPLSQL - Netezza2BigQuery_Translation
  • MySQL SQL - MySQL2BigQuery_Translation
  • Oracle SQL, PL/SQL et Exadata - Oracle2BigQuery_Translation
  • PostgreSQL SQL - Postgresql2BigQuery_Translation
  • Presto ou Trino SQL - Presto2BigQuery_Translation
  • Snowflake SQL - Snowflake2BigQuery_Translation
  • SQL Server T-SQL - SQLServer2BigQuery_Translation
  • Teradata et Teradata Vantage - Teradata2BigQuery_Translation
  • Vertica SQL - Vertica2BigQuery_Translation

L'API Translation accepte également les tâches de traduction suivantes :

  • Traduire du langage SQL Oracle vers SQL PostgreSQL : Oracle2Postgresql_Translation

Emplacements

L'API Translation est disponible dans les emplacements de traitement suivants :

Description de la région Nom de la région Détails
Asie-Pacifique
Tokyo asia-northeast1
Mumbai asia-south1
Singapour asia-southeast1
Sydney australia-southeast1
Europe
UE (multirégional) eu
Varsovie europe-central2
Finlande europe-north1 Icône Feuille Faibles émissions de CO2
Madrid europe-southwest1
Belgique europe-west1 Icône Feuille Faibles émissions de CO2
Londres europe-west2 icône feuille Faibles émissions de CO2
Francfort europe-west3 icône feuille Faibles émissions de CO2
Pays-Bas europe-west4
Zurich europe-west6 Icône Feuille Faibles émissions de CO2
Paris europe-west9 Icône Feuille Faibles émissions de CO2
Turin europe-west12
Amériques
São Paulo southamerica-east1 Icône Feuille Faibles émissions de CO2
États-Unis (multirégional) us
Iowa us-central1 Icône Feuille Faibles émissions de CO2
Caroline du Sud us-east1
Virginie du Nord us-east4
Columbus, Ohio us-east5
Dallas us-south1
Oregon us-west1 Icône Feuille Faibles émissions de CO2
Los Angeles us-west2
Salt Lake City us-west3

Envoyer une tâche de traduction

Pour envoyer une tâche de traduction à l'aide de l'API Translation, utilisez la méthode projects.locations.workflows.create et fournissez une instance de la ressource MigrationWorkflow avec un type de tâche compatible.

Exemple : Créer une traduction par lot

La commande curl suivante crée un job de traduction par lot où les fichiers d'entrée et de sortie sont stockés dans Cloud Storage. Le champ source_target_mapping contient une liste qui mappe les entrées literal source avec un chemin d'accès relatif facultatif pour la sortie cible.

curl -d "{
  \"tasks\": {
      string: {
        \"type\": \"TYPE\",
        \"translation_details\": {
            \"target_base_uri\": \"TARGET_BASE\",
            \"source_target_mapping\": {
              \"source_spec\": {
                  \"base_uri\": \"BASE\"
              }
            },
        }
      }
  }
  }" \
  -H "Content-Type:application/json" \
  -H "Authorization: Bearer TOKEN" -X POST https://bigquerymigration.googleapis.com/v2alpha/projects/PROJECT_ID/locations/LOCATION/workflows

Remplacez les éléments suivants :

  • TYPE : type de tâche de la traduction, qui détermine les dialectes source et cible.
  • TARGET_BASE : URI de base pour toutes les sorties de traduction.
  • BASE : URI de base pour tous les fichiers lus en tant que sources pour la traduction.
  • TOKEN : jeton d'authentification. Pour générer un jeton, utilisez la commande gcloud auth print-access-token ou OAuth 2.0 Playground (utilisez le champ d'application https://www.googleapis.com/auth/cloud-platform).
  • PROJECT_ID : projet pour le traitement de la traduction.
  • LOCATION : emplacement dans lequel le job est traité.

La commande précédente renvoie une réponse incluant un ID de workflow écrit au format projects/PROJECT_ID/locations/LOCATION/workflows/WORKFLOW_ID.

Exemple : Créer un job de traduction interactive avec des entrées et des sorties de littéraux de chaîne

La commande curl suivante crée un job de traduction avec des littéraux de chaîne comme entrées et sorties. Le champ source_target_mapping contient une liste qui mappe les répertoires sources sur un chemin d'accès relatif facultatif pour la sortie cible.

curl -d "{
  \"tasks\": {
      string: {
        \"type\": \"TYPE\",
        \"translation_details\": {
        \"source_target_mapping\": {
            \"source_spec\": {
              \"literal\": {
              \"relative_path\": \"PATH\",
              \"literal_string\": \"STRING\"
              }
            }
        },
        \"target_return_literals\": \"TARGETS\",
        }
      }
  }
  }" \
  -H "Content-Type:application/json" \
  -H "Authorization: Bearer TOKEN" -X POST https://bigquerymigration.googleapis.com/v2alpha/projects/PROJECT_ID/locations/LOCATION/workflows

Remplacez les éléments suivants :

  • TYPE : type de tâche de la traduction, qui détermine les dialectes source et cible.
  • PATH : identifiant de l'entrée littérale, semblable à un nom de fichier ou un chemin d'accès.
  • STRING : chaîne de données d'entrée littérale (par exemple, SQL) à traduire.
  • TARGETS : cibles attendues que l'utilisateur souhaite renvoyer directement dans la réponse au format literal. Celles-ci doivent être au format d'URI cible (par exemple, GENERATED_DIR + target_spec.relative_path + source_spec.literal.relative_path). Tout élément qui ne figure pas dans cette liste ne sera pas renvoyé dans la réponse. Le répertoire généré, GENERATED_DIR, pour les traductions SQL générales est sql/.
  • TOKEN : jeton d'authentification. Pour générer un jeton, utilisez la commande gcloud auth print-access-token ou OAuth 2.0 Playground (utilisez le champ d'application https://www.googleapis.com/auth/cloud-platform).
  • PROJECT_ID : projet pour le traitement de la traduction.
  • LOCATION : emplacement dans lequel le job est traité.

La commande précédente renvoie une réponse incluant un ID de workflow écrit au format projects/PROJECT_ID/locations/LOCATION/workflows/WORKFLOW_ID.

Explorer le résultat de la traduction

Après avoir exécuté la tâche de traduction, récupérez les résultats en spécifiant l'ID du workflow de traduction à l'aide de la commande suivante :

curl \
-H "Content-Type:application/json" \
-H "Authorization:Bearer TOKEN" -X GET https://bigquerymigration.googleapis.com/v2alpha/projects/PROJECT_ID/locations/LOCATION/workflows/WORKFLOW_ID

Remplacez les éléments suivants :

  • TOKEN : jeton d'authentification. Pour générer un jeton, utilisez la commande gcloud auth print-access-token ou OAuth 2.0 Playground (utilisez le champ d'application https://www.googleapis.com/auth/cloud-platform).
  • PROJECT_ID : projet pour le traitement de la traduction.
  • LOCATION : emplacement dans lequel le job est traité.
  • WORKFLOW_ID : ID généré lors de la création d'un workflow de traduction.