Membuat tabel eksternal BigLake untuk Cloud Storage

Dokumen ini menjelaskan cara membuat tabel BigLake Cloud Storage. Tabel BigLake memungkinkan Anda menggunakan delegasi akses untuk membuat kueri data terstruktur di Cloud Storage. Delegasi akses memisahkan akses ke tabel BigLake dari akses ke penyimpanan data dasar.

Sebelum memulai

  1. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  2. Make sure that billing is enabled for your Google Cloud project.

  3. Enable the BigQuery Connection API.

    Enable the API

    Jika ingin membaca tabel BigLake dari mesin open source seperti Apache Spark, Anda harus mengaktifkan BigQuery Storage Read API.

  4. In the Google Cloud console, activate Cloud Shell.

    Activate Cloud Shell

  5. Pastikan Anda memiliki set data BigQuery.

  6. Pastikan versi Google Cloud SDK Anda adalah 366.0.0 atau yang lebih baru:

    gcloud version
    

    Jika perlu, update Google Cloud SDK.

    1. Opsional: Untuk Terraform, diperlukan terraform-provider-google versi 4.25.0 atau yang lebih baru. Rilis terraform-provider-google tercantum di GitHub. Anda dapat mendownload Terraform versi terbaru dari download Terraform HashiCorp.
  7. Membuat koneksi resource Cloud berdasarkan sumber data eksternal Anda, dan memberikan koneksi tersebut akses ke Cloud Storage. Jika Anda tidak memiliki izin yang sesuai untuk membuat koneksi, minta administrator BigQuery untuk membuat koneksi dan membagikannya kepada Anda.

Peran yang diperlukan

Untuk membuat tabel BigLake, Anda memerlukan izin Identity and Access Management (IAM) BigQuery berikut:

  • bigquery.tables.create
  • bigquery.connections.delegate

Peran Identity and Access Management bawaan Admin (roles/bigquery.admin) BigQuery mencakup izin ini.

Jika Anda bukan akun utama dalam peran ini, minta administrator untuk memberi Anda akses atau membuatkan tabel BigLake.

Untuk informasi selengkapnya tentang peran dan izin Identity and Access Management di BigQuery, lihat Peran dan izin bawaan.

Pertimbangan lokasi

Saat menggunakan Cloud Storage untuk menyimpan file data, Anda dapat meningkatkan performa menggunakan bucket region tunggal atau region ganda Cloud Storage alih-alih bucket multi-region.

Membuat tabel BigLake pada data tidak berpartisi

Jika Anda sudah terbiasa membuat tabel di BigQuery, proses pembuatan tabel BigLake akan serupa. Tabel Anda dapat menggunakan format file apa pun yang didukung BigLake. Untuk informasi selengkapnya, lihat Batasan.

Sebelum membuat tabel BigLake, Anda harus memiliki set data danKoneksi resource cloud yang dapatmengakses Cloud Storage.

Untuk membuat tabel BigLake, pilih salah satu opsi berikut:

Konsol

  1. Buka halaman BigQuery.

    Buka BigQuery

  2. Di panel Penjelajah, luaskan project Anda lalu pilih set data.

  3. Luaskan opsi Actions dan klik Create table.

  4. Di bagian Sumber, tentukan detail berikut:

    1. Untuk Create table from, pilih Google Cloud Storage

    2. Untuk Select file from GCS bucket or use a URI pattern, cari untuk memilih bucket dan file yang akan digunakan, atau ketik jalur dalam format gs://bucket_name/[folder_name/]file_name.

      Anda tidak dapat menentukan beberapa URI di Konsol Google Cloud, tetapi Anda dapat memilih beberapa file dengan menentukan satu karakter pengganti tanda bintang (*). Contoh, gs://mybucket/file_name*. Untuk informasi selengkapnya, lihat Dukungan karakter pengganti untuk URI Cloud Storage.

      Bucket Cloud Storage harus berada di lokasi yang sama dengan set data yang berisi tabel yang Anda buat.

    3. Untuk File format, pilih format yang cocok dengan file Anda.

  5. Di bagian Tujuan, tentukan detail berikut:

    1. Untuk Project, pilih project tempat tabel akan dibuat.

    2. Untuk Dataset, pilih set data tempat tabel akan dibuat.

    3. Untuk Table, masukkan nama tabel yang Anda buat.

    4. Untuk Jenis tabel, pilih Tabel eksternal.

    5. Pilih Create a BigLake table using a Cloud Resource connection.

    6. Untuk Connection ID, pilih koneksi yang Anda buat sebelumnya.

  6. Di bagian Schema, Anda dapat mengaktifkan deteksi otomatis skema atau menentukan skema secara manual jika Anda memiliki file sumber. Jika tidak memiliki file sumber, Anda harus menentukan skema secara manual.

    • Untuk mengaktifkan deteksi otomatis skema, pilih opsi Auto-detect.

    • Untuk menentukan skema secara manual, biarkan opsi Deteksi otomatis tidak dicentang. Aktifkan Edit as text dan masukkan skema tabel sebagai array JSON.

  7. Untuk mengabaikan baris dengan nilai kolom tambahan yang tidak cocok dengan skema, luaskan bagian Advanced options dan pilih Unknown values.

  8. Klik Create table.

Setelah tabel permanen dibuat, Anda dapat menjalankan kueri terhadap tabel seolah-olah tabel tersebut merupakan tabel BigQuery native. Setelah kueri selesai, Anda dapat mengekspor hasilnya sebagai file CSV atau JSON, menyimpan hasilnya sebagai tabel, atau menyimpan hasilnya ke Google Spreadsheet.

SQL

