Esegui la migrazione del codice con il traduttore SQL batch

Questo documento descrive come utilizzare il traduttore SQL batch in BigQuery per tradurre script scritti in altri dialetti SQL in query GoogleSQL. Questo documento è destinato agli utenti che hanno familiarità con la console Google Cloud.

Il traduttore SQL batch fa parte di BigQuery Migration Service. Il traduttore SQL batch può tradurre i seguenti dialetti SQL in GoogleSQL:

  • SQL di Amazon Redshift
  • Apache HiveQL e interfaccia a riga di comando Beeline
  • SQL Netezza e NZPLSQL di IBM Netezza
  • Teradata e Teradata Vantage
    • SQL
    • Query Teradata di base (BTEQ)
    • Trasporto parallelo di Teradata (TPT)

Inoltre, la traduzione dei seguenti dialetti SQL è supportata in anteprima:

  • Apache Spark SQL
  • Azure Synapse T-SQL
  • SQL MySQL
  • Oracle SQL, PL/SQL, Exadata
  • SQL PostgreSQL
  • Trino o PrestoSQL
  • SQL Snowflake
  • SQL Server T-SQL
  • SQLite
  • SQL Vertica

Autorizzazioni obbligatorie

Per abilitare BigQuery Migration Service, devi disporre delle seguenti autorizzazioni nel progetto:

  • resourcemanager.projects.get
  • serviceusage.services.enable
  • serviceusage.services.get

Per accedere a BigQuery Migration Service e utilizzarlo, devi disporre delle seguenti autorizzazioni nel progetto:

  • bigquerymigration.workflows.create
  • bigquerymigration.workflows.get
  • bigquerymigration.workflows.list
  • bigquerymigration.workflows.delete
  • bigquerymigration.subtasks.get
  • bigquerymigration.subtasks.list

    In alternativa, puoi utilizzare i seguenti ruoli per ottenere le stesse autorizzazioni:

    • bigquerymigration.viewer - Accesso di sola lettura.
    • bigquerymigration.editor - Accesso in lettura/scrittura.

Per accedere ai bucket Cloud Storage per i file di input e di output:

  • storage.objects.get sul bucket Cloud Storage di origine.
  • storage.objects.list sul bucket Cloud Storage di origine.
  • storage.objects.create sul bucket Cloud Storage di destinazione.

Puoi disporre di tutte le autorizzazioni Cloud Storage necessarie in alto nei ruoli seguenti:

  • roles/storage.objectAdmin
  • roles/storage.admin

Località

Il traduttore SQL batch è disponibile nelle seguenti posizioni di elaborazione:

  • us (più regioni Stati Uniti)
  • eu (più regioni UE)
  • southamerica-east1 (San Paolo)
  • us-central1 (Iowa)
  • asia-northeast1 (Tokyo)
  • asia-south1 (Mumbai)
  • asia-southeast1 (Singapore)
  • australia-southeast1 (Sydney)
  • europe-central2 (Varsavia)
  • europe-north1 (Finlandia)
  • europe-west1 (Belgio)
  • europe-west2 (Londra)
  • europe-west3 (Francoforte)

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. Facoltativo. Crea un file di metadati per migliorare la precisione della traduzione.
  4. Facoltativo. Decidi se devi mappare i nomi degli oggetti SQL nei file di origine su nuovi nomi in BigQuery. Stabilisci quali regole di mappatura dei nomi utilizzare, se necessario.
  5. Decidi quale metodo utilizzare per inviare il job di traduzione.
  6. 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.

Raccogli i file di origine

I file di origine devono essere file di testo contenenti SQL valido per il dialetto di origine. I file di origine possono anche includere commenti. Fai del tuo meglio per assicurarti che l'SQL sia valido, utilizzando qualsiasi metodo disponibile.

Creare file di metadati

Per consentire al servizio di generare risultati di traduzione più accurati, ti consigliamo di fornire file di metadati. Tuttavia, non è obbligatorio.

