Menerjemahkan kueri SQL dengan Translation API

Dokumen ini menjelaskan cara menggunakan Translation API di BigQuery untuk menerjemahkan skrip yang ditulis dalam dialek SQL lain menjadi kueri GoogleSQL. Translation API dapat menyederhanakan proses memigrasikan beban kerja ke BigQuery.

Sebelum memulai

Sebelum Anda mengirimkan tugas terjemahan, selesaikan langkah-langkah berikut:

  1. Pastikan Anda memiliki semua izin yang diperlukan.
  2. Mengaktifkan BigQuery Migration API.
  3. Mengumpulkan file sumber yang berisi skrip dan kueri SQL yang akan diterjemahkan.
  4. Mengupload file sumber ke Cloud Storage.

Izin yang diperlukan

Untuk mendapatkan izin yang Anda perlukan untuk membuat tugas terjemahan menggunakan API terjemahan, minta administrator untuk memberi Anda peran IAM MigrationWorkflow Editor (roles/bigquerymigration.editor) di resource parent. Untuk mengetahui informasi selengkapnya tentang cara memberikan peran, lihat Mengelola akses.

Peran yang telah ditetapkan ini berisi izin yang diperlukan untuk membuat tugas terjemahan menggunakan Translation API. Untuk melihat izin yang benar-benar diperlukan, perluas bagian Izin yang diperlukan:

Izin yang diperlukan

Izin berikut diperlukan untuk membuat tugas terjemahan menggunakan API terjemahan:

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

Anda mung juga bisa mendapatkan izin ini dengan peran khusus atau peran bawaanlainnya.

Mengaktifkan BigQuery Migration API

Jika project Google Cloud CLI Anda dibuat sebelum 15 Februari 2022, aktifkan BigQuery Migration API sebagai berikut:

  1. Di konsol Google Cloud, buka halaman BigQuery Migration API.

    Buka BigQuery Migration API

  2. Klik Enable.

Mengupload file input ke Cloud Storage

Jika ingin menggunakan Konsol Google Cloud atau BigQuery Migration API untuk melakukan tugas terjemahan, Anda harus mengupload file sumber yang berisi kueri dan skrip yang ingin diterjemahkan ke Cloud Storage. Anda juga dapat mengupload file metadata apa pun atau file YAML konfigurasi ke bucket Cloud Storage yang sama yang berisi file sumber. Untuk mengetahui informasi selengkapnya tentang membuat bucket dan mengupload file ke Cloud Storage, lihat Membuat bucket dan Mengupload objek dari sistem file.

Jenis tugas yang didukung

Translation API dapat menerjemahkan dialek SQL berikut ke GoogleSQL:

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

Translation API juga mendukung tugas terjemahan berikut:

  • Menerjemahkan Oracle SQL ke PostgreSQL SQL - Oracle2Postgresql_Translation

Lokasi

Translation API tersedia di lokasi pemrosesan berikut:

Deskripsi region Nama region Detail
Asia Pasifik
Tokyo asia-northeast1
Mumbai asia-south1
Singapura asia-southeast1
Sydney australia-southeast1
Eropa
Multi-region Uni Eropa eu
Warsawa europe-central2
Finlandia europe-north1 ikon daun CO Rendah2
Madrid europe-southwest1
Belgia europe-west1 ikon daun CO Rendah2
London europe-west2 ikon daun CO Rendah2
Frankfurt europe-west3 ikon daun CO Rendah2
Belanda europe-west4
Zürich europe-west6 ikon daun CO Rendah2
Paris europe-west9 ikon daun CO2 Rendah
Turin europe-west12
Amerika
Sao Paulo southamerica-east1 ikon daun CO Rendah2
Multi-region AS us
Iowa us-central1 ikon daun CO Rendah2
South Carolina us-east1
Northern Virginia us-east4
Columbus, Ohio us-east5
Dallas us-south1
Oregon us-west1 ikon daun CO Rendah2
Los Angeles us-west2
Salt Lake City us-west3

Mengirim tugas terjemahan

Untuk mengirimkan tugas terjemahan menggunakan API terjemahan, gunakan metode projects.locations.workflows.create dan berikan instance resource MigrationWorkflow dengan jenis tugas yang didukung.

Contoh: Membuat batch terjemahan

Perintah curl berikut membuat tugas terjemahan batch tempat file input dan output disimpan di Cloud Storage. Kolom source_target_mapping berisi daftar yang memetakan entri literal sumber ke jalur relatif opsional untuk output target.

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

Ganti kode berikut:

  • TYPE: jenis tugas terjemahan, yang menentukan dialek sumber dan target.
  • TARGET_BASE: URI dasar untuk semua output terjemahan.
  • BASE: URI dasar untuk semua file yang dibaca sebagai sumber untuk terjemahan.
  • TOKEN: token untuk autentikasi. Untuk membuat token, gunakan perintah gcloud auth print-access-token atau OAuth 2.0 playground (gunakan cakupan https://www.googleapis.com/auth/cloud-platform).
  • PROJECT_ID: proyek untuk memproses terjemahan.
  • LOCATION: lokasi tempat pekerjaan diproses.

Perintah sebelumnya menampilkan respons yang menyertakan ID alur kerja yang ditulis dalam format projects/PROJECT_ID/locations/LOCATION/workflows/WORKFLOW_ID.

Contoh: Membuat tugas terjemahan interaktif dengan input dan output literal string

Perintah curl berikut membuat tugas terjemahan dengan input dan output literal string. Kolom source_target_mapping berisi daftar yang memetakan direktori sumber ke jalur relatif opsional untuk output target.

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

Ganti kode berikut:

  • TYPE: jenis tugas terjemahan, yang menentukan dialek sumber dan target.
  • PATH: ID entri literal, mirip dengan nama file atau jalur.
  • STRING: string data input literal (misalnya, SQL) yang akan diterjemahkan.
  • TARGETS: target yang diharapkan dan diinginkan pengguna untuk ditampilkan langsung dalam respons dalam format literal. Respons harus dalam format URI target (misalnya, GENERATED_DIR + target_spec.relative_path + source_spec.literal.relative_path). Apa pun yang tidak ada dalam daftar ini tidak akan ditampilkan dalam respons. Direktori yang dihasilkan, GENERATED_DIR untuk terjemahan SQL umum adalah sql/.
  • TOKEN: token untuk autentikasi. Untuk membuat token, gunakan perintah gcloud auth print-access-token atau OAuth 2.0 playground (gunakan cakupan https://www.googleapis.com/auth/cloud-platform).
  • PROJECT_ID: proyek untuk memproses terjemahan.
  • LOCATION: lokasi tempat pekerjaan diproses.

Perintah sebelumnya menampilkan respons yang menyertakan ID alur kerja yang ditulis dalam format projects/PROJECT_ID/locations/LOCATION/workflows/WORKFLOW_ID.

Pelajari output terjemahan

Setelah menjalankan tugas terjemahan, ambil hasilnya dengan menentukan ID alur kerja tugas terjemahan menggunakan perintah berikut:

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

Ganti kode berikut:

  • TOKEN: token untuk autentikasi. Untuk membuat token, gunakan perintah gcloud auth print-access-token atau OAuth 2.0 playground (gunakan cakupan https://www.googleapis.com/auth/cloud-platform).
  • PROJECT_ID: proyek untuk memproses terjemahan.
  • LOCATION: lokasi tempat pekerjaan diproses.
  • WORKFLOW_ID: ID yang dibuat saat Anda membuat alur kerja terjemahan.