Gunakan pernyataan DDL CREATE EXTERNAL TABLE. Anda dapat menentukan skema secara eksplisit, atau menggunakan deteksi otomatis skema untuk menyimpulkan skema dari data eksternal.

  1. Di Konsol Google Cloud, buka halaman BigQuery.

    Buka BigQuery

  2. Di editor kueri, masukkan pernyataan berikut:

    CREATE EXTERNAL TABLE `PROJECT_ID.DATASET.EXTERNAL_TABLE_NAME`
      WITH CONNECTION `PROJECT_ID.REGION.CONNECTION_ID`
      OPTIONS (
        format ="TABLE_FORMAT",
        uris = ['BUCKET_PATH'[,...]],
        max_staleness = STALENESS_INTERVAL,
        metadata_cache_mode = 'CACHE_MODE'
        );

    Ganti yang berikut ini:

    • PROJECT_ID: nama project tempat Anda ingin membuat tabel—misalnya, myproject
    • DATASET: nama set data BigQuery tempat Anda ingin membuat tabel—misalnya, mydataset
    • EXTERNAL_TABLE_NAME: nama tabel yang ingin Anda buat—misalnya, mytable
    • REGION: region yang berisi koneksi—misalnya, us
    • CONNECTION_ID: ID koneksi—misalnya, myconnection

      Saat Anda melihat detail koneksi di konsol Google Cloud, ID koneksi adalah nilai di bagian terakhir dari ID koneksi yang sepenuhnya memenuhi syarat yang ditampilkan di ID Koneksi—misalnya, projects/myproject/locations/connection_location/connections/myconnection.

    • TABLE_FORMAT: format tabel yang ingin Anda buat—misalnya, PARQUET

      Untuk mengetahui informasi selengkapnya tentang format yang didukung, lihat Batasan.

    • BUCKET_PATH: jalur ke bucket Cloud Storage yang berisi data untuk tabel eksternal, dalam format ['gs://bucket_name/[folder_name/]file_name'].

      Anda dapat memilih beberapa file dari bucket dengan menentukan satu karakter pengganti tanda bintang (*) di jalur. Contoh, ['gs://mybucket/file_name*']. Untuk informasi selengkapnya, lihat Dukungan karakter pengganti untuk URI Cloud Storage.

      Anda dapat menyertakan beberapa bucket untuk opsi uris dengan memberikan beberapa jalur.

      Contoh berikut menunjukkan nilai uris yang valid:

      • ['gs://bucket/path1/myfile.csv']
      • ['gs://bucket/path1/*.csv']
      • ['gs://bucket/path1/*', 'gs://bucket/path2/file00*']

      Saat Anda menentukan nilai uris yang menargetkan beberapa file, semua file tersebut harus berbagi skema yang kompatibel.

      Untuk informasi selengkapnya tentang penggunaan URI Cloud Storage di BigQuery, lihat Jalur resource Cloud Storage.

    • STALENESS_INTERVAL: menentukan apakah metadata yang di-cache digunakan oleh operasi terhadap tabel BigLake, dan seberapa baru metadata yang di-cache agar operasi dapat menggunakannya. Untuk informasi selengkapnya tentang pertimbangan caching metadata, lihat Caching metadata untuk performa.

      Untuk menonaktifkan caching metadata, tentukan 0. Ini adalah setelan defaultnya.

      Untuk mengaktifkan caching metadata, tentukan nilai literal interval antara 30 menit dan 7 hari. Misalnya, tentukan INTERVAL 4 HOUR untuk interval periode tidak berlaku 4 jam. Dengan nilai ini, operasi terhadap tabel akan menggunakan metadata yang di-cache jika telah di-refresh dalam 4 jam terakhir. Jika metadata yang di-cache lebih usang, operasi akan mengambil metadata dari Cloud Storage.

    • CACHE_MODE: menentukan apakah cache metadata di-refresh secara otomatis atau manual. Untuk informasi selengkapnya terkait pertimbangan caching metadata, lihat Caching metadata untuk performa.

      Ubah ke AUTOMATIC agar cache metadata diperbarui sesuai dengan interval yang ditentukan sistem, biasanya antara 30 hingga 60 menit.

      Tetapkan ke MANUAL jika Anda ingin me-refresh cache metadata pada jadwal yang Anda tentukan. Dalam hal ini, Anda dapat memanggil prosedur sistem BQ.REFRESH_EXTERNAL_METADATA_CACHE untuk me-refresh cache.

      Anda harus menetapkan CACHE_MODE jika STALENESS_INTERVAL ditetapkan ke nilai yang lebih besar dari 0.

  3. Klik Run.

Untuk informasi selengkapnya tentang cara menjalankan kueri, lihat Menjalankan kueri interaktif.

bq

Opsi 1: File definisi tabel

Gunakan perintah bq mkdef untuk membuat file definisi tabel, lalu teruskan jalur file ke perintah bq mk sebagai berikut:

bq mkdef \
    --connection_id=CONNECTION_ID \
    --source_format=SOURCE_FORMAT \
  BUCKET_PATH > DEFINITION_FILE

bq mk --table \
    --external_table_definition=DEFINITION_FILE \
    --max_staleness=STALENESS_INTERVAL \
    PROJECT_ID:DATASET.EXTERNAL_TABLE_NAME \
    SCHEMA

Ganti kode berikut:

  • CONNECTION_ID: ID koneksi—misalnya, myconnection

    Saat Anda melihat detail koneksi di konsol Google Cloud, ID koneksi adalah nilai di bagian terakhir dari ID koneksi yang sepenuhnya memenuhi syarat yang ditampilkan di ID Koneksi—misalnya, projects/myproject/locations/connection_location/connections/myconnection.

  • SOURCE_FORMAT: format sumber data eksternal. Contoh, PARQUET.

  • BUCKET_PATH: jalur ke bucket Cloud Storage yang berisi data untuk tabel, dalam format gs://bucket_name/[folder_name/]file_pattern.

    Anda dapat memilih beberapa file dari bucket dengan menentukan satu karakter pengganti tanda bintang (*) di file_pattern. Contoh: gs://mybucket/file00*.parquet Untuk informasi selengkapnya, lihat Dukungan karakter pengganti untuk URI Cloud Storage.

    Anda dapat menentukan beberapa bucket untuk opsi uris dengan menyediakan beberapa jalur.

    Contoh berikut menunjukkan nilai uris yang valid:

    • gs://bucket/path1/myfile.csv
    • gs://bucket/path1/*.parquet
    • gs://bucket/path1/file1*, gs://bucket1/path1/*

    Saat Anda menentukan nilai uris yang menargetkan beberapa file, semua file tersebut harus berbagi skema yang kompatibel.

    Untuk informasi selengkapnya tentang penggunaan URI Cloud Storage di BigQuery, lihat Jalur resource Cloud Storage.

  • DEFINITION_FILE: jalur ke file definisi tabel di mesin lokal Anda.

  • STALENESS_INTERVAL: menentukan apakah metadata yang di-cache digunakan oleh operasi terhadap tabel BigLake, dan seberapa baru metadata yang di-cache agar operasi dapat menggunakannya. Untuk informasi selengkapnya tentang pertimbangan caching metadata, lihat Caching metadata untuk performa.

    Untuk menonaktifkan caching metadata, tentukan 0. Ini adalah setelan defaultnya.

    Untuk mengaktifkan caching metadata, tentukan nilai interval antara 30 menit hingga 7 hari, menggunakan Y-M D H:M:S yang dijelaskan dalam dokumentasi jenis data INTERVAL. Misalnya, tentukan 0-0 0 4:0:0 untuk interval periode tidak berlaku 4 jam. Dengan nilai ini, operasi terhadap tabel akan menggunakan metadata yang di-cache jika telah di-refresh dalam 4 jam terakhir. Jika metadata yang di-cache lebih tua, operasi akan mengambil metadata dari Cloud Storage.

  • DATASET: nama set data BigQuery tempat Anda ingin membuat tabel—misalnya, mydataset

  • EXTERNAL_TABLE_NAME: nama tabel yang ingin Anda buat—misalnya, mytable

  • SCHEMA: skema untuk tabel BigLake

Contoh:

bq mkdef
    --connection_id=myconnection
    --metadata_cache_mode=CACHE_MODE
    --source_format=CSV 'gs://mybucket/*.csv' > mytable_def

bq mk
    --table
    --external_table_definition=mytable_def='gs://mybucket/*.csv'
    --max_staleness=0-0 0 4:0:0
    myproject:mydataset.mybiglaketable
    Region:STRING,Quarter:STRING,Total_sales:INTEGER