Puoi utilizzare lo strumento di estrazione a riga di comando dwh-migration-dumper per generare le informazioni sui metadati oppure puoi fornire i tuoi file di metadati. Una volta preparati i file di metadati, puoi includerli insieme ai file di origine nella cartella di origine della traduzione. Il traduttore li rileva automaticamente e li utilizza per tradurre i file sorgente, per abilitare questa funzionalità non occorre configurare impostazioni aggiuntive.

Per generare informazioni sui metadati utilizzando lo strumento dwh-migration-dumper, consulta Generare metadati per la traduzione.

Per fornire i tuoi metadati, raccogli le istruzioni DDL (Data Definition Language) per gli oggetti SQL nel sistema di origine in file di testo separati.

Mappa i nomi degli oggetti SQL

Facoltativamente, puoi eseguire la mappatura dei nomi di output durante la traduzione batch. Quando utilizzi la mappatura dei nomi di output, specifichi regole di mappatura dei nomi che modificano i nomi degli oggetti SQL nel sistema di origine in nuovi nomi in BigQuery. Ad esempio, potresti avere l'oggetto schema1.table1 nel sistema di origine e vuoi che abbia il nome project1.dataset1.table1 in BigQuery. Se utilizzi il mapping dei nomi di output, devi definire le regole di mappatura dei nomi prima di avviare un job di traduzione batch. Puoi inserire queste regole manualmente durante la configurazione del job oppure creare un file JSON contenente le regole di mappatura dei nomi e caricarlo.

Decidi come inviare il job di traduzione

Per inviare un job di traduzione batch sono disponibili tre opzioni:

  • Client di traduzione batch: configura un job modificando le impostazioni in un file di configurazione e invia il job utilizzando la riga di comando. Questo approccio non richiede il caricamento manuale dei file di origine in Cloud Storage. Il client usa ancora Cloud Storage per archiviare i file durante l'elaborazione del job di traduzione.

    Il client di traduzione batch è un client Python open source che ti consente di tradurre i file di origine che si trovano sulla tua macchina locale e di ottenere l'output dei file tradotti in una directory locale. Per configurare il client per l'utilizzo di base, modifica alcune impostazioni nel file di configurazione. Se vuoi, puoi anche configurare il client in modo che esegua attività più complesse come la sostituzione delle macro e la pre- e post-elaborazione degli input e degli output di traduzione. Per ulteriori informazioni, consulta il readme del client di traduzione batch.

  • Console Google Cloud: configura e invia un job utilizzando un'interfaccia utente. Questo approccio richiede di caricare i file di origine in Cloud Storage.

  • API BigQuery Migration: configura e invia un job in modo programmatico. Questo approccio richiede di caricare i file di origine in Cloud Storage.

Creare file YAML di configurazione

Facoltativamente, puoi creare e utilizzare file YAML di configurazione di configurazione per personalizzare le traduzioni batch. Questi file possono essere usati per trasformare l'output di traduzione in vari modi. Ad esempio, puoi creare un file YAML di configurazione per modificare il caso di un oggetto SQL durante la traduzione.

Se vuoi utilizzare la console Google Cloud o l'API BigQuery Migration per un job di traduzione batch, puoi caricare il file YAML di configurazione nel bucket Cloud Storage contenente i file di origine.

Se vuoi utilizzare il client di traduzione batch, puoi inserire il file YAML di configurazione nella cartella di input di traduzione locale.

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

Segui questi passaggi per avviare un job di traduzione, visualizzarne l'avanzamento e vedere i risultati.

