Traduci le query SQL con l'API Translation

Questo documento descrive come utilizzare l'API Translation in BigQuery per tradurre in query GoogleSQL gli script scritti in altri dialetti SQL.

Tipi di attività supportati

L'API Translation può tradurre i seguenti dialetti SQL in GoogleSQL:

  • SQL di Amazon Redshift: Redshift2BigQuery_Translation
  • Apache HiveQL e interfaccia a riga di comando Beeline - HiveQL2BigQuery_Translation
  • SQL Netezza e NZPLSQL di IBM Netezza - Netezza2BigQuery_Translation
  • Teradata e Teradata Vantage - Teradata2BigQuery_Translation
  • Apache Spark SQL - SparkSQL2BigQuery_Translation
  • Azure Synapse T-SQL - AzureSynapse2BigQuery_Translation
  • SQL MySQL - MySQL2BigQuery_Translation
  • Oracle SQL, PL/SQL, Exadata - Oracle2BigQuery_Translation
  • SQL PostgreSQL - Postgresql2BigQuery_Translation
  • SQL Presto o Trino - Presto2BigQuery_Translation
  • SQL Snowflake - Snowflake2BigQuery_Translation
  • SQL Server T-SQL - SQLServer2BigQuery_Translation
  • SQL Vertica - Vertica2BigQuery_Translation

Autorizzazioni obbligatorie

Per ottenere le autorizzazioni necessarie per creare job di traduzione utilizzando l'API Translation, chiedi all'amministratore di concederti il ruolo IAM MigrationWorkflow Editor (roles/bigquerymigration.editor) per la risorsa parent. Per saperne di più sulla concessione dei ruoli, consulta Gestire l'accesso.

Questo ruolo predefinito contiene le autorizzazioni necessarie per creare job di traduzione utilizzando l'API Translation. Per visualizzare le autorizzazioni esatte necessarie, espandi la sezione Autorizzazioni richieste:

Autorizzazioni obbligatorie

Per creare job di traduzione utilizzando l'API Translation sono necessarie le autorizzazioni seguenti:

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

Potresti anche essere in grado di ottenere queste autorizzazioni con i ruoli personalizzati o altri ruoli predefiniti.

Prima di iniziare

Prima di inviare un job di traduzione, completa i seguenti passaggi:

  1. Abilitare l'API BigQuery Migration.
  2. Raccogli i file di origine contenenti gli script SQL e le query da tradurre.
  3. Carica i file di origine in Cloud Storage.

Abilita l'API BigQuery Migration

Se il tuo progetto Google Cloud CLI è stato creato prima del 15 febbraio 2022, abilita l'API BigQuery Migration nel seguente modo:

  1. Nella console Google Cloud, vai alla pagina dell'API BigQuery Migration.

    Vai all'API BigQuery Migration

  2. Fai clic su Abilita.

Carica i file di input su Cloud Storage

Se vuoi utilizzare la console Google Cloud o l'API BigQuery Migration per eseguire un job di traduzione, devi caricare i file di origine contenenti le query e gli script da tradurre in Cloud Storage. Puoi anche caricare qualsiasi file di metadati o file YAML di configurazione nello stesso bucket Cloud Storage contenente i file di origine. Per ulteriori informazioni sulla creazione di bucket e sul caricamento dei file in Cloud Storage, consulta Creare bucket e Caricare oggetti da un file system.

Invia un job di traduzione

Per inviare un job di traduzione utilizzando l'API Translation, usa il metodo projects.locations.workflows.create e fornisci un'istanza della risorsa MigrationWorkflow con un tipo di attività supportato.

Esempio: creare una traduzione batch

Il seguente comando curl crea un job di traduzione batch in cui i file di input e di output sono archiviati in Cloud Storage. Il campo source_target_mapping contiene un elenco che mappa le voci literal di origine a un percorso relativo facoltativo per l'output di destinazione.

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

Sostituisci quanto segue:

  • TYPE: il tipo di attività della traduzione, che determina il dialetto di origine e di destinazione.
  • TARGET_BASE: l'URI di base per tutti gli output di traduzione.
  • BASE: l'URI di base di tutti i file letti come origini per la traduzione.
  • TOKEN: il token per l'autenticazione. Per generare un token, utilizza il comando gcloud auth print-access-token o il parco giochi OAuth 2.0 (utilizza l'ambito https://www.googleapis.com/auth/cloud-platform).
  • PROJECT_ID: il progetto per l'elaborazione della traduzione.
  • LOCATION: la posizione del progetto in cui elaborare la traduzione.

Il comando precedente restituisce una risposta che include un ID flusso di lavoro scritto nel formato projects/PROJECT_ID/locations/LOCATION/workflows/WORKFLOW_ID.

Esempio: creare un job di traduzione interattivo con input e output del valore letterale stringa

Il seguente comando curl crea un job di traduzione con input e output di valore letterale stringa. Il campo source_target_mapping contiene un elenco che mappa le directory di origine a un percorso relativo facoltativo per l'output di destinazione.

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

Sostituisci quanto segue:

  • TYPE: il tipo di attività della traduzione, che determina il dialetto di origine e di destinazione.
  • PATH: l'identificatore della voce letterale, simile a un nome file o a un percorso.
  • STRING: stringa di dati di input letterali (ad esempio SQL) da tradurre.
  • TARGETS: i target previsti che l'utente vuole che vengano restituiti direttamente nella risposta nel formato literal. Devono essere nel formato dell'URI di destinazione (ad esempio, GENERATED_DIR + target_spec.relative_path + source_spec.literal.relative_path). Tutto ciò che non è presente nell'elenco non viene restituito nella risposta. La directory generata, GENERATED_DIR per le traduzioni SQL generali, è sql/.
  • TOKEN: il token per l'autenticazione. Per generare un token, utilizza il comando gcloud auth print-access-token o il parco giochi OAuth 2.0 (utilizza l'ambito https://www.googleapis.com/auth/cloud-platform).
  • PROJECT_ID: il progetto per l'elaborazione della traduzione.
  • LOCATION: la posizione del progetto in cui elaborare la traduzione.

Il comando precedente restituisce una risposta che include un ID flusso di lavoro scritto nel formato projects/PROJECT_ID/locations/LOCATION/workflows/WORKFLOW_ID.

Esplora l'output della traduzione

Dopo aver eseguito il job di traduzione, recupera i risultati specificando l'ID del flusso di lavoro del job di traduzione utilizzando il seguente comando:

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

Sostituisci quanto segue:

  • TOKEN: il token per l'autenticazione. Per generare un token, utilizza il comando gcloud auth print-access-token o il parco giochi OAuth 2.0 (utilizza l'ambito https://www.googleapis.com/auth/cloud-platform).
  • PROJECT_ID: il progetto per l'elaborazione della traduzione.
  • LOCATION: la posizione del progetto in cui elaborare la traduzione.
  • WORKFLOW_ID: l'ID generato quando crei un flusso di lavoro di traduzione.