Untuk menggunakan deteksi otomatis skema, tetapkan flag --autodetect=true dalam perintah mkdef dan hapus skemanya:

bq mkdef \
    --connection_id=myconnection \
    --metadata_cache_mode=CACHE_MODE \
    --source_format=CSV --autodetect=true \
    gs://mybucket/*.csv > mytable_def

bq mk \
    --table \
    --external_table_definition=mytable_def=gs://mybucket/*.csv \
    --max_staleness=0-0 0 4:0:0 \
    myproject:mydataset.myexternaltable

Opsi 2: Definisi tabel inline

Alih-alih membuat file definisi tabel, Anda dapat meneruskan definisi tabel langsung ke perintah bq mk. Gunakan dekorator @connection untuk menentukan koneksi yang akan digunakan di akhir flag --external_table_definition.

bq mk --table \
  --external_table_definition=@SOURCE_FORMAT=BUCKET_PATH@projects/PROJECT_ID/locations/REGION/connections/CONNECTION_ID \
  DATASET_NAME.TABLE_NAME \
  SCHEMA

Ganti yang berikut ini:

  • SOURCE_FORMAT: format sumber data eksternal

    Misalnya, CSV.

  • BUCKET_PATH: jalur ke bucket Cloud Storage yang berisi data untuk tabel, dalam format gs://bucket_name/[folder_name/]file_pattern.

    Anda dapat memilih beberapa file dari bucket dengan menentukan satu karakter pengganti tanda bintang (*) di file_pattern. Contoh: gs://mybucket/file00*.parquet Untuk informasi selengkapnya, lihat Dukungan karakter pengganti untuk URI Cloud Storage.

    Anda dapat menentukan beberapa bucket untuk opsi uris dengan menyediakan beberapa jalur.

    Contoh berikut menunjukkan nilai uris yang valid:

    • gs://bucket/path1/myfile.csv
    • gs://bucket/path1/*.parquet
    • gs://bucket/path1/file1*, gs://bucket1/path1/*

    Saat Anda menentukan nilai uris yang menargetkan beberapa file, semua file tersebut harus berbagi skema yang kompatibel.

    Untuk informasi selengkapnya tentang penggunaan URI Cloud Storage di BigQuery, lihat Jalur resource Cloud Storage.

  • PROJECT_ID: nama project tempat Anda ingin membuat tabel—misalnya, myproject

  • REGION: region yang berisi koneksi, us

  • CONNECTION_ID: ID koneksi—misalnya, myconnection

    Saat Anda melihat detail koneksi di konsol Google Cloud, ID koneksi adalah nilai di bagian terakhir dari ID koneksi yang sepenuhnya memenuhi syarat yang ditampilkan di ID Koneksi—misalnya, projects/myproject/locations/connection_location/connections/myconnection.

  • DATASET_NAME: nama set data tempat Anda ingin membuat tabel BigLake

  • TABLE_NAME: nama tabel BigLake

  • SCHEMA: skema untuk tabel BigLake

Contoh:

bq mk --table \
    --external_table_definition=@CSV=gs://mybucket/*.parquet@projects/myproject/locations/us/connections/myconnection \
    --max_staleness=0-0 0 4:0:0 \
    myproject:mydataset.myexternaltable \
    Region:STRING,Quarter:STRING,Total_sales:INTEGER

API

Panggil metode API metode tables.insert, lalu buat ExternalDataConfiguration di resource Table yang Anda teruskan.

Tentukan properti schema atau tetapkan properti autodetect ke true untuk mengaktifkan deteksi otomatis skema untuk sumber data yang didukung.

Tentukan properti connectionId untuk mengidentifikasi koneksi yang akan digunakan untuk terhubung ke Cloud Storage.

Terraform

Contoh ini membuat Tabel BigLake pada data tidak berpartisi.

Untuk melakukan autentikasi ke BigQuery, siapkan Kredensial Default Aplikasi. Untuk informasi selengkapnya, lihat Menyiapkan autentikasi untuk library klien.

# This creates a bucket in the US region named "my-bucket" with a pseudorandom suffix.
resource "random_id" "default" {
  byte_length = 8
}
resource "google_storage_bucket" "default" {
  name                        = "my-bucket-${random_id.default.hex}"
  location                    = "US"
  force_destroy               = true
  uniform_bucket_level_access = true
}

# This queries the provider for project information.
data "google_project" "project" {}

# This creates a connection in the US region named "my-connection".
# This connection is used to access the bucket.
resource "google_bigquery_connection" "default" {
  connection_id = "my-connection"
  location      = "US"
  cloud_resource {}
}

# This grants the previous connection IAM role access to the bucket.
resource "google_project_iam_member" "default" {
  role    = "roles/storage.objectViewer"
  project = data.google_project.project.id
  member  = "serviceAccount:${google_bigquery_connection.default.cloud_resource[0].service_account_id}"
}

# This makes the script wait for seven minutes before proceeding.
# This lets IAM permissions propagate.
resource "time_sleep" "default" {
  create_duration = "7m"

  depends_on = [google_project_iam_member.default]
}

# This defines a Google BigQuery dataset with
# default expiration times for partitions and tables, a
# description, a location, and a maximum time travel.
resource "google_bigquery_dataset" "default" {
  dataset_id                      = "my_dataset"
  default_partition_expiration_ms = 2592000000  # 30 days
  default_table_expiration_ms     = 31536000000 # 365 days
  description                     = "My dataset description"
  location                        = "US"
  max_time_travel_hours           = 96 # 4 days

  # This defines a map of labels for the bucket resource,
  # including the labels "billing_group" and "pii".
  labels = {
    billing_group = "accounting",
    pii           = "sensitive"
  }
}


# This creates a BigQuery Table with automatic metadata caching.
resource "google_bigquery_table" "default" {
  dataset_id = google_bigquery_dataset.default.dataset_id
  table_id   = "my_table"
  schema = jsonencode([
    { "name" : "country", "type" : "STRING" },
    { "name" : "product", "type" : "STRING" },
    { "name" : "price", "type" : "INT64" }
  ])
  external_data_configuration {
    # This defines an external data configuration for the BigQuery table
    # that reads Parquet data from the publish directory of the default
    # Google Cloud Storage bucket.
    autodetect    = false
    source_format = "PARQUET"
    connection_id = google_bigquery_connection.default.name
    source_uris   = ["gs://${google_storage_bucket.default.name}/data/*"]
    # This enables automatic metadata refresh.
    metadata_cache_mode = "AUTOMATIC"
  }

  # This sets the maximum staleness of the metadata cache to 10 hours.
  max_staleness = "0-0 0 10:0:0"

  deletion_protection = false

  depends_on = [time_sleep.default]
}

Untuk menerapkan konfigurasi Terraform di project Google Cloud, selesaikan langkah-langkah di bagian berikut.