Client di traduzione batch

  1. Installa il client di traduzione batch e Google Cloud CLI.

  2. Genera un file delle credenziali gcloud CLI gcloud.

  3. Nella directory di installazione del client di traduzione batch, utilizza l'editor di testo di tua scelta per aprire il file config.yaml e modificare le seguenti impostazioni:

    • project_number: digita il numero del progetto da utilizzare per il job di traduzione batch. Puoi trovare queste informazioni nel riquadro Informazioni sul progetto nella pagina di benvenuto della console Google Cloud per il progetto.
    • gcs_bucket: digita il nome del bucket Cloud Storage che il client di traduzione batch deve utilizzare per archiviare i file durante l'elaborazione del job di traduzione.
    • input_directory: digita il percorso assoluto o relativo della directory che contiene i file di origine ed eventuali file di metadati.
    • output_directory: digita il percorso assoluto o relativo alla directory di destinazione per i file tradotti.
  4. Salva le modifiche e chiudi il file config.yaml.

  5. Inserisci i file di origine e di metadati nella directory di input.

  6. Esegui il client di traduzione batch utilizzando il seguente comando:

    bin/dwh-migration-client
    

    Una volta creato il job di traduzione, puoi visualizzarne lo stato nell'elenco dei job di traduzione nella console Google Cloud.

  7. Facoltativo. Una volta completato il job di traduzione, elimina i file creati dal job nel bucket Cloud Storage specificato per evitare costi di archiviazione.

Console

Questi passaggi presuppongono che i file di origine siano già caricati in un bucket Cloud Storage.

  1. Nella console Google Cloud, vai alla pagina BigQuery.

    Vai a BigQuery

  2. Nella sezione Migrazione del pannello di navigazione, fai clic su Traduzione SQL.

  3. Fai clic su Avvia traduzione.

  4. Compila la finestra di dialogo di configurazione della traduzione.

    1. In Nome visualizzato, digita un nome per il job di traduzione. Il nome può contenere lettere, numeri o trattini bassi.
    2. In Località di elaborazione, seleziona la località in cui vuoi eseguire il job di traduzione. Ad esempio, se ti trovi in Europa e non vuoi che i tuoi dati superino i confini di località, seleziona la regione eu. Il job di traduzione funziona meglio se scegli la stessa posizione del bucket del file di origine.
    3. Per Dialetto di origine, seleziona il dialetto SQL che vuoi tradurre.
    4. Per Dialetto di destinazione, seleziona BigQuery.
  5. Tocca Avanti.

  6. In Posizione di origine, specifica il percorso della cartella Cloud Storage contenente i file da tradurre. Puoi digitare il percorso nel formato bucket_name/folder_name/ o utilizzare l'opzione Sfoglia.

  7. Tocca Avanti.

  8. In Posizione di destinazione, specifica il percorso della cartella Cloud Storage di destinazione per i file tradotti. Puoi digitare il percorso nel formato bucket_name/folder_name/ o utilizzare l'opzione Sfoglia.

  9. Se esegui traduzioni che non è necessario specificare nomi degli oggetti predefiniti o mapping dei nomi da origine a destinazione, vai al passaggio 11. In caso contrario, fai clic su Avanti.

  10. Compila le impostazioni facoltative necessarie.

    1. Facoltativo. In Database predefinito, digita un nome del database predefinito da utilizzare con i file di origine. Il traduttore utilizza questo nome predefinito del database per risolvere i nomi completi degli oggetti SQL in cui manca il nome del database.

    2. Facoltativo. In Percorso di ricerca di schemi, specifica uno schema da cercare quando il traduttore deve risolvere i nomi completi degli oggetti SQL nei file di origine in cui manca il nome dello schema. Se i file di origine utilizzano una serie di nomi di schema diversi, fai clic su Aggiungi nome schema e aggiungi un valore per ciascun nome di schema a cui potrebbe essere fatto riferimento.

      Il traduttore cerca i file di metadati che hai fornito per convalidare le tabelle con i nomi degli schemi. Se non è possibile determinare un'opzione definita dai metadati, il primo nome dello schema inserito viene utilizzato come predefinito. Per saperne di più su come viene utilizzato il nome dello schema predefinito, consulta lo schema predefinito.

    3. Facoltativo. Se vuoi specificare regole di mappatura dei nomi per rinominare gli oggetti SQL tra il sistema di origine e BigQuery durante la traduzione, puoi fornire un file JSON con la coppia di mapping dei nomi oppure utilizzare la console Google Cloud per specificare i valori da mappare.

      Per utilizzare un file JSON:

      1. Fai clic su Carica file JSON per la mappatura dei nomi.
      2. Individua la posizione di un file di mapping dei nomi nel formato appropriato, selezionalo e fai clic su Apri.

        Tieni presente che le dimensioni del file devono essere inferiori a 5 MB.

      Per utilizzare la console Google Cloud:

      1. Fai clic su Aggiungi coppia di mapping dei nomi.
      2. Aggiungi le parti appropriate del nome dell'oggetto di origine nei campi Database, Schema, Relazione e Attributo nella colonna Origine.
      3. Aggiungi le parti del nome dell'oggetto di destinazione in BigQuery nei campi della colonna Target.
      4. In Tipo, seleziona il tipo di oggetto che descrive l'oggetto che stai mappando.
      5. Ripeti i passaggi 1-4 finché non hai specificato tutte le coppie di mapping dei nomi necessarie. Tieni presente che puoi specificare solo fino a 25 coppie di mappatura dei nomi quando utilizzi la console Google Cloud.
  11. Fai clic su Crea per avviare il job di traduzione.