Menyiapkan Cloud Shell

  1. Luncurkan Cloud Shell.
  2. Tetapkan project Google Cloud default tempat Anda ingin menerapkan konfigurasi Terraform.

    Anda hanya perlu menjalankan perintah ini sekali per project, dan dapat dijalankan di direktori mana pun.

    export GOOGLE_CLOUD_PROJECT=PROJECT_ID

    Variabel lingkungan akan diganti jika Anda menetapkan nilai eksplisit dalam file konfigurasi Terraform.

Menyiapkan direktori

Setiap file konfigurasi Terraform harus memiliki direktorinya sendiri (juga disebut modul root).

  1. Di Cloud Shell, buat direktori dan file baru di dalam direktori tersebut. Nama file harus memiliki ekstensi .tf—misalnya main.tf. Dalam tutorial ini, file ini disebut sebagai main.tf.
    mkdir DIRECTORY && cd DIRECTORY && touch main.tf
  2. Jika mengikuti tutorial, Anda dapat menyalin kode contoh di setiap bagian atau langkah.

    Salin kode contoh ke dalam main.tf yang baru dibuat.

    Atau, salin kode dari GitHub. Tindakan ini direkomendasikan jika cuplikan Terraform adalah bagian dari solusi menyeluruh.

  3. Tinjau dan ubah contoh parameter untuk diterapkan pada lingkungan Anda.
  4. Simpan perubahan Anda.
  5. Lakukan inisialisasi Terraform. Anda hanya perlu melakukan ini sekali per direktori.
    terraform init

    Secara opsional, untuk menggunakan versi penyedia Google terbaru, sertakan opsi -upgrade:

    terraform init -upgrade

Menerapkan perubahan

  1. Tinjau konfigurasi dan pastikan resource yang akan dibuat atau diupdate oleh Terraform sesuai yang Anda inginkan:
    terraform plan

    Koreksi konfigurasi jika diperlukan.

  2. Terapkan konfigurasi Terraform dengan menjalankan perintah berikut dan memasukkan yes pada prompt:
    terraform apply

    Tunggu hingga Terraform menampilkan pesan "Apply complete!".

  3. Buka project Google Cloud Anda untuk melihat hasilnya. Di Konsol Google Cloud, buka resource Anda di UI untuk memastikan bahwa Terraform telah membuat atau mengupdatenya.

BigLake mendukung deteksi otomatis skema. Namun, jika Anda tidak memberikan skema dan akun layanan tidak diberi akses pada langkah sebelumnya, langkah-langkah ini akan gagal dengan pesan akses ditolak jika Anda mencoba mendeteksi skema secara otomatis.

Membuat tabel BigLake pada data yang dipartisi Hive

Anda dapat membuat tabel BigLake untuk data yang dipartisi Hive di Cloud Storage. Setelah membuat tabel yang dipartisi secara eksternal, Anda tidak dapat mengubah kunci partisi. Anda perlu membuat ulang tabel untuk mengubah kunci partisi.

Untuk membuat tabel BigLake berdasarkan data yang dipartisi Hive di Cloud Storage, pilih salah satu opsi berikut:

Konsol

  1. Buka halaman BigQuery.

    Buka BigQuery

  2. Di panel Penjelajah, luaskan project Anda dan pilih set data.

  3. Klik Tampilkan tindakan, lalu klik Buat tabel. Tindakan ini akan membuka panel Buat tabel.

  4. Di bagian Source, tentukan detail berikut:

    1. Untuk Create table from, pilih Google Cloud Storage.

    2. Berikan jalur ke folder tersebut, menggunakan karakter pengganti. Contoh, my_bucket/my_files*. Folder tersebut harus berada di lokasi yang sama dengan set data yang berisi tabel yang ingin Anda buat, tambahkan, atau timpa.

    3. Dari daftar Format file, pilih jenis file.

    4. Pilih kotak centang Partisi data sumber, lalu tentukan detail berikut:

      1. Untuk Pilih Awalan URI Sumber, masukkan awalan URI. Contoh, gs://my_bucket/my_files.
      2. Opsional: Untuk mewajibkan filter partisi pada semua kueri untuk tabel ini, centang kotak Memerlukan filter partisi. Mewajibkan filter partisi dapat mengurangi biaya dan meningkatkan performa. Untuk mengetahui informasi selengkapnya, lihat Mewajibkan filter predikat di kunci partisi dalam kueri.
      3. Di bagian Mode inferensi partisi, pilih salah satu opsi berikut:

        • Otomatis menyimpulkan jenis: tetapkan mode deteksi skema partisi ke AUTO.
        • Semua kolom adalah string: tetapkan mode deteksi skema partisi ke STRINGS.
        • Sediakan sendiri: tetapkan mode deteksi skema partisi ke CUSTOM dan masukkan informasi skema secara manual untuk kunci partisi. Untuk mengetahui informasi selengkapnya, lihat Menyediakan skema kunci partisi kustom.
  5. Di bagian Tujuan, tentukan detail berikut:

    1. Untuk Project, pilih project tempat Anda ingin membuat tabel.
    2. Untuk Set data, pilih set data tempat Anda ingin membuat tabel.
    3. Untuk Table, masukkan nama tabel yang ingin Anda buat.
    4. Untuk Jenis tabel, pilih Tabel eksternal.
    5. Centang kotak Create a BigLake table using a Cloud Resource connection.
    6. Untuk Connection ID, pilih koneksi yang Anda buat sebelumnya.
  6. Di bagian Schema, aktifkan deteksi otomatis skema dengan memilih opsi Auto detect.

  7. Untuk mengabaikan baris dengan nilai kolom tambahan yang tidak cocok dengan skema, luaskan bagian Advanced options dan pilih Unknown values.

  8. Klik Create table.

SQL