Una volta creato il job di traduzione, puoi visualizzarne lo stato nell'elenco dei job di traduzione.

API

Al metodo projects.locations.workflows.create, fornisci un'istanza della risorsa MigrationWorkflow con un tipo di attività supportato.

Tipi di attività supportati

  • 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

Limitazione

L'API di traduzione consolidata supporta solo i job di traduzione che vengono completati in meno di 1,5 ore.

Autorizzazioni obbligatorie

Per ottenere le autorizzazioni necessarie per creare job di traduzione utilizzando l'API di traduzione consolidata, chiedi all'amministratore di concederti il ruolo IAM Editor MigrationWorkflow (roles/bigquerymigration.editor) nella 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 di traduzione consolidata. Per visualizzare le autorizzazioni esatte necessarie, espandi la sezione Autorizzazioni richieste:

Autorizzazioni obbligatorie

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

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

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

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. Per visualizzare i risultati della traduzione tramite l'API, vedi Risultati dell'API di traduzione consolidata.

Esempio: creare un job di traduzione con input e output di 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. Per visualizzare i risultati della traduzione tramite l'API, vedi Risultati dell'API di traduzione consolidata.

Esplora l'output della traduzione

Dopo aver eseguito il job di traduzione, puoi visualizzare le informazioni sul job nella console Google Cloud. Se hai utilizzato la console Google Cloud per eseguire il job, puoi visualizzare i risultati nel bucket Cloud Storage di destinazione specificato. Se hai utilizzato l'API di traduzione consolidata per eseguire il job, puoi eseguire un altro comando con l'ID flusso di lavoro per recuperare i risultati del job. Se hai utilizzato il client di traduzione batch per eseguire il job, puoi visualizzare i risultati nella directory di output specificata. Il traduttore SQL batch restituisce i seguenti file nella destinazione specificata:

  • I file tradotti.
  • Il report di riepilogo della traduzione in formato CSV.
  • Il mapping dei nomi di output utilizzato in formato JSON.

Output della console Google Cloud

Per visualizzare i dettagli del job di traduzione, segui questi passaggi:

  1. Nella console Google Cloud, vai alla pagina BigQuery.

    Vai a BigQuery

  2. Nella sezione Migrazione del pannello di navigazione, fai clic su Traduzione SQL.

  3. Nell'elenco dei job di traduzione, individua il job per cui vuoi visualizzare i dettagli della traduzione. Quindi, fai clic sul nome del job di traduzione.

  4. Nella sezione Risultati, puoi vedere la percentuale di successo complessiva della traduzione, il numero di istruzioni elaborate e la durata del job.

  5. Seleziona la scheda Riepilogo log per visualizzare un riepilogo dei problemi di traduzione, incluse le categorie di problemi, le azioni suggerite e la frequenza con cui si è verificato ogni problema. Puoi anche selezionare una categoria di problema per visualizzare i messaggi di log associati a quella categoria di problema (Anteprima).

  6. Seleziona la scheda Messaggi di log per visualizzare ulteriori dettagli su ciascun problema di traduzione, tra cui la categoria del problema, il messaggio del problema specifico e un link al file in cui si è verificato. Puoi selezionare un problema nella scheda Messaggio di log per aprire la scheda Codice che mostra il file di input e di output, se applicabile (Anteprima).

  7. Seleziona la scheda Configurazione traduzione per visualizzare i dettagli di configurazione dei job di traduzione.