Gunakan pernyataan DDL CREATE EXTERNAL TABLE:

  1. Di konsol Google Cloud, buka halaman BigQuery.

    Buka BigQuery

  2. Di editor kueri, masukkan pernyataan berikut:

    CREATE EXTERNAL TABLE `PROJECT_ID.DATASET.EXTERNAL_TABLE_NAME`
    WITH PARTITION COLUMNS
    (
      PARTITION_COLUMN PARTITION_COLUMN_TYPE,
    )
    WITH CONNECTION `PROJECT_ID.REGION.CONNECTION_ID`
    OPTIONS (
      hive_partition_uri_prefix = "HIVE_PARTITION_URI_PREFIX",
      uris=['FILE_PATH'],
      max_staleness = STALENESS_INTERVAL,
      metadata_cache_mode = 'CACHE_MODE',
      format ="TABLE_FORMAT"
    );

    Ganti kode berikut:

    • PROJECT_ID: nama project tempat Anda ingin membuat tabel—misalnya, myproject
    • DATASET: nama set data BigQuery tempat Anda ingin membuat tabel —misalnya, mydataset
    • EXTERNAL_TABLE_NAME: nama tabel yang ingin Anda buat—misalnya, mytable
    • PARTITION_COLUMN: nama kolom partisi
    • PARTITION_COLUMN_TYPE: jenis kolom partisi
    • REGION: region yang berisi koneksi—misalnya, us
    • CONNECTION_ID: ID koneksi—misalnya, myconnection

      Saat Anda melihat detail koneksi di konsol Google Cloud, ID koneksi adalah nilai di bagian terakhir dari ID koneksi yang sepenuhnya memenuhi syarat yang ditampilkan di ID Koneksi—misalnya, projects/myproject/locations/connection_location/connections/myconnection.

    • HIVE_PARTITION_URI_PREFIX: awalan uri hive–misalnya, gs://mybucket/
    • FILE_PATH: jalur ke sumber data untuk tabel eksternal yang ingin Anda buat—misalnya, gs://mybucket/*.parquet
    • STALENESS_INTERVAL: menentukan apakah metadata yang di-cache digunakan oleh operasi terhadap tabel BigLake, dan seberapa baru metadata yang di-cache agar operasi dapat menggunakannya. Untuk informasi selengkapnya tentang pertimbangan caching metadata, lihat Caching metadata untuk performa.

      Untuk menonaktifkan caching metadata, tentukan 0. Ini adalah setelan defaultnya.

      Untuk mengaktifkan caching metadata, tentukan nilai literal interval antara 30 menit dan 7 hari. Misalnya, tentukan INTERVAL 4 HOUR untuk interval periode tidak berlaku 4 jam. Dengan nilai ini, operasi terhadap tabel akan menggunakan metadata yang di-cache jika telah di-refresh dalam 4 jam terakhir. Jika metadata yang di-cache lebih usang, operasi akan mengambil metadata dari Cloud Storage.

    • CACHE_MODE: menentukan apakah cache metadata di-refresh secara otomatis atau manual. Untuk mengetahui informasi selengkapnya tentang pertimbangan caching metadata, lihat Caching metadata untuk performa.

      Tetapkan ke AUTOMATIC agar cache metadata di-refresh pada interval yang ditentukan sistem, biasanya antara 30 dan 60 menit.

      Tetapkan ke MANUAL jika Anda ingin me-refresh cache metadata pada jadwal yang Anda tentukan. Dalam hal ini, Anda dapat memanggil prosedur sistem BQ.REFRESH_EXTERNAL_METADATA_CACHE untuk me-refresh cache.

      Anda harus menetapkan CACHE_MODE jika STALENESS_INTERVAL ditetapkan ke nilai yang lebih besar dari 0.

    • TABLE_FORMAT: format tabel yang ingin Anda buat—misalnya, PARQUET

  3. Klik Run.

Untuk informasi selengkapnya tentang cara menjalankan kueri, lihat Menjalankan kueri interaktif.

Contoh

Contoh berikut membuat tabel BigLake pada data berpartisi, dengan:

  • Skema terdeteksi secara otomatis.
  • Interval periode tidak berlaku cache metadata untuk tabel adalah 1 hari.
  • Cache metadata akan otomatis di-refresh.
CREATE EXTERNAL TABLE `my_dataset.my_table`
WITH PARTITION COLUMNS
(
  sku STRING,
)
WITH CONNECTION `us.my-connection`
OPTIONS(
  hive_partition_uri_prefix = "gs://mybucket/products",
  uris = ['gs://mybucket/products/*'],
  max_staleness = INTERVAL 1 DAY,
  metadata_cache_mode = 'AUTOMATIC'
);

Contoh berikut membuat tabel BigLake pada data berpartisi, dengan:

  • Skema telah ditentukan.
  • Interval periode tidak berlaku cache metadata untuk tabel adalah 8 jam.
  • Cache metadata harus di-refresh secara manual.
CREATE EXTERNAL TABLE `my_dataset.my_table`
(
  ProductId INTEGER,
  ProductName STRING,
  ProductType STRING
)
WITH PARTITION COLUMNS
(
  sku STRING,
)
WITH CONNECTION `us.my-connection`
OPTIONS(
  hive_partition_uri_prefix = "gs://mybucket/products",
  uris = ['gs://mybucket/products/*'],
  max_staleness = INTERVAL 8 HOUR,
  metadata_cache_mode = 'MANUAL'
);

bq

Pertama, gunakan perintah bq mkdef untuk membuat file definisi tabel:

bq mkdef \
--source_format=SOURCE_FORMAT \
--connection_id=REGION.CONNECTION_ID \
--hive_partitioning_mode=PARTITIONING_MODE \
--hive_partitioning_source_uri_prefix=GCS_URI_SHARED_PREFIX \
--require_hive_partition_filter=BOOLEAN \
--metadata_cache_mode=CACHE_MODE \
 GCS_URIS > DEFINITION_FILE

Ganti kode berikut:

  • SOURCE_FORMAT: format sumber data eksternal. Contoh, CSV.
  • REGION: region yang berisi koneksi—misalnya, us.
  • CONNECTION_ID: ID koneksi—misalnya, myconnection.

    Saat Anda melihat detail koneksi di konsol Google Cloud, ID koneksi adalah nilai di bagian terakhir dari ID koneksi yang sepenuhnya memenuhi syarat yang ditampilkan di ID Koneksi—misalnya, projects/myproject/locations/connection_location/connections/myconnection.

  • PARTITIONING_MODE: mode partisi Hive. Gunakan salah satu nilai berikut:

    • AUTO: Mendeteksi nama dan jenis kunci secara otomatis.
    • STRINGS: Mengonversi nama kunci menjadi string secara otomatis.
    • CUSTOM: Mengenkode skema kunci di awalan URI sumber.
  • GCS_URI_SHARED_PREFIX: awalan URI sumber.

  • BOOLEAN: Menentukan apakah akan memerlukan filter predikat pada waktu kueri. Flag ini bersifat opsional. Nilai defaultnya adalah false.

  • CACHE_MODE: menentukan apakah cache metadata di-refresh secara otomatis atau manual. Anda hanya perlu menyertakan flag ini jika Anda juga berencana menggunakan flag --max_staleness dalam perintah bq mk berikutnya untuk mengaktifkan caching metadata. Untuk informasi selengkapnya tentang pertimbangan caching metadata, lihat Caching metadata untuk performa.

    Tetapkan ke AUTOMATIC agar cache metadata di-refresh pada interval yang ditentukan sistem, biasanya antara 30 dan 60 menit.

    Tetapkan ke MANUAL jika Anda ingin me-refresh cache metadata pada jadwal yang Anda tentukan. Dalam hal ini, Anda dapat memanggil prosedur sistem BQ.REFRESH_EXTERNAL_METADATA_CACHE untuk me-refresh cache.

    Anda harus menetapkan CACHE_MODE jika STALENESS_INTERVAL ditetapkan ke nilai yang lebih besar dari 0.

  • GCS_URIS: jalur ke folder Cloud Storage, menggunakan format karakter pengganti.

  • DEFINITION_FILE: jalur ke file definisi tabel di komputer lokal Anda.

Jika PARTITIONING_MODE adalah CUSTOM, sertakan skema kunci partisi dalam awalan URI sumber, menggunakan format berikut:

--hive_partitioning_source_uri_prefix=GCS_URI_SHARED_PREFIX/{KEY1:TYPE1}/{KEY2:TYPE2}/...

Setelah membuat file definisi tabel, gunakan perintah bq mk untuk membuat tabel BigLake:

bq mk --external_table_definition=DEFINITION_FILE \
--max_staleness=STALENESS_INTERVAL \
DATASET_NAME.TABLE_NAME \
SCHEMA

Ganti kode berikut:

  • DEFINITION_FILE: jalur ke file definisi tabel.
  • STALENESS_INTERVAL: menentukan apakah metadata yang di-cache digunakan oleh operasi terhadap tabel BigLake, dan seberapa baru metadata yang di-cache agar operasi dapat menggunakannya. Jika flag ini disertakan, Anda juga harus menentukan nilai untuk flag --metadata_cache_mode dalam perintah bq mkdef sebelumnya. Untuk informasi selengkapnya tentang pertimbangan caching metadata, lihat Caching metadata untuk performa.

    Untuk menonaktifkan caching metadata, tentukan 0. Ini adalah setelan defaultnya.

    Untuk mengaktifkan caching metadata, tentukan nilai interval antara 30 menit hingga 7 hari, menggunakan Y-M D H:M:S yang dijelaskan dalam dokumentasi jenis data INTERVAL. Misalnya, tentukan 0-0 0 4:0:0 untuk interval periode tidak berlaku 4 jam. Dengan nilai ini, operasi terhadap tabel akan menggunakan metadata yang di-cache jika telah di-refresh dalam 4 jam terakhir. Jika metadata yang di-cache lebih tua, operasi akan mengambil metadata dari Cloud Storage.

  • DATASET_NAME: nama set data yang berisi tabel.

  • TABLE_NAME: nama tabel yang Anda buat.

  • SCHEMA: menentukan jalur ke file skema JSON, atau menentukan skema dalam formulir field:data_type,field:data_type,.... Untuk menggunakan deteksi otomatis skema, hilangkan argumen ini.

Contoh

Contoh berikut menggunakan mode partisi Hive AUTO, dan juga menetapkan cache metadata agar memiliki interval periode tidak berlaku selama 12 jam dan di-refresh secara otomatis:

bq mkdef --source_format=CSV \
  --connection_id=us.my-connection \
  --hive_partitioning_mode=AUTO \
  --hive_partitioning_source_uri_prefix=gs://myBucket/myTable \
  --metadata_cache_mode=AUTOMATIC \
  gs://myBucket/myTable/* > mytable_def

bq mk --external_table_definition=mytable_def \
  --max_staleness=0-0 0 12:0:0 \
  mydataset.mytable \
  Region:STRING,Quarter:STRING,Total_sales:INTEGER

Contoh berikut menggunakan mode partisi Hive STRING:

bq mkdef --source_format=CSV \
  --connection_id=us.my-connection \
  --hive_partitioning_mode=STRING \
  --hive_partitioning_source_uri_prefix=gs://myBucket/myTable \
  gs://myBucket/myTable/* > mytable_def

bq mk --external_table_definition=mytable_def \
  mydataset.mytable \
  Region:STRING,Quarter:STRING,Total_sales:INTEGER

Contoh berikut menggunakan mode partisi Hive CUSTOM:

bq mkdef --source_format=CSV \
  --connection_id=us.my-connection \
  --hive_partitioning_mode=CUSTOM \
  --hive_partitioning_source_uri_prefix=gs://myBucket/myTable/{dt:DATE}/{val:STRING} \
  gs://myBucket/myTable/* > mytable_def

bq mk --external_table_definition=mytable_def \
  mydataset.mytable \
  Region:STRING,Quarter:STRING,Total_sales:INTEGER

API

Untuk menetapkan partisi Hive menggunakan BigQuery API, sertakan objek hivePartitioningOptions dalam objek ExternalDataConfiguration saat Anda membuat file definisi tabel. Untuk membuat tabel BigLake, Anda juga harus menentukan nilai untuk kolom connectionId.

Jika menetapkan kolom hivePartitioningOptions.mode ke CUSTOM, Anda harus mengenkode skema kunci partisi di kolom hivePartitioningOptions.sourceUriPrefix sebagai berikut: gs://BUCKET/PATH_TO_TABLE/{KEY1:TYPE1}/{KEY2:TYPE2}/...

Untuk menerapkan penggunaan filter predikat pada waktu kueri, tetapkan kolom hivePartitioningOptions.requirePartitionFilter ke true.

Terraform

Contoh ini membuat Tabel BigLake berdasarkan data berpartisi.

Untuk melakukan autentikasi ke BigQuery, siapkan Kredensial Default Aplikasi. Untuk informasi selengkapnya, lihat Menyiapkan autentikasi untuk library klien.


# This creates a bucket in the US region named "my-bucket" with a pseudorandom
# suffix.
resource "random_id" "default" {
  byte_length = 8
}
resource "google_storage_bucket" "default" {
  name                        = "my-bucket-${random_id.default.hex}"
  location                    = "US"
  force_destroy               = true
  uniform_bucket_level_access = true
}

resource "google_storage_bucket_object" "default" {
  # This creates a fake message to create partition locations on the table.
  # Otherwise, the table deployment fails.
  name    = "publish/dt=2000-01-01/hr=00/min=00/fake_message.json"
  content = "{\"column1\": \"XXX\"}"
  bucket  = google_storage_bucket.default.name
}

# This queries the provider for project information.
data "google_project" "default" {}

# This creates a connection in the US region named "my-connection".
# This connection is used to access the bucket.
resource "google_bigquery_connection" "default" {
  connection_id = "my-connection"
  location      = "US"
  cloud_resource {}
}

# This grants the previous connection IAM role access to the bucket.
resource "google_project_iam_member" "default" {
  role    = "roles/storage.objectViewer"
  project = data.google_project.default.id
  member  = "serviceAccount:${google_bigquery_connection.default.cloud_resource[0].service_account_id}"
}

# This makes the script wait for seven minutes before proceeding. This lets IAM
# permissions propagate.
resource "time_sleep" "default" {
  create_duration = "7m"

  depends_on = [google_project_iam_member.default]
}

# This defines a Google BigQuery dataset with default expiration times for
# partitions and tables, a description, a location, and a maximum time travel.
resource "google_bigquery_dataset" "default" {
  dataset_id                      = "my_dataset"
  default_partition_expiration_ms = 2592000000  # 30 days
  default_table_expiration_ms     = 31536000000 # 365 days
  description                     = "My dataset description"
  location                        = "US"
  max_time_travel_hours           = 96 # 4 days

  # This defines a map of labels for the bucket resource,
  # including the labels "billing_group" and "pii".
  labels = {
    billing_group = "accounting",
    pii           = "sensitive"
  }
}