Risultati dell'API di traduzione consolidata

Al termine della traduzione asincrona, 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.

Rapporto riepilogativo

Il report di riepilogo è un file CSV che contiene una tabella di tutti i messaggi di avviso ed errore riscontrati durante il job di traduzione.

Per vedere il file di riepilogo nella console Google Cloud, segui questi passaggi:

  1. Nella console Google Cloud, vai alla pagina BigQuery.

    Vai a BigQuery

  2. Nella sezione Migrazione del pannello di navigazione, fai clic su Traduzione SQL.

  3. Nell'elenco dei job di traduzione, individua il job che ti interessa e fai clic su Mostra dettagli nella colonna Stato.

  4. Nella sezione Report sulla traduzione, fai clic su batch_translation_report.csv.

  5. Nella pagina Dettagli oggetto, fai clic sul valore nella riga URL autenticato per visualizzare il file nel browser.

Nella tabella seguente vengono descritte le colonne del file di riepilogo:

Colonna Description
Timestamp Il timestamp in cui si è verificato il problema.
FilePath Il percorso del file di origine a cui è associato il problema.
FileName Il nome del file di origine a cui è associato il problema.
ScriptLine Il numero di riga in cui si è verificato il problema.
ScriptColumn Il numero di colonna in cui si è verificato il problema.
TranspilerComponent Il componente interno del motore di traduzione in cui si è verificato l'avviso o l'errore. Questa colonna potrebbe essere vuota.
Ambiente L'ambiente del dialetto di traduzione associato all'avviso o all'errore. Questa colonna potrebbe essere vuota.
ObjectName L'oggetto SQL nel file di origine associato all'avviso o all'errore. Questa colonna potrebbe essere vuota.
Gravità La gravità del problema (avviso o errore).
Categoria La categoria del problema di traduzione.
SourceType L'origine del problema. Il valore in questa colonna può essere SQL, che indica un problema nei file SQL di input, oppure METADATA, che indica un problema nel pacchetto dei metadati.
Message L'avviso o il messaggio di errore relativo al problema di traduzione.
ScriptContext Lo snippet SQL nel file di origine associato al problema.
Azione L'azione che ti consigliamo di eseguire per risolvere il problema.

Scheda Codice

La scheda Codice consente di rivedere ulteriori informazioni sui file di input e di output per un determinato job di traduzione. Nella scheda del codice, puoi esaminare i file utilizzati in un job di traduzione, esaminare un confronto affiancato tra un file di input e la sua traduzione per individuare eventuali inesattezze e visualizzare i riepiloghi dei log e i messaggi relativi a un file specifico in un job.

Per accedere alla scheda del codice, segui questi passaggi:

  1. Nella console Google Cloud, vai alla pagina BigQuery.

    Vai a BigQuery

  2. Nella sezione Migrazione del pannello di navigazione, fai clic su Traduzione SQL.

  3. Nell'elenco dei job di traduzione, individua il job che ti interessa, quindi fai clic su Mostra dettagli nella colonna Stato.

  4. Seleziona Scheda Codice.

File di mapping dei nomi di output utilizzato

Questo file JSON contiene le regole di mappatura dei nomi di output utilizzate dal job di traduzione. Le regole in questo file potrebbero essere diverse dalle regole di mappatura dei nomi di output che hai specificato per il job di traduzione, a causa di conflitti nelle regole di mappatura dei nomi o della mancanza di regole di mappatura dei nomi per gli oggetti SQL identificati durante la traduzione. Esamina questo file per determinare se le regole di mappatura dei nomi devono essere corrette. Se lo sono, crea nuove regole di mappatura dei nomi di output in grado di risolvere eventuali problemi identificati ed esegui un nuovo job di traduzione.

File tradotti

Per ogni file di origine, viene generato un file di output corrispondente nel percorso di destinazione. Il file di output contiene la query tradotta.

Esegui il debug delle query SQL tradotte in batch con il traduttore SQL interattivo