# This creates a BigQuery table with partitioning and automatic metadata
# caching.
resource "google_bigquery_table" "default" {
  dataset_id = google_bigquery_dataset.default.dataset_id
  table_id   = "my_table"
  schema     = jsonencode([{ "name" : "column1", "type" : "STRING", "mode" : "NULLABLE" }])
  external_data_configuration {
    # This defines an external data configuration for the BigQuery table
    # that reads Parquet data from the publish directory of the default
    # Google Cloud Storage bucket.
    autodetect    = false
    source_format = "PARQUET"
    connection_id = google_bigquery_connection.default.name
    source_uris   = ["gs://${google_storage_bucket.default.name}/publish/*"]
    # This configures Hive partitioning for the BigQuery table,
    # partitioning the data by date and time.
    hive_partitioning_options {
      mode                     = "CUSTOM"
      source_uri_prefix        = "gs://${google_storage_bucket.default.name}/publish/{dt:STRING}/{hr:STRING}/{min:STRING}"
      require_partition_filter = false
    }
    # This enables automatic metadata refresh.
    metadata_cache_mode = "AUTOMATIC"
  }


  # This sets the maximum staleness of the metadata cache to 10 hours.
  max_staleness = "0-0 0 10:0:0"

  deletion_protection = false

  depends_on = [
    time_sleep.default,
    google_storage_bucket_object.default
  ]
}

Untuk menerapkan konfigurasi Terraform di project Google Cloud, selesaikan langkah-langkah di bagian berikut.

Menyiapkan Cloud Shell

  1. Luncurkan Cloud Shell.
  2. Tetapkan project Google Cloud default tempat Anda ingin menerapkan konfigurasi Terraform.

    Anda hanya perlu menjalankan perintah ini sekali per project, dan dapat dijalankan di direktori mana pun.

    export GOOGLE_CLOUD_PROJECT=PROJECT_ID

    Variabel lingkungan akan diganti jika Anda menetapkan nilai eksplisit dalam file konfigurasi Terraform.

Menyiapkan direktori

Setiap file konfigurasi Terraform harus memiliki direktorinya sendiri (juga disebut modul root).

  1. Di Cloud Shell, buat direktori dan file baru di dalam direktori tersebut. Nama file harus memiliki ekstensi .tf—misalnya main.tf. Dalam tutorial ini, file ini disebut sebagai main.tf.
    mkdir DIRECTORY && cd DIRECTORY && touch main.tf
  2. Jika mengikuti tutorial, Anda dapat menyalin kode contoh di setiap bagian atau langkah.

    Salin kode contoh ke dalam main.tf yang baru dibuat.

    Atau, salin kode dari GitHub. Tindakan ini direkomendasikan jika cuplikan Terraform adalah bagian dari solusi menyeluruh.

  3. Tinjau dan ubah contoh parameter untuk diterapkan pada lingkungan Anda.
  4. Simpan perubahan Anda.
  5. Lakukan inisialisasi Terraform. Anda hanya perlu melakukan ini sekali per direktori.
    terraform init

    Secara opsional, untuk menggunakan versi penyedia Google terbaru, sertakan opsi -upgrade:

    terraform init -upgrade

Menerapkan perubahan

  1. Tinjau konfigurasi dan pastikan resource yang akan dibuat atau diupdate oleh Terraform sesuai yang Anda inginkan:
    terraform plan

    Koreksi konfigurasi jika diperlukan.

  2. Terapkan konfigurasi Terraform dengan menjalankan perintah berikut dan memasukkan yes pada prompt:
    terraform apply

    Tunggu hingga Terraform menampilkan pesan "Apply complete!".

  3. Buka project Google Cloud Anda untuk melihat hasilnya. Di Konsol Google Cloud, buka resource Anda di UI untuk memastikan bahwa Terraform telah membuat atau mengupdatenya.

Menyiapkan kebijakan kontrol akses

Anda dapat menggunakan beberapa metode untuk mengontrol akses ke tabel BigLake:

Misalnya, Anda ingin membatasi akses baris untuk tabel mytable dalam set data mydataset:

+---------+---------+-------+
| country | product | price |
+---------+---------+-------+
| US      | phone   |   100 |
| JP      | tablet  |   300 |
| UK      | laptop  |   200 |
+---------+---------+-------+

Anda dapat membuat filter tingkat baris untuk Kim (kim@example.com) yang membatasi aksesnya ke baris di mana country sama dengan US.

CREATE ROW ACCESS POLICY only_us_filter
ON mydataset.mytable
GRANT TO ('user:kim@example.com')
FILTER USING (country = 'US');

Kemudian, Kim menjalankan kueri berikut:

SELECT * FROM projectid.mydataset.mytable;

Output hanya menampilkan baris di mana country sama dengan US:

+---------+---------+-------+
| country | product | price |
+---------+---------+-------+
| US      | phone   |   100 |
+---------+---------+-------+

Membuat kueri tabel BigLake

Untuk informasi selengkapnya, baca artikel Membuat kueri data Cloud Storage di tabel BigLake.

Mengupdate tabel BigLake

Anda dapat mengupdate tabel BigLake jika perlu, misalnya untuk mengubah caching metadata. Untuk mendapatkan detail tabel, seperti format sumber dan URI sumber, lihat Mendapatkan informasi tabel.

Anda juga dapat menggunakan prosedur yang sama untuk mengupgrade tabel eksternal berbasis Cloud Storage ke tabel BigLake dengan mengaitkan tabel eksternal tersebut ke koneksi. Untuk informasi selengkapnya, lihat Mengupgrade tabel eksternal ke tabel BigLake.

Untuk mengupdate tabel BigLake, pilih salah satu opsi berikut:

SQL

Gunakan pernyataan DDL CREATE OR REPLACE EXTERNAL TABLE untuk mengupdate tabel:

  1. Di Konsol Google Cloud, buka halaman BigQuery.

    Buka BigQuery

  2. Di editor kueri, masukkan pernyataan berikut:

    CREATE OR REPLACE EXTERNAL TABLE
      `PROJECT_ID.DATASET.EXTERNAL_TABLE_NAME`
      WITH CONNECTION `REGION.CONNECTION_ID`
      OPTIONS(
        format ="TABLE_FORMAT",
        uris = ['BUCKET_PATH'],
        max_staleness = STALENESS_INTERVAL,
        metadata_cache_mode = 'CACHE_MODE'
        );

    Ganti yang berikut ini:

    • PROJECT_ID: nama project yang berisi tabel
    • DATASET: nama set data yang berisi tabel
    • EXTERNAL_TABLE_NAME: nama tabel
    • REGION: region yang berisi koneksi
    • CONNECTION_ID: nama koneksi yang akan digunakan
    • TABLE_FORMAT: format yang digunakan oleh tabel

      Anda tidak dapat mengubahnya saat mengupdate tabel.

    • BUCKET_PATH: jalur ke bucket Cloud Storage yang berisi data untuk tabel eksternal, dalam format ['gs://bucket_name/[folder_name/]file_name'].

      Anda dapat memilih beberapa file dari bucket dengan menentukan satu karakter pengganti tanda bintang (*) di jalur. Contoh, ['gs://mybucket/file_name*']. Untuk informasi selengkapnya, lihat Dukungan karakter pengganti untuk URI Cloud Storage.

      Anda dapat menyertakan beberapa bucket untuk opsi uris dengan memberikan beberapa jalur.

      Contoh berikut menunjukkan nilai uris yang valid:

      • ['gs://bucket/path1/myfile.csv']
      • ['gs://bucket/path1/*.csv']
      • ['gs://bucket/path1/*', 'gs://bucket/path2/file00*']

      Saat Anda menentukan nilai uris yang menargetkan beberapa file, semua file tersebut harus berbagi skema yang kompatibel.

      Untuk informasi selengkapnya tentang penggunaan URI Cloud Storage di BigQuery, lihat Jalur resource Cloud Storage.

    • STALENESS_INTERVAL: menentukan apakah metadata yang di-cache digunakan oleh operasi terhadap tabel, dan seberapa baru metadata yang di-cache agar operasi dapat menggunakannya

      Untuk informasi selengkapnya tentang pertimbangan caching metadata, lihat Caching metadata untuk performa.

      Untuk menonaktifkan caching metadata, tentukan 0. Ini adalah setelan defaultnya.

      Untuk mengaktifkan caching metadata, tentukan nilai literal interval antara 30 menit dan 7 hari. Misalnya, tentukan INTERVAL 4 HOUR untuk interval periode tidak berlaku 4 jam. Dengan nilai ini, operasi terhadap tabel akan menggunakan metadata yang di-cache jika telah di-refresh dalam 4 jam terakhir. Jika metadata yang di-cache lebih tua, operasi akan mengambil metadata dari Cloud Storage.

    • CACHE_MODE: menentukan apakah cache metadata di-refresh secara otomatis atau manual

      Untuk informasi selengkapnya terkait pertimbangan caching metadata, lihat Caching metadata untuk performa.

      Ubah ke AUTOMATIC agar cache metadata diperbarui sesuai dengan interval yang ditentukan sistem, biasanya antara 30 hingga 60 menit.

      Ubah ke MANUAL jika Anda ingin memperbarui cache metadata sesuai dengan jadwal yang Anda tentukan. Dalam hal ini, Anda dapat memanggil prosedur sistem BQ.REFRESH_EXTERNAL_METADATA_CACHE untuk me-refresh cache.

      Anda harus menetapkan CACHE_MODE jika STALENESS_INTERVAL ditetapkan ke nilai yang lebih besar dari 0.

  3. Klik Run.

Untuk informasi selengkapnya tentang cara menjalankan kueri, lihat Menjalankan kueri interaktif.

bq

Gunakan perintah bq mkdef dan bq update untuk mengupdate tabel:

  1. Buat definisi tabel eksternal, yang menjelaskan aspek tabel yang akan diubah:

    bq mkdef --connection_id=PROJECT_ID.REGION.CONNECTION_ID \
    --source_format=TABLE_FORMAT \
    --metadata_cache_mode=CACHE_MODE \
    "BUCKET_PATH" > /tmp/DEFINITION_FILE

    Ganti yang berikut ini:

    • PROJECT_ID: nama project yang berisi koneksi
    • REGION: region yang berisi koneksi
    • CONNECTION_ID: nama koneksi yang akan digunakan
    • TABLE_FORMAT: format yang digunakan oleh tabel. Anda tidak dapat mengubahnya saat mengupdate tabel.
    • CACHE_MODE: menentukan apakah cache metadata di-refresh secara otomatis atau manual. Untuk informasi selengkapnya seputar pertimbangan caching metadata, lihat Caching metadata untuk performa.

      Tetapkan ke AUTOMATIC agar cache metadata di-refresh pada interval yang ditentukan sistem, biasanya antara 30 dan 60 menit.

      Tetapkan ke MANUAL jika Anda ingin me-refresh cache metadata sesuai jadwal yang Anda tentukan. Dalam hal ini, Anda dapat memanggil prosedur sistem BQ.REFRESH_EXTERNAL_METADATA_CACHE untuk me-refresh cache.

      Anda harus menetapkan CACHE_MODE jika STALENESS_INTERVAL ditetapkan ke nilai yang lebih besar dari 0.

    • BUCKET_PATH: jalur ke bucket Cloud Storage yang berisi data untuk tabel eksternal, dalam format gs://bucket_name/[folder_name/]file_name.

      Anda dapat membatasi file yang dipilih dari bucket dengan menentukan satu karakter pengganti tanda bintang (*) di jalur. Contoh, gs://mybucket/file_name*. Untuk informasi selengkapnya, lihat Dukungan karakter pengganti untuk URI Cloud Storage.

      Anda dapat menentukan beberapa bucket untuk opsi uris dengan menyediakan beberapa jalur.

      Contoh berikut menunjukkan nilai uris yang valid:

      • gs://bucket/path1/myfile.csv
      • gs://bucket/path1/*.csv
      • gs://bucket/path1/*,gs://bucket/path2/file00*

      Saat Anda menentukan nilai uris yang menargetkan beberapa file, semua file tersebut harus berbagi skema yang kompatibel.

      Untuk informasi selengkapnya tentang penggunaan URI Cloud Storage di BigQuery, lihat Jalur resource Cloud Storage.

    • DEFINITION_FILE: nama file definisi tabel yang Anda buat.

  2. Update tabel menggunakan definisi tabel eksternal baru:

    bq update --max_staleness=STALENESS_INTERVAL \
    --external_table_definition=/tmp/DEFINITION_FILE \
    PROJECT_ID:DATASET.EXTERNAL_TABLE_NAME

    Ganti kode berikut:

    • STALENESS_INTERVAL: menentukan apakah metadata yang di-cache digunakan oleh operasi terhadap tabel, dan seberapa baru metadata yang di-cache agar operasi dapat menggunakannya. Untuk informasi selengkapnya tentang pertimbangan caching metadata, lihat Caching metadata untuk performa.

      Untuk menonaktifkan caching metadata, tentukan 0. Ini adalah setelan defaultnya.

      Untuk mengaktifkan caching metadata, tentukan nilai interval antara 30 menit hingga 7 hari, menggunakan Y-M D H:M:S yang dijelaskan dalam dokumentasi jenis data INTERVAL. Misalnya, tentukan 0-0 0 4:0:0 untuk interval periode tidak berlaku 4 jam. Dengan nilai ini, operasi terhadap tabel akan menggunakan metadata yang di-cache jika telah di-refresh dalam 4 jam terakhir. Jika metadata yang di-cache lebih tua, operasi akan mengambil metadata dari Cloud Storage.

    • DEFINITION_FILE: nama file definisi tabel yang Anda buat atau update.

    • PROJECT_ID: nama project yang berisi tabel

    • DATASET: nama set data yang berisi tabel

    • EXTERNAL_TABLE_NAME: nama tabel

Contoh

Contoh berikut mengupdate mytable untuk menggunakan metadata yang di-cache selama metadata telah di-refresh dalam 4,5 jam terakhir, dan juga untuk me-refresh metadata yang di-cache secara otomatis:

bq update --project_id=myproject --max_staleness='0-0 0 4:30:0' \
--external_table_definition=enable_metadata.json mydataset.mytable

Dengan enable_metadata.json memiliki konten berikut: { "metadataCacheMode": "AUTOMATIC" }

Logging audit

Untuk informasi tentang logging di BigQuery, lihat Pengantar pemantauan BigQuery. Untuk mempelajari lebih lanjut logging di Google Cloud, lihat Cloud Logging.

Langkah berikutnya