Puoi utilizzare il traduttore SQL interattivo BigQuery per esaminare una query SQL o eseguirne il debug utilizzando gli stessi metadati o le stesse informazioni di mappatura degli oggetti del database di origine. Dopo aver completato un job di traduzione batch, BigQuery genera un ID configurazione di traduzione contenente informazioni sui metadati del job, sulla mappatura degli oggetti o sul percorso di ricerca dello schema, a seconda delle esigenze della query. Puoi utilizzare l'ID configurazione della traduzione batch con il traduttore SQL interattivo per eseguire query SQL con la configurazione specificata.

Per avviare una traduzione SQL interattiva utilizzando un ID di configurazione della traduzione batch, segui questi passaggi:

  1. Nella console Google Cloud, vai alla pagina BigQuery.

    Vai a BigQuery

  2. Nella sezione Migrazione del menu di navigazione, fai clic su Traduzione SQL.

  3. Nell'elenco dei job di traduzione, individua il job che ti interessa, quindi fai clic su Altre opzioni > Apri traduzione interattiva.

Si apre il traduttore SQL interattivo BigQuery con l'ID configurazione della traduzione batch corrispondente. Per visualizzare l'ID configurazione della traduzione per la traduzione interattiva, fai clic su Altro > Impostazioni di traduzione nel traduttore interattivo.

Limitazioni

Il traduttore non può tradurre le funzioni definite dall'utente (UDF) da lingue diverse dall'SQL, perché non può analizzarle per determinare i tipi di dati di input e di output. Ciò causa un'imprecisa traduzione delle istruzioni SQL che fanno riferimento a queste funzioni definite dall'utente. Per assicurarti che venga fatto riferimento corretto alle funzioni definite dall'utente non SQL durante la traduzione, utilizza un codice SQL valido per creare funzioni definite dall'utente segnaposto con le stesse firme.

Ad esempio, supponi di avere una funzione definita dall'utente scritta in C che calcola la somma di due numeri interi. Per assicurarti che le istruzioni SQL che fanno riferimento a questa funzione definita dall'utente vengano tradotte correttamente, crea una funzione SQL segnaposto con la stessa firma della funzione definita dall'utente C, come mostrato nell'esempio seguente:

CREATE FUNCTION Test.MySum (a INT, b INT)
  RETURNS INT
  LANGUAGE SQL
  RETURN a + b;

Salva questa funzione definita dall'utente segnaposto in un file di testo e includi quel file come uno dei file di origine per il job di traduzione. Ciò consente al traduttore di apprendere la definizione della funzione definita dall'utente e identificare i tipi di dati di input e di output previsti.

Quota e limiti

  • Si applicano le quote dell'API BigQuery Migration.
  • Ogni progetto può avere al massimo 10 attività di traduzione attive.
  • Anche se non esiste un limite fisso al numero totale di file di origine e di metadati, ti consigliamo di mantenere il numero di file inferiore a 1000 per ottenere prestazioni migliori.

Risolvere gli errori di traduzione

Problemi di traduzione in RelationNotFound o AttributeNotFound

La traduzione funziona meglio con i DDL di metadati. Quando non è possibile trovare le definizioni degli oggetti SQL, il motore di traduzione segnala problemi RelationNotFound o AttributeNotFound. Ti consigliamo di utilizzare l'estrattore di metadati per generare pacchetti di metadati e assicurarti che siano presenti tutte le definizioni degli oggetti. L'aggiunta di metadati è il primo passaggio consigliato per risolvere la maggior parte degli errori di traduzione, poiché spesso consente di correggere molti altri errori causati indirettamente dalla mancanza di metadati.

Per ulteriori informazioni, consulta la sezione Generare metadati per la traduzione e la valutazione.

Prezzi

Non è previsto alcun costo per l'utilizzo del traduttore SQL batch. Tuttavia, lo spazio di archiviazione utilizzato per archiviare i file di input e di output comporta le normali tariffe. Per ulteriori informazioni, consulta i prezzi dell'archiviazione.

Passaggi successivi

Scopri di più sui seguenti passaggi nella migrazione dei data warehouse: