Membuat dan menggunakan tabel

Dokumen ini menjelaskan cara membuat dan menggunakan tabel standar (bawaan) di BigQuery. Untuk informasi tentang cara membuat jenis tabel lainnya, lihat:

Setelah membuat tabel, Anda dapat:

  • Mengontrol akses ke data tabel Anda
  • Mendapatkan informasi tentang tabel Anda
  • Membuat daftar tabel dalam set data
  • Mendapatkan metadata tabel

Untuk informasi selengkapnya tentang cara mengelola tabel termasuk memperbarui properti tabel, menyalin tabel, dan menghapus tabel, lihat Mengelola tabel.

Sebelum memulai

Sebelum membuat tabel di BigQuery, pertama-tama:

Penamaan tabel

Saat Anda membuat tabel di BigQuery, nama tabel per set data harus unik. Nama tabel dapat:

  • Berisi karakter dengan total hingga 1.024 UTF-8 byte.
  • Berisi karakter Unicode dalam kategori L (huruf), M (tanda), N (angka), Pc (penghubung, termasuk garis bawah), Pd (tanda pisah), Zs (spasi). Untuk informasi selengkapnya, lihat Kategori Umum.

Berikut adalah contoh nama tabel yang valid: table 01, ग्राहक, 00_お客様, étudiant-01.

Peringatan:

  • Nama tabel peka huruf besar/kecil secara default. mytable dan MyTable dapat berada dalam set data yang sama, kecuali jika keduanya merupakan bagian dari set data yang tidak peka huruf besar/kecil.
  • Beberapa nama tabel dan awalan nama tabel dicadangkan. Jika Anda menerima error yang menyatakan bahwa nama tabel atau awalan telah dicadangkan, pilih nama lain dan coba lagi.
  • Jika Anda menyertakan beberapa operator titik (.) secara berurutan, operator duplikat tersebut akan dihapus secara implisit.

    Misalnya, contoh ini: project_name....dataset_name..table_name

    Menjadi ini: project_name.dataset_name.table_name

Membuat tabel

Anda dapat membuat tabel di BigQuery dengan cara berikut:

  • Secara manual menggunakan Konsol Google Cloud atau perintah alat command line bq bq mk.
  • Secara terprogram dengan memanggil metode API tables.insert.
  • Dengan menggunakan library klien.
  • Dari hasil kueri.
  • Dengan menentukan tabel yang merujuk sumber data eksternal.
  • Saat Anda memuat data.
  • Dengan menggunakan pernyataan bahasa definisi data (DDL) CREATE TABLE.

Izin yang diperlukan

Untuk membuat tabel, Anda memerlukan izin IAM berikut:

  • bigquery.tables.create
  • bigquery.tables.updateData
  • bigquery.jobs.create

Selain itu, Anda mungkin memerlukan izin bigquery.tables.getData untuk mengakses data yang Anda tulis ke tabel.

Setiap peran IAM yang telah ditetapkan berikut menyertakan izin yang Anda perlukan untuk membuat tabel:

  • roles/bigquery.dataEditor
  • roles/bigquery.dataOwner
  • roles/bigquery.admin (termasuk izin bigquery.jobs.create)
  • roles/bigquery.user (termasuk izin bigquery.jobs.create)
  • roles/bigquery.jobUser (termasuk izin bigquery.jobs.create)

Selain itu, jika memiliki izin bigquery.datasets.create, Anda dapat membuat dan memperbarui tabel di set data yang Anda buat.

Untuk mengetahui informasi selengkapnya tentang peran dan izin IAM dalam BigQuery, baca Peran dan izin yang telah ditetapkan.

Membuat tabel kosong dengan definisi skema

Anda dapat membuat tabel kosong yang berisi definisi skema dengan cara berikut:

  • Masukkan skema menggunakan Konsol Google Cloud.
  • Sediakan skema secara inline menggunakan alat command line bq.
  • Kirimkan file skema JSON menggunakan alat command line bq.
  • Berikan skema dalam resource tabel saat memanggil metode tables.insert API.

Untuk informasi selengkapnya tentang cara menentukan skema tabel, lihat Menentukan skema.

Setelah tabel dibuat, Anda dapat memuat data ke dalamnya atau mengisinya dengan menulis hasil kueri ke tabel tersebut.

Untuk membuat tabel kosong dengan definisi skema:

Konsol

  1. Di konsol Google Cloud, buka halaman BigQuery.

    Buka BigQuery

  2. Di panel Explorer, luaskan project Anda, lalu pilih set data.
  3. Di bagian Dataset info, klik Create table.
  4. Di panel Create table, tentukan detail berikut:
    1. Di bagian Source, pilih Empty table dalam daftar Create table from.
    2. Di bagian Destination, tentukan detail berikut:
      1. Untuk Dataset, pilih set data tempat Anda ingin membuat tabel.
      2. Di kolom Table, masukkan nama tabel yang ingin Anda buat.
      3. Pastikan kolom Table type disetel ke Native table.
    3. Di bagian Schema, masukkan definisi skema. Anda dapat memasukkan informasi skema secara manual menggunakan salah satu metode berikut:
      • Opsi 1: Klik Edit as text dan tempelkan skema dalam bentuk array JSON. Saat menggunakan array JSON, Anda menghasilkan skema menggunakan proses yang sama seperti membuat file skema JSON. Anda dapat melihat skema tabel yang ada dalam format JSON dengan memasukkan perintah berikut:
            bq show --format=prettyjson dataset.table
            
      • Opsi 2: Klik Add field, lalu masukkan skema tabel. Tentukan Name, Type, dan Mode untuk setiap kolom.
    4. Opsional: Tentukan Partition and cluster settings. Untuk mengetahui informasi selengkapnya, lihat Membuat tabel yang dipartisi serta Membuat dan menggunakan tabel yang dikelompokkan.
    5. Opsional: Di bagian Advanced options jika ingin menggunakan kunci enkripsi yang dikelola pelanggan, pilih opsi Menggunakan kunci enkripsi yang dikelola pelanggan (CMEK). Secara default, BigQuery mengenkripsi konten pelanggan yang disimpan dalam penyimpanan dengan menggunakan kunci yang dikelola Google.
    6. Klik Create table.

SQL

Contoh berikut membuat tabel bernama newtable yang habis masa berlakunya pada 1 Januari 2023:

  1. Di Konsol Google Cloud, buka halaman BigQuery.

    Buka BigQuery

  2. Di editor kueri, masukkan pernyataan berikut:

    CREATE TABLE mydataset.newtable (
      x INT64 OPTIONS (description = 'An optional INTEGER field'),
      y STRUCT <
        a ARRAY <STRING> OPTIONS (description = 'A repeated STRING field'),
        b BOOL
      >
    ) OPTIONS (
        expiration_timestamp = TIMESTAMP '2023-01-01 00:00:00 UTC',
        description = 'a table that expires in 2023',
        labels = [('org_unit', 'development')]);

  3. Klik Run.

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

bq

  1. Di konsol Google Cloud, aktifkan Cloud Shell.

    Aktifkan Cloud Shell

    Di bagian bawah Google Cloud Console, Cloud Shell sesi akan terbuka dan menampilkan perintah command line. Cloud Shell adalah lingkungan shell dengan Google Cloud CLI yang sudah terinstal, dan dengan nilai yang sudah ditetapkan untuk project Anda saat ini. Diperlukan waktu beberapa detik untuk melakukan inisialisasi sesi.

  2. Gunakan perintah bq mk dengan flag --table atau -t. Anda dapat memberikan informasi skema tabel secara inline atau melalui file skema JSON. Parameter opsional mencakup:

    • --expiration
    • --description
    • --time_partitioning_field
    • --time_partitioning_type
    • --range_partitioning
    • --clustering_fields
    • --destination_kms_key
    • --label

    --time_partitioning_field, --time_partitioning_type, --range_partitioning, --clustering_fields, dan --destination_kms_key tidak ditunjukkan di sini. Lihat link berikut untuk mengetahui informasi selengkapnya tentang parameter opsional ini:

    Jika Anda membuat tabel dalam project selain project default Anda, tambahkan ID project ke set data dalam format berikut: project_id:dataset.

    Untuk membuat tabel kosong dalam set data yang ada dengan definisi skema, masukkan definisi berikut:

    bq mk \
    --table \
    --expiration integer \
    --description description \
    --label key_1:value_1 \
    --label key_2:value_2 \
    project_id:dataset.table \
    schema

    Ganti kode berikut:

    • integer adalah masa aktif default (dalam detik) untuk tabel. Nilai minimumnya adalah 3.600 detik (satu jam). Waktu habis masa berlaku mengevaluasi waktu UTC saat ini ditambah nilai bilangan bulat. Jika Anda menetapkan waktu habis masa berlaku saat membuat tabel, setelan habis masa berlaku tabel default set data akan diabaikan.
    • description adalah deskripsi tabel dalam tanda kutip.
    • key_1:value_1 dan key_2:value_2 adalah pasangan nilai kunci yang menentukan label.
    • project_id adalah ID project Anda.
    • dataset adalah set data dalam project Anda.
    • table adalah nama tabel yang Anda buat.
    • schema adalah definisi skema inline dalam format field:data_type,field:data_type atau jalur ke file skema JSON di mesin lokal Anda.

    Saat menentukan skema pada command line, Anda tidak dapat menyertakan jenis RECORD (STRUCT), Anda tidak dapat menyertakan deskripsi kolom, dan Anda tidak dapat menentukan mode kolom tersebut. Semua mode ditetapkan secara default ke NULLABLE. Untuk menyertakan deskripsi, mode, dan jenis RECORD, berikan file skema JSON sebagai gantinya.

    Contoh:

    Masukkan perintah berikut untuk membuat tabel menggunakan definisi skema inline. Perintah ini akan membuat tabel bernama mytable di mydataset dalam project default Anda. Masa berlaku tabel ditetapkan ke 3600 detik (1 jam), deskripsi ditetapkan ke This is my table, dan label ditetapkan ke organization:development. Perintah tersebut menggunakan pintasan -t, bukan --table. Skema ditentukan secara inline sebagai: qtr:STRING,sales:FLOAT,year:STRING.

    bq mk \
     -t \
     --expiration 3600 \
     --description "This is my table" \
     --label organization:development \
     mydataset.mytable \
     qtr:STRING,sales:FLOAT,year:STRING

    Masukkan perintah berikut untuk membuat tabel menggunakan file skema JSON. Perintah ini membuat tabel bernama mytable di mydataset dalam project default Anda. Masa berlaku tabel ditetapkan ke 3600 detik (1 jam), deskripsi ditetapkan ke This is my table, dan label ditetapkan ke organization:development. Jalur ke file skema adalah /tmp/myschema.json.

    bq mk \
     --table \
     --expiration 3600 \
     --description "This is my table" \
     --label organization:development \
     mydataset.mytable \
     /tmp/myschema.json

    Masukkan perintah berikut untuk membuat tabel menggunakan file skema JSON. Perintah ini akan membuat tabel bernama mytable di mydataset di myotherproject. Masa berlaku tabel ditetapkan ke 3600 detik (1 jam), deskripsi ditetapkan ke This is my table, dan label ditetapkan ke organization:development. Jalur ke file skema adalah /tmp/myschema.json.

    bq mk \
     --table \
     --expiration 3600 \
     --description "This is my table" \
     --label organization:development \
     myotherproject:mydataset.mytable \
     /tmp/myschema.json

    Setelah tabel dibuat, Anda dapat memperbarui masa berlaku, deskripsi, dan label tabel. Anda juga dapat mengubah definisi skema.

Terraform

Gunakan resource google_bigquery_table.

Membuat tabel

Contoh berikut membuat tabel bernama mytable:

resource "google_bigquery_dataset" "default" {
  dataset_id                      = "mydataset"
  default_partition_expiration_ms = 2592000000  # 30 days
  default_table_expiration_ms     = 31536000000 # 365 days
  description                     = "dataset description"
  location                        = "US"
  max_time_travel_hours           = 96 # 4 days

  labels = {
    billing_group = "accounting",
    pii           = "sensitive"
  }
}

resource "google_bigquery_table" "default" {
  dataset_id          = google_bigquery_dataset.default.dataset_id
  table_id            = "mytable"
  deletion_protection = false # set to "true" in production

  schema = <<EOF
[
  {
    "name": "ID",
    "type": "INT64",
    "mode": "NULLABLE",
    "description": "Item ID"
  },
  {
    "name": "Item",
    "type": "STRING",
    "mode": "NULLABLE"
  }
]
EOF

}

Membuat tabel dan memberikan akses ke tabel tersebut

Contoh berikut membuat tabel bernama mytable, lalu menggunakan resource google_bigquery_table_iam_policy untuk memberikan akses ke resource tersebut. Lakukan langkah ini hanya jika Anda ingin memberikan akses ke tabel kepada akun utama yang tidak memiliki akses ke set data tempat tabel berada.

resource "google_bigquery_dataset" "default" {
  dataset_id                      = "mydataset"
  default_partition_expiration_ms = 2592000000  # 30 days
  default_table_expiration_ms     = 31536000000 # 365 days
  description                     = "dataset description"
  location                        = "US"
  max_time_travel_hours           = 96 # 4 days

  labels = {
    billing_group = "accounting",
    pii           = "sensitive"
  }
}

resource "google_bigquery_table" "default" {
  dataset_id          = google_bigquery_dataset.default.dataset_id
  table_id            = "mytable"
  deletion_protection = false # set to "true" in production

  schema = <<EOF
[
  {
    "name": "ID",
    "type": "INT64",
    "mode": "NULLABLE",
    "description": "Item ID"
  },
  {
    "name": "Item",
    "type": "STRING",
    "mode": "NULLABLE"
  }
]
EOF

}

data "google_iam_policy" "default" {
  binding {
    role = "roles/bigquery.dataOwner"
    members = [
      "user:raha@altostrat.com",
    ]
  }
}

resource "google_bigquery_table_iam_policy" "policy" {
  dataset_id  = google_bigquery_table.default.dataset_id
  table_id    = google_bigquery_table.default.table_id
  policy_data = data.google_iam_policy.default.policy_data
}

Membuat tabel dengan kunci enkripsi yang dikelola pelanggan

Contoh berikut membuat tabel bernamamytable, dan juga menggunakan resource google_kms_crypto_key dan google_kms_key_ring untuk menentukan Kunci Cloud Key Management Service untuk tabel. Anda harus mengaktifkan Cloud Key Management Service API sebelum menjalankan contoh ini.

resource "google_bigquery_dataset" "default" {
  dataset_id                      = "mydataset"
  default_partition_expiration_ms = 2592000000  # 30 days
  default_table_expiration_ms     = 31536000000 # 365 days
  description                     = "dataset description"
  location                        = "US"
  max_time_travel_hours           = 96 # 4 days

  labels = {
    billing_group = "accounting",
    pii           = "sensitive"
  }
}

resource "google_bigquery_table" "default" {
  dataset_id          = google_bigquery_dataset.default.dataset_id
  table_id            = "mytable"
  deletion_protection = false # set to "true" in production

  schema = <<EOF
[
  {
    "name": "ID",
    "type": "INT64",
    "mode": "NULLABLE",
    "description": "Item ID"
  },
  {
    "name": "Item",
    "type": "STRING",
    "mode": "NULLABLE"
  }
]
EOF

  encryption_configuration {
    kms_key_name = google_kms_crypto_key.crypto_key.id
  }

  depends_on = [google_project_iam_member.service_account_access]
}

resource "google_kms_crypto_key" "crypto_key" {
  name     = "example-key"
  key_ring = google_kms_key_ring.key_ring.id
}

resource "random_id" "default" {
  byte_length = 8
}

resource "google_kms_key_ring" "key_ring" {
  name     = "${random_id.default.hex}-example-keyring"
  location = "us"
}

# Enable the BigQuery service account to encrypt/decrypt Cloud KMS keys
data "google_project" "project" {
}

resource "google_project_iam_member" "service_account_access" {
  project = data.google_project.project.project_id
  role    = "roles/cloudkms.cryptoKeyEncrypterDecrypter"
  member  = "serviceAccount:bq-${data.google_project.project.number}@bigquery-encryption.iam.gserviceaccount.com"
}

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.

API

Panggil metode tables.insert dengan resource tabel yang ditentukan.

C#

Sebelum mencoba contoh ini, ikuti petunjuk penyiapan C# di Panduan memulai BigQuery menggunakan library klien. Untuk mengetahui informasi selengkapnya, lihat Dokumentasi referensi BigQuery C# API.

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


using Google.Cloud.BigQuery.V2;

public class BigQueryCreateTable
{
    public BigQueryTable CreateTable(
        string projectId = "your-project-id",
        string datasetId = "your_dataset_id"
    )
    {
        BigQueryClient client = BigQueryClient.Create(projectId);
        var dataset = client.GetDataset(datasetId);
        // Create schema for new table.
        var schema = new TableSchemaBuilder
        {
            { "full_name", BigQueryDbType.String },
            { "age", BigQueryDbType.Int64 }
        }.Build();
        // Create the table
        return dataset.CreateTable(tableId: "your_table_id", schema: schema);
    }
}

Go

Sebelum mencoba contoh ini, ikuti petunjuk penyiapan Go di Panduan memulai BigQuery menggunakan library klien. Untuk mengetahui informasi selengkapnya, lihat Dokumentasi referensi BigQuery Go API.

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

import (
	"context"
	"fmt"
	"time"

	"cloud.google.com/go/bigquery"
)

// createTableExplicitSchema demonstrates creating a new BigQuery table and specifying a schema.
func createTableExplicitSchema(projectID, datasetID, tableID string) error {
	// projectID := "my-project-id"
	// datasetID := "mydatasetid"
	// tableID := "mytableid"
	ctx := context.Background()

	client, err := bigquery.NewClient(ctx, projectID)
	if err != nil {
		return fmt.Errorf("bigquery.NewClient: %v", err)
	}
	defer client.Close()

	sampleSchema := bigquery.Schema{
		{Name: "full_name", Type: bigquery.StringFieldType},
		{Name: "age", Type: bigquery.IntegerFieldType},
	}

	metaData := &bigquery.TableMetadata{
		Schema:         sampleSchema,
		ExpirationTime: time.Now().AddDate(1, 0, 0), // Table will be automatically deleted in 1 year.
	}
	tableRef := client.Dataset(datasetID).Table(tableID)
	if err := tableRef.Create(ctx, metaData); err != nil {
		return err
	}
	return nil
}

Java

Sebelum mencoba contoh ini, ikuti petunjuk penyiapan Java di Panduan memulai BigQuery menggunakan library klien. Untuk mengetahui informasi selengkapnya, lihat Dokumentasi referensi BigQuery Java API.

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

import com.google.cloud.bigquery.BigQuery;
import com.google.cloud.bigquery.BigQueryException;
import com.google.cloud.bigquery.BigQueryOptions;
import com.google.cloud.bigquery.Field;
import com.google.cloud.bigquery.Schema;
import com.google.cloud.bigquery.StandardSQLTypeName;
import com.google.cloud.bigquery.StandardTableDefinition;
import com.google.cloud.bigquery.TableDefinition;
import com.google.cloud.bigquery.TableId;
import com.google.cloud.bigquery.TableInfo;

public class CreateTable {

  public static void runCreateTable() {
    // TODO(developer): Replace these variables before running the sample.
    String datasetName = "MY_DATASET_NAME";
    String tableName = "MY_TABLE_NAME";
    Schema schema =
        Schema.of(
            Field.of("stringField", StandardSQLTypeName.STRING),
            Field.of("booleanField", StandardSQLTypeName.BOOL));
    createTable(datasetName, tableName, schema);
  }

  public static void createTable(String datasetName, String tableName, Schema schema) {
    try {
      // Initialize client that will be used to send requests. This client only needs to be created
      // once, and can be reused for multiple requests.
      BigQuery bigquery = BigQueryOptions.getDefaultInstance().getService();

      TableId tableId = TableId.of(datasetName, tableName);
      TableDefinition tableDefinition = StandardTableDefinition.of(schema);
      TableInfo tableInfo = TableInfo.newBuilder(tableId, tableDefinition).build();

      bigquery.create(tableInfo);
      System.out.println("Table created successfully");
    } catch (BigQueryException e) {
      System.out.println("Table was not created. \n" + e.toString());
    }
  }
}

Node.js

Sebelum mencoba contoh ini, ikuti petunjuk penyiapan Node.js di Panduan memulai BigQuery menggunakan library klien. Untuk mengetahui informasi selengkapnya, lihat Dokumentasi referensi BigQuery Node.js API.

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

// Import the Google Cloud client library and create a client
const {BigQuery} = require('@google-cloud/bigquery');
const bigquery = new BigQuery();

async function createTable() {
  // Creates a new table named "my_table" in "my_dataset".

  /**
   * TODO(developer): Uncomment the following lines before running the sample.
   */
  // const datasetId = "my_dataset";
  // const tableId = "my_table";
  // const schema = 'Name:string, Age:integer, Weight:float, IsMagic:boolean';

  // For all options, see https://cloud.google.com/bigquery/docs/reference/v2/tables#resource
  const options = {
    schema: schema,
    location: 'US',
  };

  // Create a new table in the dataset
  const [table] = await bigquery
    .dataset(datasetId)
    .createTable(tableId, options);

  console.log(`Table ${table.id} created.`);
}

PHP

Sebelum mencoba contoh ini, ikuti petunjuk penyiapan PHP di Panduan memulai BigQuery menggunakan library klien. Untuk mengetahui informasi selengkapnya, lihat Dokumentasi referensi BigQuery PHP API.

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

use Google\Cloud\BigQuery\BigQueryClient;

/** Uncomment and populate these variables in your code */
// $projectId = 'The Google project ID';
// $datasetId = 'The BigQuery dataset ID';
// $tableId = 'The BigQuery table ID';
// $fields = [
//    [
//        'name' => 'field1',
//        'type' => 'string',
//        'mode' => 'required'
//    ],
//    [
//        'name' => 'field2',
//        'type' => 'integer'
//    ],
//];

$bigQuery = new BigQueryClient([
    'projectId' => $projectId,
]);
$dataset = $bigQuery->dataset($datasetId);
$schema = ['fields' => $fields];
$table = $dataset->createTable($tableId, ['schema' => $schema]);
printf('Created table %s' . PHP_EOL, $tableId);

Python

Sebelum mencoba contoh ini, ikuti petunjuk penyiapan Python di Panduan memulai BigQuery menggunakan library klien. Untuk mengetahui informasi selengkapnya, lihat Dokumentasi referensi BigQuery Python API.

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

from google.cloud import bigquery

# Construct a BigQuery client object.
client = bigquery.Client()

# TODO(developer): Set table_id to the ID of the table to create.
# table_id = "your-project.your_dataset.your_table_name"

schema = [
    bigquery.SchemaField("full_name", "STRING", mode="REQUIRED"),
    bigquery.SchemaField("age", "INTEGER", mode="REQUIRED"),
]

table = bigquery.Table(table_id, schema=schema)
table = client.create_table(table)  # Make an API request.
print(
    "Created table {}.{}.{}".format(table.project, table.dataset_id, table.table_id)
)

Ruby

Sebelum mencoba contoh ini, ikuti petunjuk penyiapan Ruby di Panduan memulai BigQuery menggunakan library klien. Untuk mengetahui informasi selengkapnya, lihat Dokumentasi referensi BigQuery Ruby API.

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

require "google/cloud/bigquery"

def create_table dataset_id = "my_dataset"
  bigquery = Google::Cloud::Bigquery.new
  dataset  = bigquery.dataset dataset_id
  table_id = "my_table"

  table = dataset.create_table table_id do |updater|
    updater.string  "full_name", mode: :required
    updater.integer "age",       mode: :required
  end

  puts "Created table: #{table_id}"
end

Membuat tabel kosong tanpa definisi skema

Java

Sebelum mencoba contoh ini, ikuti petunjuk penyiapan Java di panduan memulai BigQuery menggunakan library klien. Untuk mengetahui informasi selengkapnya, lihat Dokumentasi referensi BigQuery Java API.

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

import com.google.cloud.bigquery.BigQuery;
import com.google.cloud.bigquery.BigQueryException;
import com.google.cloud.bigquery.BigQueryOptions;
import com.google.cloud.bigquery.Schema;
import com.google.cloud.bigquery.StandardTableDefinition;
import com.google.cloud.bigquery.TableDefinition;
import com.google.cloud.bigquery.TableId;
import com.google.cloud.bigquery.TableInfo;

// Sample to create a table without schema
public class CreateTableWithoutSchema {

  public static void main(String[] args) {
    // TODO(developer): Replace these variables before running the sample.
    String datasetName = "MY_DATASET_NAME";
    String tableName = "MY_TABLE_NAME";
    createTableWithoutSchema(datasetName, tableName);
  }

  public static void createTableWithoutSchema(String datasetName, String tableName) {
    try {
      // Initialize client that will be used to send requests. This client only needs to be created
      // once, and can be reused for multiple requests.
      BigQuery bigquery = BigQueryOptions.getDefaultInstance().getService();

      TableId tableId = TableId.of(datasetName, tableName);
      TableDefinition tableDefinition = StandardTableDefinition.of(Schema.of());
      TableInfo tableInfo = TableInfo.newBuilder(tableId, tableDefinition).build();

      bigquery.create(tableInfo);
      System.out.println("Table created successfully");
    } catch (BigQueryException e) {
      System.out.println("Table was not created. \n" + e.toString());
    }
  }
}

Membuat tabel dari hasil kueri

Untuk membuat tabel dari hasil kueri, tulis hasilnya ke tabel tujuan.

Konsol

  1. Buka halaman BigQuery di konsol Google Cloud.

    Buka halaman BigQuery

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

  3. Masukkan kueri SQL yang valid.

  4. Klik Lainnya lalu pilih Setelan kueri.

    Setelan kueri

  5. Pilih opsi Tetapkan tabel tujuan untuk hasil kueri.

    Tetapkan tujuan

  6. Di bagian Tujuan, pilih Set data tempat Anda ingin membuat tabel, lalu pilih ID Tabel.

  7. Di bagian Preferensi tulis tabel tujuan, pilih salah satu dari berikut ini:

    • Tulis jika kosong — Menulis hasil kueri ke tabel hanya jika tabel kosong.
    • Append to table — Menambahkan hasil kueri ke tabel yang ada.
    • Overwrite table — Menimpa tabel yang ada dengan nama yang sama menggunakan hasil kueri.
  8. Opsional: Untuk Lokasi data, pilih lokasi Anda.

  9. Untuk memperbarui setelan kueri, klik Simpan.

  10. Klik Jalankan. Ini akan membuat tugas kueri yang menulis hasil kueri ke tabel yang Anda tentukan.

Atau, jika lupa menentukan tabel tujuan sebelum menjalankan kueri, Anda dapat menyalin tabel hasil yang di-cache ke tabel permanen dengan mengklik tombol Simpan Hasil di atas editor.

SQL

Contoh berikut menggunakan pernyataan CREATE TABLE untuk membuat tabel trips dari data di tabel bikeshare_trips publik:

  1. Di konsol Google Cloud, buka halaman BigQuery.

    Buka BigQuery

  2. Di editor kueri, masukkan pernyataan berikut:

    CREATE TABLE mydataset.trips AS (
      SELECT
        bike_id,
        start_time,
        duration_minutes
      FROM
        bigquery-public-data.austin_bikeshare.bikeshare_trips
    );

  3. Klik Run.

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

Untuk mengetahui informasi selengkapnya, lihat Membuat tabel baru dari tabel yang ada.

bq

  1. Di konsol Google Cloud, aktifkan Cloud Shell.

    Aktifkan Cloud Shell

    Di bagian bawah Google Cloud Console, Cloud Shell sesi akan terbuka dan menampilkan perintah command line. Cloud Shell adalah lingkungan shell dengan Google Cloud CLI yang sudah terinstal, dan dengan nilai yang sudah ditetapkan untuk project Anda saat ini. Diperlukan waktu beberapa detik untuk melakukan inisialisasi sesi.

  2. Masukkan perintah bq query dan tentukan flag --destination_table untuk membuat tabel permanen berdasarkan hasil kueri. Tentukan flag use_legacy_sql=false untuk menggunakan sintaksis GoogleSQL. Untuk menulis hasil kueri ke tabel yang tidak ada dalam project default Anda, tambahkan ID project ke nama set data dalam format berikut: project_id:dataset.

    Opsional: Berikan flag --location dan tetapkan nilainya ke lokasi Anda.

    Untuk mengontrol disposisi tulis untuk tabel tujuan yang ada, tentukan salah satu flag opsional berikut:

    • --append_table: Jika tabel tujuan ada, hasil kueri akan ditambahkan ke tabel tujuan tersebut.
    • --replace: Jika ada, tabel tujuan akan ditimpa dengan hasil kueri.

      bq --location=location query \
      --destination_table project_id:dataset.table \
      --use_legacy_sql=false 'query'

      Ganti kode berikut:

    • location adalah nama lokasi yang digunakan untuk memproses kueri. Flag --location bersifat opsional. Misalnya, jika menggunakan BigQuery di region Tokyo, Anda dapat menetapkan nilai flag ke asia-northeast1. Anda dapat menetapkan nilai default untuk lokasi menggunakan file .bigqueryrc.

    • project_id adalah project ID Anda.

    • dataset adalah nama set data yang berisi tabel tempat Anda menulis hasil kueri.

    • table adalah nama tabel tempat Anda menulis hasil kueri.

    • query adalah kueri dalam sintaksis GoogleSQL.

      Jika flag disposisi tulis tidak ditentukan, perilaku default-nya adalah menulis hasil ke tabel hanya jika kosong. Jika tabel itu ada dan tidak kosong, error berikut akan ditampilkan: `BigQuery error in query operation: Error processing job project_id:bqjob_123abc456789_00000e1234f_1': Already Exists: Table project_id:dataset.table.

      Contoh:

      Masukkan perintah berikut untuk menulis hasil kueri ke tabel tujuan bernama mytable di mydataset. Set data ada dalam project default Anda. Karena tidak ada flag disposisi tulis yang ditentukan dalam perintah, tabel harus baru atau kosong. Jika tidak, error Already exists akan ditampilkan. Kueri ini mengambil data dari set data publik Data Nama AS.

      bq query \
      --destination_table mydataset.mytable \
      --use_legacy_sql=false \
      'SELECT
      name,
      number
      FROM
      `bigquery-public-data`.usa_names.usa_1910_current
      WHERE
      gender = "M"
      ORDER BY
      number DESC'

      Masukkan perintah berikut untuk menggunakan hasil kueri guna menimpa tabel tujuan bernama mytable di mydataset. Set data berada dalam project default Anda. Perintah ini menggunakan flag --replace untuk menimpa tabel tujuan.

      bq query \
      --destination_table mydataset.mytable \
      --replace \
      --use_legacy_sql=false \
      'SELECT
      name,
      number
      FROM
      `bigquery-public-data`.usa_names.usa_1910_current
      WHERE
      gender = "M"
      ORDER BY
      number DESC'

      Masukkan perintah berikut untuk menambahkan hasil kueri ke tabel tujuan bernama mytable di mydataset. Set data berada di my-other-project, bukan di project default Anda. Perintah ini menggunakan flag --append_table untuk menambahkan hasil kueri ke tabel tujuan.

      bq query \
      --append_table \
      --use_legacy_sql=false \
      --destination_table my-other-project:mydataset.mytable \
      'SELECT
      name,
      number
      FROM
      `bigquery-public-data`.usa_names.usa_1910_current
      WHERE
      gender = "M"
      ORDER BY
      number DESC'

      Output untuk setiap contoh ini terlihat seperti berikut. Agar mudah dibaca, beberapa output akan terpotong.

      Waiting on bqjob_r123abc456_000001234567_1 ... (2s) Current status: DONE
      +---------+--------+
      |  name   | number |
      +---------+--------+
      | Robert  |  10021 |
      | John    |   9636 |
      | Robert  |   9297 |
      | ...              |
      +---------+--------+
      

API

Untuk menyimpan hasil kueri ke tabel permanen, panggil metode jobs.insert, konfigurasi tugas query, dan sertakan nilai untuk propertidestinationTable. Untuk mengontrol disposisi tulis untuk tabel tujuan yang ada, konfigurasi properti writeDisposition.

Guna mengontrol lokasi pemrosesan untuk tugas kueri, tentukan properti location di bagian jobReference pada resource tugas.

Go

Sebelum mencoba contoh ini, ikuti petunjuk penyiapan Go di Panduan memulai BigQuery menggunakan library klien. Untuk mengetahui informasi selengkapnya, lihat Dokumentasi referensi BigQuery Go API.

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

import (
	"context"
	"fmt"
	"io"

	"cloud.google.com/go/bigquery"
	"google.golang.org/api/iterator"
)

// queryWithDestination demonstrates saving the results of a query to a specific table by setting the destination
// via the API properties.
func queryWithDestination(w io.Writer, projectID, destDatasetID, destTableID string) error {
	// projectID := "my-project-id"
	// datasetID := "mydataset"
	// tableID := "mytable"
	ctx := context.Background()
	client, err := bigquery.NewClient(ctx, projectID)
	if err != nil {
		return fmt.Errorf("bigquery.NewClient: %v", err)
	}
	defer client.Close()

	q := client.Query("SELECT 17 as my_col")
	q.Location = "US" // Location must match the dataset(s) referenced in query.
	q.QueryConfig.Dst = client.Dataset(destDatasetID).Table(destTableID)
	// Run the query and print results when the query job is completed.
	job, err := q.Run(ctx)
	if err != nil {
		return err
	}
	status, err := job.Wait(ctx)
	if err != nil {
		return err
	}
	if err := status.Err(); err != nil {
		return err
	}
	it, err := job.Read(ctx)
	for {
		var row []bigquery.Value
		err := it.Next(&row)
		if err == iterator.Done {
			break
		}
		if err != nil {
			return err
		}
		fmt.Fprintln(w, row)
	}
	return nil
}

Java

Sebelum mencoba contoh ini, ikuti petunjuk penyiapan Java di Panduan memulai BigQuery menggunakan library klien. Untuk mengetahui informasi selengkapnya, lihat Dokumentasi referensi BigQuery Java API.

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

Untuk menyimpan hasil kueri ke tabel permanen, tetapkan tabel tujuan ke TableId yang diinginkan di QueryJobConfiguration.

import com.google.cloud.bigquery.BigQuery;
import com.google.cloud.bigquery.BigQueryException;
import com.google.cloud.bigquery.BigQueryOptions;
import com.google.cloud.bigquery.QueryJobConfiguration;
import com.google.cloud.bigquery.TableId;

public class SaveQueryToTable {

  public static void runSaveQueryToTable() {
    // TODO(developer): Replace these variables before running the sample.
    String query = "SELECT corpus FROM `bigquery-public-data.samples.shakespeare` GROUP BY corpus;";
    String destinationTable = "MY_TABLE";
    String destinationDataset = "MY_DATASET";

    saveQueryToTable(destinationDataset, destinationTable, query);
  }

  public static void saveQueryToTable(
      String destinationDataset, String destinationTableId, String query) {
    try {
      // Initialize client that will be used to send requests. This client only needs to be created
      // once, and can be reused for multiple requests.
      BigQuery bigquery = BigQueryOptions.getDefaultInstance().getService();

      // Identify the destination table
      TableId destinationTable = TableId.of(destinationDataset, destinationTableId);

      // Build the query job
      QueryJobConfiguration queryConfig =
          QueryJobConfiguration.newBuilder(query).setDestinationTable(destinationTable).build();

      // Execute the query.
      bigquery.query(queryConfig);

      // The results are now saved in the destination table.

      System.out.println("Saved query ran successfully");
    } catch (BigQueryException | InterruptedException e) {
      System.out.println("Saved query did not run \n" + e.toString());
    }
  }
}

Node.js

Sebelum mencoba contoh ini, ikuti petunjuk penyiapan Node.js di Panduan memulai BigQuery menggunakan library klien. Untuk mengetahui informasi selengkapnya, lihat Dokumentasi referensi BigQuery Node.js API.

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

// Import the Google Cloud client library
const {BigQuery} = require('@google-cloud/bigquery');
const bigquery = new BigQuery();

async function queryDestinationTable() {
  // Queries the U.S. given names dataset for the state of Texas
  // and saves results to permanent table.

  /**
   * TODO(developer): Uncomment the following lines before running the sample.
   */
  // const datasetId = 'my_dataset';
  // const tableId = 'my_table';

  // Create destination table reference
  const dataset = bigquery.dataset(datasetId);
  const destinationTable = dataset.table(tableId);

  const query = `SELECT name
    FROM \`bigquery-public-data.usa_names.usa_1910_2013\`
    WHERE state = 'TX'
    LIMIT 100`;

  // For all options, see https://cloud.google.com/bigquery/docs/reference/v2/tables#resource
  const options = {
    query: query,
    // Location must match that of the dataset(s) referenced in the query.
    location: 'US',
    destination: destinationTable,
  };

  // Run the query as a job
  const [job] = await bigquery.createQueryJob(options);

  console.log(`Job ${job.id} started.`);
  console.log(`Query results loaded to table ${destinationTable.id}`);
}

Python

Sebelum mencoba contoh ini, ikuti petunjuk penyiapan Python di Panduan memulai BigQuery menggunakan library klien. Untuk mengetahui informasi selengkapnya, lihat Dokumentasi referensi BigQuery Python API.

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

Untuk menyimpan hasil kueri ke tabel permanen, buat QueryJobConfig dan tetapkan tujuan ke TableReference yang diinginkan. Teruskan konfigurasi tugas ke metode kueri.
from google.cloud import bigquery

# Construct a BigQuery client object.
client = bigquery.Client()

# TODO(developer): Set table_id to the ID of the destination table.
# table_id = "your-project.your_dataset.your_table_name"

job_config = bigquery.QueryJobConfig(destination=table_id)

sql = """
    SELECT corpus
    FROM `bigquery-public-data.samples.shakespeare`
    GROUP BY corpus;
"""

# Start the query, passing in the extra configuration.
query_job = client.query(sql, job_config=job_config)  # Make an API request.
query_job.result()  # Wait for the job to complete.

print("Query results loaded to the table {}".format(table_id))

Membuat tabel yang mereferensikan sumber data eksternal

Sumber data eksternal adalah sumber data yang dapat Anda kueri langsung dari BigQuery, meskipun data tersebut tidak disimpan di penyimpanan BigQuery. Misalnya, Anda mungkin memiliki data di database Google Cloud lain, di file di Cloud Storage, atau di produk cloud yang berbeda sama sekali yang ingin Anda analisis di BigQuery, tetapi Anda tidak yang telah siap untuk bermigrasi.

Untuk informasi selengkapnya, lihat Pengantar sumber data eksternal.

Membuat tabel saat Anda memuat data

Saat memuat data ke BigQuery, Anda dapat memuat data ke dalam tabel atau partisi baru, menambahkan data ke tabel atau partisi yang sudah ada, atau menimpa tabel atau partisi. Anda tidak perlu membuat tabel kosong sebelum memuat data ke tabel tersebut. Anda dapat membuat tabel baru dan memuat data Anda secara bersamaan.

Saat memuat data ke BigQuery, Anda dapat memberikan skema partisi atau tabel, atau untuk format data yang didukung, Anda dapat menggunakan deteksi otomatis skema.

Untuk mengetahui informasi selengkapnya tentang pemuatan data, lihat Pengantar cara memuat data ke BigQuery.

Mengontrol akses ke tabel

Untuk mengonfigurasi akses ke tabel dan tampilan, Anda dapat memberikan peran IAM ke entity di tingkat berikut, yang tercantum sesuai urutan rentang resource yang diizinkan (terbesar hingga terkecil):

  • tingkat tinggi dalam hierarki resource Google Cloud, seperti tingkat project, folder, atau organisasi
  • tingkat set data
  • tingkat tabel atau tabel virtual

Anda juga dapat membatasi akses data dalam tabel menggunakan metode berikut:

Akses dengan resource apa pun yang dilindungi oleh IAM bersifat tambahan. Misalnya, jika suatu entity tidak memiliki akses di tingkat tinggi seperti project, Anda dapat memberikan akses ke entity tersebut di tingkat set data, lalu entity akan memiliki akses ke tabel dan tabel virtual dalam set data. Demikian pula, jika entity tidak memiliki akses di tingkat tinggi atau tingkat set data, Anda dapat memberikan akses ke entity di tingkat tabel atau tabel virtual.

Memberikan peran IAM di tingkat yang lebih tinggi dalam hierarki resource Google Cloud seperti tingkat project, folder, atau organisasi akan memberi entity akses ke berbagai resource. Misalnya, memberikan peran ke suatu entity di tingkat project akan memberikan izin entity yang berlaku untuk semua set data di seluruh project.

Memberikan peran di tingkat set data akan menentukan operasi yang diizinkan untuk dilakukan oleh entity di tabel dan tabel virtual di set data tertentu tersebut, meskipun entity tidak memiliki akses di tingkat yang lebih tinggi. Untuk informasi tentang cara mengonfigurasi kontrol akses tingkat set data, baca Mengontrol akses ke set data.

Memberikan peran di tingkat tabel atau tabel virtual akan menentukan operasi yang diizinkan untuk dilakukan oleh entity pada tabel dan tabel virtual tertentu, meskipun jika entity tersebut tidak memiliki akses di tingkat yang lebih tinggi. Untuk informasi tentang cara mengonfigurasi kontrol akses tingkat tabel, lihat Mengontrol akses ke tabel dan tabel virtual.

Anda juga dapat membuat peran khusus IAM. Jika Anda membuat peran khusus, izin yang diberikan bergantung pada operasi tertentu yang Anda inginkan untuk dapat dilakukan oleh entity.

Anda tidak dapat menetapkan izin "tolak" pada resource apa pun yang dilindungi oleh IAM.

Untuk mengetahui informasi selengkapnya tentang peran dan izin, lihat Memahami peran dalam dokumentasi IAM serta Peran dan izin IAM BigQuery.

Mendapatkan informasi tentang tabel

Anda bisa mendapatkan informasi atau metadata tentang tabel dengan cara berikut:

  • Menggunakan Konsol Google Cloud.
  • Menggunakan perintah bq show alat command line bq.
  • Memanggil metode API tables.get.
  • Menggunakan library klien.
  • Membuat kueri tampilan INFORMATION_SCHEMA (beta).

Izin yang diperlukan

Setidaknya, untuk mendapatkan informasi tentang tabel, Anda harus diberi izin bigquery.tables.get. Peran IAM bawaan berikut menyertakan izin bigquery.tables.get:

  • bigquery.metadataViewer
  • bigquery.dataViewer
  • bigquery.dataOwner
  • bigquery.dataEditor
  • bigquery.admin

Selain itu, jika memiliki izin bigquery.datasets.create, saat membuat set data, pengguna akan diberi akses bigquery.dataOwner. Dengan akses bigquery.dataOwner, pengguna dapat mengambil metadata tabel.

Untuk mengetahui informasi selengkapnya tentang peran dan izin IAM di BigQuery, baca Kontrol akses.

Mendapatkan informasi tabel

Untuk mendapatkan informasi tentang tabel:

Konsol

  1. Di panel navigasi, di bagian Resource, luaskan project Anda, lalu pilih set data.

  2. Klik nama set data untuk meluaskannya. Tabel dan tampilan dalam set data akan muncul.

  3. Klik nama tabel.

  4. Di panel Details, klik Details untuk menampilkan deskripsi dan informasi tabel tabel.

  5. Atau, beralihlah ke tab Schema untuk melihat definisi skema tabel.

bq

  1. Di konsol Google Cloud, aktifkan Cloud Shell.

    Aktifkan Cloud Shell

    Di bagian bawah Google Cloud Console, Cloud Shell sesi akan terbuka dan menampilkan perintah command line. Cloud Shell adalah lingkungan shell dengan Google Cloud CLI yang sudah terinstal, dan dengan nilai yang sudah ditetapkan untuk project Anda saat ini. Diperlukan waktu beberapa detik untuk melakukan inisialisasi sesi.

  2. Berikan perintah bq show untuk menampilkan semua informasi tabel. Gunakan flag --schema untuk hanya menampilkan informasi skema tabel. Flag --format dapat digunakan untuk mengontrol output.

    Jika Anda mendapatkan informasi tentang tabel dalam project selain project default Anda, tambahkan ID project ke set data dalam format berikut: project_id:dataset.

    bq show \
    --schema \
    --format=prettyjson \
    project_id:dataset.table

    Dengan keterangan:

    • project_id adalah project ID Anda.
    • dataset adalah nama set data.
    • table adalah nama tabel.

    Contoh:

    Masukkan perintah berikut untuk menampilkan semua informasi tentang mytable di mydataset. mydataset ada dalam project default Anda.

    bq show --format=prettyjson mydataset.mytable

    Masukkan perintah berikut untuk menampilkan semua informasi tentang mytable di mydataset. mydataset ada di myotherproject, bukan di project default Anda.

    bq show --format=prettyjson myotherproject:mydataset.mytable

    Masukkan perintah berikut untuk hanya menampilkan informasi skema tentang mytable di mydataset. mydataset ada di myotherproject, bukan di project default Anda.

    bq show --schema --format=prettyjson myotherproject:mydataset.mytable

API

Panggil metode tables.get dan berikan parameter yang relevan.

Go

Sebelum mencoba contoh ini, ikuti petunjuk penyiapan Go di Panduan memulai BigQuery menggunakan library klien. Untuk mengetahui informasi selengkapnya, lihat Dokumentasi referensi BigQuery Go API.

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

import (
	"context"
	"fmt"
	"io"

	"cloud.google.com/go/bigquery"
)

// printTableInfo demonstrates fetching metadata from a table and printing some basic information
// to an io.Writer.
func printTableInfo(w io.Writer, projectID, datasetID, tableID string) error {
	// projectID := "my-project-id"
	// datasetID := "mydataset"
	// tableID := "mytable"
	ctx := context.Background()
	client, err := bigquery.NewClient(ctx, projectID)
	if err != nil {
		return fmt.Errorf("bigquery.NewClient: %v", err)
	}
	defer client.Close()

	meta, err := client.Dataset(datasetID).Table(tableID).Metadata(ctx)
	if err != nil {
		return err
	}
	// Print basic information about the table.
	fmt.Fprintf(w, "Schema has %d top-level fields\n", len(meta.Schema))
	fmt.Fprintf(w, "Description: %s\n", meta.Description)
	fmt.Fprintf(w, "Rows in managed storage: %d\n", meta.NumRows)
	return nil
}

Java

Sebelum mencoba contoh ini, ikuti petunjuk penyiapan Java di Panduan memulai BigQuery menggunakan library klien. Untuk mengetahui informasi selengkapnya, lihat Dokumentasi referensi BigQuery Java API.

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

import com.google.cloud.bigquery.BigQuery;
import com.google.cloud.bigquery.BigQueryException;
import com.google.cloud.bigquery.BigQueryOptions;
import com.google.cloud.bigquery.Table;
import com.google.cloud.bigquery.TableId;

public class GetTable {

  public static void runGetTable() {
    // TODO(developer): Replace these variables before running the sample.
    String projectId = "bigquery_public_data";
    String datasetName = "samples";
    String tableName = "shakespeare";
    getTable(projectId, datasetName, tableName);
  }

  public static void getTable(String projectId, String datasetName, String tableName) {
    try {
      // Initialize client that will be used to send requests. This client only needs to be created
      // once, and can be reused for multiple requests.
      BigQuery bigquery = BigQueryOptions.getDefaultInstance().getService();

      TableId tableId = TableId.of(projectId, datasetName, tableName);
      Table table = bigquery.getTable(tableId);
      System.out.println("Table info: " + table.getDescription());
    } catch (BigQueryException e) {
      System.out.println("Table not retrieved. \n" + e.toString());
    }
  }
}

Node.js

Sebelum mencoba contoh ini, ikuti petunjuk penyiapan Node.js di Panduan memulai BigQuery menggunakan library klien. Untuk mengetahui informasi selengkapnya, lihat Dokumentasi referensi BigQuery Node.js API.

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

// Import the Google Cloud client library
const {BigQuery} = require('@google-cloud/bigquery');
const bigquery = new BigQuery();

async function getTable() {
  // Retrieves table named "my_table" in "my_dataset".

  /**
   * TODO(developer): Uncomment the following lines before running the sample
   */
  // const datasetId = "my_dataset";
  // const tableId = "my_table";

  // Retrieve table reference
  const dataset = bigquery.dataset(datasetId);
  const [table] = await dataset.table(tableId).get();

  console.log('Table:');
  console.log(table.metadata.tableReference);
}
getTable();

PHP

Sebelum mencoba contoh ini, ikuti petunjuk penyiapan PHP di Panduan memulai BigQuery menggunakan library klien. Untuk mengetahui informasi selengkapnya, lihat Dokumentasi referensi BigQuery PHP API.

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

use Google\Cloud\BigQuery\BigQueryClient;

/** Uncomment and populate these variables in your code */
//$projectId = 'The Google project ID';
//$datasetId = 'The BigQuery dataset ID';
//$tableId   = 'The BigQuery table ID';

$bigQuery = new BigQueryClient([
    'projectId' => $projectId,
]);
$dataset = $bigQuery->dataset($datasetId);
$table = $dataset->table($tableId);

Python

Sebelum mencoba contoh ini, ikuti petunjuk penyiapan Python di Panduan memulai BigQuery menggunakan library klien. Untuk mengetahui informasi selengkapnya, lihat Dokumentasi referensi BigQuery Python API.

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


from google.cloud import bigquery

# Construct a BigQuery client object.
client = bigquery.Client()

# TODO(developer): Set table_id to the ID of the model to fetch.
# table_id = 'your-project.your_dataset.your_table'

table = client.get_table(table_id)  # Make an API request.

# View table properties
print(
    "Got table '{}.{}.{}'.".format(table.project, table.dataset_id, table.table_id)
)
print("Table schema: {}".format(table.schema))
print("Table description: {}".format(table.description))
print("Table has {} rows".format(table.num_rows))

Mendapatkan informasi tabel menggunakan INFORMATION_SCHEMA

INFORMATION_SCHEMA adalah serangkaian tampilan yang memberikan akses ke metadata tentang set data, rutinitas, tabel, tampilan, tugas, pemesanan, dan data streaming.

Anda dapat membuat kueri tampilan berikut untuk mendapatkan informasi tabel:

  • Gunakan tampilan INFORMATION_SCHEMA.TABLES dan INFORMATION_SCHEMA.TABLE_OPTIONS untuk mengambil metadata tentang tabel dan tampilan dalam sebuah project.
  • Gunakan tampilan INFORMATION_SCHEMA.COLUMNS dan INFORMATION_SCHEMA.COLUMN_FIELD_PATHS untuk mengambil metadata tentang kolom dalam tabel.
  • Gunakan tampilan INFORMATION_SCHEMA.TABLE_STORAGE untuk mengambil metadata tentang penggunaan penyimpanan saat ini dan historis oleh tabel.

Tampilan TABLES dan TABLE_OPTIONS juga berisi informasi tingkat tinggi tentang tampilan. Untuk informasi selengkapnya, buat kueri tampilan INFORMATION_SCHEMA.VIEWS.

Tampilan TABLES

Saat Anda membuat kueri tampilan INFORMATION_SCHEMA.TABLES, hasil kueri akan berisi satu baris untuk setiap tabel atau tampilan dalam set data. Untuk informasi mendetail tentang tampilan, buat kueri tampilan INFORMATION_SCHEMA.VIEWS.

Tampilan INFORMATION_SCHEMA.TABLES memiliki skema berikut:

Nama kolom Jenis data Nilai
table_catalog STRING Project ID dari project yang berisi set data.
table_schema STRING Nama set data yang berisi tabel atau tampilan tersebut. Juga disebut sebagai datasetId.
table_name STRING Nama tabel atau tampilan. Juga disebut sebagai tableId.
table_type STRING Jenis tabel; salah satu dari yang berikut:
is_insertable_into STRING YES atau NO bergantung pada apakah tabel mendukung pernyataan DML INSERT atau tidak
is_typed STRING Nilainya selalu NO
creation_time TIMESTAMP Waktu pembuatan tabel
base_table_catalog STRING Untuk clone tabel dan snapshot tabel, project tabel dasar. Hanya berlaku untuk tabel dengan table_type yang ditetapkan ke CLONE atau SNAPSHOT.
base_table_schema STRING Untuk clone tabel dan snapshot tabel, set data tabel dasar. Hanya berlaku untuk tabel dengan table_type yang ditetapkan ke CLONE atau SNAPSHOT.
base_table_name STRING Untuk clone tabel dan snapshot tabel, nama tabel dasar. Hanya berlaku untuk tabel dengan table_type yang ditetapkan ke CLONE atau SNAPSHOT.
snapshot_time_ms TIMESTAMP Untuk clone tabel dan snapshot tabel, waktu saat operasi clone atau snapshot dijalankan pada tabel dasar untuk membuat tabel ini. Jika perjalanan waktu digunakan, kolom ini berisi stempel waktu perjalanan waktu. Jika tidak, kolom snapshot_time_ms sama dengan kolom creation_time. Hanya berlaku untuk tabel dengan table_type yang ditetapkan ke CLONE atau SNAPSHOT.
replica_source_catalog STRING Untuk replika tampilan terwujud, project tampilan terwujud dasar.
replica_source_schema STRING Untuk replika tampilan terwujud, set data tampilan terwujud dasar.
replica_source_name STRING Untuk replika tampilan terwujud, nama tampilan terwujud dasar.
replication_status STRING Untuk replika tampilan terwujud, status replikasi dari tampilan terwujud dasar ke replika tampilan terwujud; salah satu hal berikut:
  • REPLICATION_STATUS_UNSPECIFIED
  • ACTIVE: Replikasi aktif tanpa error
  • SOURCE_DELETED: Tampilan terwujud sumber telah dihapus
  • PERMISSION_DENIED: Tampilan terwujud sumber belum diotorisasi pada set data yang berisi tabel Amazon S3 BigLake sumber yang digunakan dalam kueri yang membuat tampilan terwujud.
  • UNSUPPORTED_CONFIGURATION: Ada masalah dengan prasyarat replika selain otorisasi tampilan terwujud sumber.
replication_error STRING Jika replication_status menunjukkan masalah replikasi untuk replika tampilan terwujud, replication_error akan memberikan detail lebih lanjut tentang masalah tersebut.
ddl STRING Pernyataan DDL yang dapat digunakan untuk membuat ulang tabel, seperti CREATE TABLE atau CREATE VIEW
default_collation_name STRING Nama spesifikasi kolasi default jika ada. Jika tidak, NULL.
upsert_stream_apply_watermark TIMESTAMP Untuk tabel yang menggunakan pengambilan data perubahan (CDC), waktu saat modifikasi baris terakhir diterapkan. Untuk mengetahui informasi selengkapnya, lihat Memantau progres operasi upsert tabel.

Contoh

Contoh 1:

Contoh berikut mengambil metadata tabel untuk semua tabel dalam set data bernama mydataset. Metadata yang ditampilkan adalah untuk semua jenis tabel di mydataset dalam project default Anda.

mydataset berisi tabel berikut:

  • mytable1: tabel BigQuery standar
  • myview1: tampilan BigQuery

Untuk menjalankan kueri terhadap project selain project default Anda, tambahkan project ID ke set data dalam format berikut: `project_id`.dataset.INFORMATION_SCHEMA.view; misalnya, `myproject`.mydataset.INFORMATION_SCHEMA.TABLES.

SELECT
  table_catalog, table_schema, table_name, table_type,
  is_insertable_into, creation_time, ddl
FROM
  mydataset.INFORMATION_SCHEMA.TABLES;

Hasilnya mirip dengan berikut ini. Agar mudah dibaca, beberapa kolom dikecualikan dari hasil.

+----------------+---------------+----------------+------------+--------------------+---------------------+---------------------------------------------+
| table_catalog  | table_schema  |   table_name   | table_type | is_insertable_into |    creation_time    |                     ddl                     |
+----------------+---------------+----------------+------------+--------------------+---------------------+---------------------------------------------+
| myproject      | mydataset     | mytable1       | BASE TABLE | YES                | 2018-10-29 20:34:44 | CREATE TABLE `myproject.mydataset.mytable1` |
|                |               |                |            |                    |                     | (                                           |
|                |               |                |            |                    |                     |   id INT64                                  |
|                |               |                |            |                    |                     | );                                          |
| myproject      | mydataset     | myview1        | VIEW       | NO                 | 2018-12-29 00:19:20 | CREATE VIEW `myproject.mydataset.myview1`   |
|                |               |                |            |                    |                     | AS SELECT 100 as id;                        |
+----------------+---------------+----------------+------------+--------------------+---------------------+---------------------------------------------+
Contoh 2:

Contoh berikut mengambil metadata tabel untuk semua tabel dengan jenis CLONE atau SNAPSHOT dari tampilan INFORMATION_SCHEMA.TABLES. Metadata yang ditampilkan adalah untuk tabel dalam mydataset di project default Anda.

Untuk menjalankan kueri terhadap project selain project default Anda, tambahkan project ID ke set data dalam format berikut: `project_id`.dataset.INFORMATION_SCHEMA.view; misalnya, `myproject`.mydataset.INFORMATION_SCHEMA.TABLES.

  SELECT
    table_name, table_type, base_table_catalog,
    base_table_schema, base_table_name, snapshot_time_ms
  FROM
    mydataset.INFORMATION_SCHEMA.TABLES
  WHERE
    table_type = 'CLONE'
  OR
    table_type = 'SNAPSHOT';

Hasilnya mirip dengan berikut ini. Agar mudah dibaca, beberapa kolom dikecualikan dari hasil.

  +--------------+------------+--------------------+-------------------+-----------------+---------------------+
  | table_name   | table_type | base_table_catalog | base_table_schema | base_table_name | snapshot_time_ms    |
  +--------------+------------+--------------------+-------------------+-----------------+---------------------+
  | items_clone  | CLONE      | myproject          | mydataset         | items           | 2018-10-31 22:40:05 |
  | orders_bk    | SNAPSHOT   | myproject          | mydataset         | orders          | 2018-11-01 08:22:39 |
  +--------------+------------+--------------------+-------------------+-----------------+---------------------+

Contoh 3:

Contoh berikut mengambil kolom table_name dan ddl dari tampilan INFORMATION_SCHEMA.TABLES untuk tabel population_by_zip_2010 di set data census_bureau_usa. Set data ini adalah bagian dari program set data publik BigQuery.

Karena tabel yang Anda kueri berada di project lain, Anda menambahkan project ID ke set data dalam format berikut: `project_id`.dataset.INFORMATION_SCHEMA.view. Dalam contoh ini, nilainya adalah `bigquery-public-data`.census_bureau_usa.INFORMATION_SCHEMA.TABLES.

SELECT
  table_name, ddl
FROM
  `bigquery-public-data`.census_bureau_usa.INFORMATION_SCHEMA.TABLES
WHERE
  table_name = 'population_by_zip_2010';

Hasilnya mirip dengan berikut ini:

+------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|       table_name       |                                                                                                            ddl                                                                                                             |
+------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| population_by_zip_2010 | CREATE TABLE `bigquery-public-data.census_bureau_usa.population_by_zip_2010`                                                                                                                                               |
|                        | (                                                                                                                                                                                                                          |
|                        |   geo_id STRING OPTIONS(description="Geo code"),                                                                                                                                                                           |
|                        |   zipcode STRING NOT NULL OPTIONS(description="Five digit ZIP Code Tabulation Area Census Code"),                                                                                                                          |
|                        |   population INT64 OPTIONS(description="The total count of the population for this segment."),                                                                                                                             |
|                        |   minimum_age INT64 OPTIONS(description="The minimum age in the age range. If null, this indicates the row as a total for male, female, or overall population."),                                                          |
|                        |   maximum_age INT64 OPTIONS(description="The maximum age in the age range. If null, this indicates the row as having no maximum (such as 85 and over) or the row is a total of the male, female, or overall population."), |
|                        |   gender STRING OPTIONS(description="male or female. If empty, the row is a total population summary.")                                                                                                                    |
|                        | )                                                                                                                                                                                                                          |
|                        | OPTIONS(                                                                                                                                                                                                                   |
|                        |   labels=[("freebqcovid", "")]                                                                                                                                                                                             |
|                        | );                                                                                                                                                                                                                         |
+------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  

Tampilan TABLE_OPTIONS

Saat Anda membuat kueri tampilan INFORMATION_SCHEMA.TABLE_OPTIONS, hasil kueri akan berisi satu baris untuk setiap opsi, untuk setiap tabel atau tampilan dalam set data. Untuk mengetahui informasi mendetail tentang tabel virtual, buat kueri tabel virtual INFORMATION_SCHEMA.VIEWS.

Tabel virtual INFORMATION_SCHEMA.TABLE_OPTIONS memiliki skema berikut:

Nama kolom Jenis data Nilai
TABLE_CATALOG STRING ID project dari project yang berisi set data
TABLE_SCHEMA STRING Nama set data yang berisi tabel atau tabel virtual juga disebut sebagai datasetId
TABLE_NAME STRING Nama tabel atau tabel virtual juga disebut sebagai tableId
OPTION_NAME STRING Salah satu nilai nama dalam tabel opsi
OPTION_TYPE STRING Salah satu nilai jenis data dalam tabel opsi
OPTION_VALUE STRING Salah satu opsi nilai dalam tabel opsi
Tabel Opsi
OPTION_NAME OPTION_TYPE OPTION_VALUE
partition_expiration_days FLOAT64 Masa aktif default, dalam hari, untuk semua partisi dalam tabel berpartisi
expiration_timestamp TIMESTAMP Waktu saat tabel ini berakhir
kms_key_name STRING Nama kunci Cloud KMS yang digunakan untuk mengenkripsi tabel
friendly_name STRING Nama deskriptif tabel
description STRING Deskripsi tabel
labels ARRAY<STRUCT<STRING, STRING>> Array STRUCT yang merepresentasikan label pada tabel
require_partition_filter BOOL Apakah kueri pada tabel memerlukan filter partisi
enable_refresh BOOL Apakah muat ulang otomatis diaktifkan untuk tampilan terwujud
refresh_interval_minutes FLOAT64 Seberapa sering tampilan terwujud dimuat ulang

Untuk tabel eksternal, opsi berikut dapat dipilih:

Opsi
allow_jagged_rows

BOOL

Jika true, izinkan baris yang tidak memiliki kolom opsional di belakangnya.

Berlaku untuk data CSV.

allow_quoted_newlines

BOOL

Jika true, izinkan bagian data yang dikutip yang berisi karakter newline dalam file.

Berlaku untuk data CSV.

bigtable_options

STRING

Hanya diperlukan saat membuat tabel eksternal Bigtable.

Menentukan skema tabel eksternal Bigtable dalam format JSON.

Untuk daftar opsi definisi tabel Bigtable, lihat BigtableOptions dalam referensi REST API.

compression

STRING

Jenis kompresi sumber data. Nilai yang didukung meliputi: GZIP. Jika tidak ditentukan, sumber data tidak akan dikompresi.

Berlaku untuk data CSV dan JSON.

decimal_target_types

ARRAY<STRING>

Menentukan cara mengonversi jenis Decimal. Setara dengan ExternalDataConfiguration.decimal_target_types

Contoh: ["NUMERIC", "BIGNUMERIC"].

description

STRING

Deskripsi tabel ini.

enable_list_inference

BOOL

Jika true, gunakan inferensi skema khusus untuk jenis logika Parquet LIST.

Berlaku untuk data Parquet.

enable_logical_types

BOOL

Jika true, konversikan jenis logika Avro ke dalam jenis SQL yang sesuai. Untuk mengetahui informasi selengkapnya, lihat Jenis logika.

Berlaku untuk data Avro.

encoding

STRING

Encoding karakter data. Nilai yang didukung mencakup: UTF8 (atau UTF-8), ISO_8859_1 (atau ISO-8859-1).

Berlaku untuk data CSV.

enum_as_string

BOOL

Jika true, simpulkan jenis logis Parquet ENUM sebagai STRING, bukan BYTES secara default.

Berlaku untuk data Parquet.

expiration_timestamp

TIMESTAMP

Waktu habis masa berlaku tabel ini Jika tidak ditentukan, masa berlaku tabel tidak akan habis.

Contoh: "2025-01-01 00:00:00 UTC".

field_delimiter

STRING

Pemisah untuk kolom dalam file CSV.

Berlaku untuk data CSV.

format

STRING

Format data eksternal. Nilai yang didukung untuk CREATE EXTERNAL TABLE mencakup: AVRO, CLOUD_BIGTABLE, CSV, DATASTORE_BACKUP, DELTA_LAKE (pratinjau), GOOGLE_SHEETS, NEWLINE_DELIMITED_JSON (atau JSON), ORC, PARQUET.

Nilai yang didukung untuk LOAD DATA mencakup: AVRO, CSV, DELTA_LAKE (pratinjau) NEWLINE_DELIMITED_JSON (atau JSON), ORC, PARQUET.

Nilai JSON setara dengan NEWLINE_DELIMITED_JSON.

hive_partition_uri_prefix

STRING

Imbuhan umum untuk semua URI sumber sebelum encoding kunci partisi dimulai. Hanya berlaku untuk tabel eksternal yang dipartisi hive.

Berlaku untuk data Avro, CSV, JSON, Parquet, dan ORC.

Contoh: "gs://bucket/path".

file_set_spec_type

STRING

Menentukan cara menafsirkan URI sumber untuk tugas pemuatan dan tabel eksternal. Dalam pratinjau.

Nilai yang didukung meliputi:

  • FILE_SYSTEM_MATCH. Memperluas URI sumber dengan mencantumkan file dari penyimpanan objek. Ini adalah perilaku default jika FileSetSpecType tidak ditetapkan.
  • NEW_LINE_DELIMITED_MANIFEST. Menunjukkan bahwa URI yang disediakan adalah file manifes yang dibatasi newline, dengan satu URI per baris. URI karakter pengganti tidak didukung dalam file manifes.

Misalnya, jika Anda memiliki URI sumber "gs://bucket/path/file" dan file_set_spec_type adalah FILE_SYSTEM_MATCH, file tersebut akan langsung digunakan sebagai file data. Jika file_set_spec_type adalah NEW_LINE_DELIMITED_MANIFEST, setiap baris dalam file akan ditafsirkan sebagai URI yang mengarah ke file data.

ignore_unknown_values

BOOL

Jika true, abaikan nilai tambahan yang tidak direpresentasikan dalam skema tabel, tanpa menampilkan error.

Berlaku untuk data CSV dan JSON.

json_extension

STRING

Untuk data JSON, menunjukkan format pertukaran JSON tertentu. Jika tidak ditentukan, BigQuery akan membaca data sebagai data JSON generik.

Nilai yang didukung meliputi:
GEOJSON. Data GeoJSON yang dibatasi newline. Untuk mengetahui informasi selengkapnya, lihat Membuat tabel eksternal dari file GeoJSON yang dibatasi newline.

max_bad_records

INT64

Jumlah maksimum catatan buruk yang diabaikan saat membaca data.

Berlaku untuk: data CSV, JSON, dan Google Spreadsheet.

max_staleness

INTERVAL

Berlaku untuk tabel BigLake dan tabel objek.

Menentukan apakah metadata yang di-cache digunakan oleh operasi terhadap tabel, dan seberapa baru metadata yang di-cache agar operasi dapat menggunakannya.

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

Untuk mengaktifkan caching metadata, isi nilai literal interval dari 30 menit atau hingga 7 hari. Misalnya, tentukan INTERVAL 4 HOUR untuk interval penghentian 4 jam. Dengan nilai ini, operasi terhadap tabel akan menggunakan metadata yang di-cache jika telah diperbarui dalam 4 jam terakhir. Jika metadata yang di-cache lebih lama dari itu, operasi akan kembali untuk mengambil metadata dari Cloud Storage.

metadata_cache_mode

STRING

Berlaku untuk tabel BigLake dan tabel objek.

Menentukan apakah cache metadata untuk tabel dimuat ulang secara otomatis atau manual.

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

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

Anda harus menetapkan metadata_cache_mode jika max_staleness ditetapkan ke nilai yang lebih besar dari 0.

null_marker

STRING

String yang merepresentasikan nilai NULL dalam file CSV.

Berlaku untuk data CSV.

object_metadata

STRING

Hanya diperlukan saat membuat tabel objek.

Tetapkan nilai opsi ini ke SIMPLE saat membuat tabel objek.

preserve_ascii_control_characters

BOOL

Jika true, karakter kontrol ASCII tersemat yang merupakan 32 karakter pertama dalam tabel ASCII, mulai dari '\x00' hingga '\x1F', akan dipertahankan.

Berlaku untuk data CSV.

projection_fields

STRING

Daftar properti entity yang akan dimuat.

Berlaku untuk data Datastore.

quote

STRING

String yang digunakan untuk mengutip bagian data dalam file CSV. Jika data Anda berisi karakter newline yang dikutip, tetapkan properti allow_quoted_newlines ke true.

Berlaku untuk data CSV.

reference_file_schema_uri

STRING

File referensi yang disediakan pengguna dengan skema tabel.

Berlaku untuk data Parquet/ORC/AVRO.

Contoh: "gs://bucket/path/reference_schema_file.parquet".

require_hive_partition_filter

BOOL

Jika true, semua kueri atas tabel ini memerlukan filter partisi yang dapat digunakan untuk menghilangkan partisi saat membaca data. Hanya berlaku untuk tabel eksternal yang dipartisi hive.

Berlaku untuk data Avro, CSV, JSON, Parquet, dan ORC.

sheet_range

STRING

Rentang spreadsheet Google Spreadsheet yang akan digunakan untuk membuat kueri.

Berlaku untuk data Google Spreadsheet.

Contoh: “sheet1!A1:B20”,

skip_leading_rows

INT64

Jumlah baris di bagian atas file yang dilewati saat membaca data.

Berlaku untuk data CSV dan Google Spreadsheet.

uris

Untuk tabel eksternal, termasuk tabel objek, yang bukan tabel Bigtable:

ARRAY<STRING>

Array URI yang sepenuhnya memenuhi syarat untuk lokasi data eksternal. Setiap URI dapat berisi satu karakter pengganti tanda bintang (*), yang harus muncul setelah nama bucket. Saat Anda menetapkan nilai uris yang menargetkan beberapa file, semua file tersebut harus memiliki skema yang kompatibel dan sama.

Contoh berikut menunjukkan nilai uris yang valid:

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

Untuk tabel Bigtable:

STRING

URI yang mengidentifikasi tabel Bigtable untuk digunakan sebagai sumber data. Anda hanya dapat menentukan satu URI Bigtable.

Contoh: https://googleapis.com/bigtable/projects/project_id/instances/instance_id[/appProfiles/app_profile]/tables/table_name

Untuk informasi selengkapnya tentang cara mengonstruksi URI Bigtable, baca Mengambil URI Bigtable.

Contoh

Contoh 1:

Contoh berikut mengambil waktu habis masa berlaku tabel default untuk semua tabel di mydataset dalam project default Anda (myproject) dengan membuat kueri tabel virtual INFORMATION_SCHEMA.TABLE_OPTIONS.

Untuk menjalankan kueri terhadap project selain project default Anda, tambahkan project ID ke set data dalam format berikut: `project_id`.dataset.INFORMATION_SCHEMA.view; misalnya, `myproject`.mydataset.INFORMATION_SCHEMA.TABLE_OPTIONS.

  SELECT
    *
  FROM
    mydataset.INFORMATION_SCHEMA.TABLE_OPTIONS
  WHERE
    option_name = 'expiration_timestamp';

Hasilnya mirip dengan berikut ini:

  +----------------+---------------+------------+----------------------+-------------+--------------------------------------+
  | table_catalog  | table_schema  | table_name |     option_name      | option_type |             option_value             |
  +----------------+---------------+------------+----------------------+-------------+--------------------------------------+
  | myproject      | mydataset     | mytable1   | expiration_timestamp | TIMESTAMP   | TIMESTAMP "2020-01-16T21:12:28.000Z" |
  | myproject      | mydataset     | mytable2   | expiration_timestamp | TIMESTAMP   | TIMESTAMP "2021-01-01T21:12:28.000Z" |
  +----------------+---------------+------------+----------------------+-------------+--------------------------------------+
  

Contoh 2:

Contoh berikut mengambil metadata tentang semua tabel di mydataset yang berisi data pengujian. Kueri menggunakan nilai dalam opsi description untuk menemukan tabel yang berisi "test" di mana pun dalam deskripsi. mydataset ada dalam project default Anda — myproject.

Untuk menjalankan kueri terhadap project selain project default Anda, tambahkan project ID ke set data dalam format berikut: `project_id`.dataset.INFORMATION_SCHEMA.view; misalnya, `myproject`.mydataset.INFORMATION_SCHEMA.TABLE_OPTIONS.

  SELECT
    *
  FROM
    mydataset.INFORMATION_SCHEMA.TABLE_OPTIONS
  WHERE
    option_name = 'description'
    AND option_value LIKE '%test%';

Hasilnya mirip dengan berikut ini:

  +----------------+---------------+------------+-------------+-------------+--------------+
  | table_catalog  | table_schema  | table_name | option_name | option_type | option_value |
  +----------------+---------------+------------+-------------+-------------+--------------+
  | myproject      | mydataset     | mytable1   | description | STRING      | "test data"  |
  | myproject      | mydataset     | mytable2   | description | STRING      | "test data"  |
  +----------------+---------------+------------+-------------+-------------+--------------+
  

Tampilan COLUMNS

Saat Anda membuat kueri tampilan INFORMATION_SCHEMA.COLUMNS, hasil kueri akan berisi satu baris untuk setiap kolom dalam tabel.

Tampilan INFORMATION_SCHEMA.COLUMNS memiliki skema berikut

Nama kolom Jenis data Nilai
TABLE_CATALOG STRING Project ID dari project yang berisi set data
TABLE_SCHEMA STRING Nama set data yang berisi tabel juga disebut sebagai datasetId
TABLE_NAME STRING Nama tabel atau tabel virtual juga disebut sebagai tableId
COLUMN_NAME STRING Nama kolom
ORDINAL_POSITION INT64 Offset berindeks 1 pada kolom dalam tabel; jika kolomnya berupa kolom semu seperti _PARTITIONTIME atau _PARTITIONDATE, nilainya adalah NULL
IS_NULLABLE STRING YES atau NO bergantung pada apakah mode kolom memungkinkan nilai NULL atau tidak
DATA_TYPE STRING Jenis data GoogleSQL pada kolom
IS_GENERATED STRING Nilainya selalu NEVER
GENERATION_EXPRESSION STRING Nilainya selalu NULL
IS_STORED STRING Nilainya selalu NULL
IS_HIDDEN STRING YES atau NO bergantung pada apakah kolom merupakan kolom semu seperti _PARTITIONTIME atau _PARTITIONDATE
IS_UPDATABLE STRING Nilainya selalu NULL
IS_SYSTEM_DEFINED STRING YES atau NO bergantung pada apakah kolom merupakan kolom semu seperti _PARTITIONTIME atau _PARTITIONDATE
IS_PARTITIONING_COLUMN STRING YES atau NO bergantung pada apakah kolom tersebut merupakan kolom partisi
CLUSTERING_ORDINAL_POSITION INT64 Offset berindeks 1 kolom dalam kolom pengelompokan tabel; nilainya adalah NULL jika tabel tersebut bukan tabel yang dikelompokkan
COLLATION_NAME STRING Nama spesifikasi kolasi jika ada; jika tidak, NULL

Jika STRING atau ARRAY<STRING> diteruskan, spesifikasi kolasi akan ditampilkan jika ada; jika tidak, NULL akan ditampilkan
COLUMN_DEFAULT STRING Nilai default kolom jika ada; jika tidak, nilainya adalah NULL
ROUNDING_MODE STRING Mode pembulatan yang digunakan untuk nilai yang ditulis ke kolom jika jenisnya adalah NUMERIC atau BIGNUMERIC berparameter; jika tidak, nilainya adalah NULL

Contoh

Contoh berikut mengambil metadata dari tampilan INFORMATION_SCHEMA.COLUMNS untuk tabel population_by_zip_2010 dalam set data census_bureau_usa. Set data ini adalah bagian dari program set data publik BigQuery.

Tabel yang Anda buat kuerinya berada di project lain, yakni project bigquery-public-data, maka tambahkan ID project ke set data dalam format berikut: `project_id`.dataset.INFORMATION_SCHEMA.view; untuk contoh, `bigquery-public-data`.census_bureau_usa.INFORMATION_SCHEMA.TABLES.

Kolom berikut dikecualikan dari hasil kueri karena saat ini dicadangkan untuk penggunaan pada masa mendatang:

  • IS_GENERATED
  • GENERATION_EXPRESSION
  • IS_STORED
  • IS_UPDATABLE
  SELECT
    * EXCEPT(is_generated, generation_expression, is_stored, is_updatable)
  FROM
    `bigquery-public-data`.census_bureau_usa.INFORMATION_SCHEMA.COLUMNS
  WHERE
    table_name = 'population_by_zip_2010';

Hasilnya mirip dengan berikut ini. Agar mudah dibaca, beberapa kolom dikecualikan dari hasil.

+------------------------+-------------+------------------+-------------+-----------+-----------+-------------------+------------------------+-----------------------------+
|       table_name       | column_name | ordinal_position | is_nullable | data_type | is_hidden | is_system_defined | is_partitioning_column | clustering_ordinal_position |
+------------------------+-------------+------------------+-------------+-----------+-----------+-------------------+------------------------+-----------------------------+
| population_by_zip_2010 | zipcode     |                1 | NO          | STRING    | NO        | NO                | NO                     |                        NULL |
| population_by_zip_2010 | geo_id      |                2 | YES         | STRING    | NO        | NO                | NO                     |                        NULL |
| population_by_zip_2010 | minimum_age |                3 | YES         | INT64     | NO        | NO                | NO                     |                        NULL |
| population_by_zip_2010 | maximum_age |                4 | YES         | INT64     | NO        | NO                | NO                     |                        NULL |
| population_by_zip_2010 | gender      |                5 | YES         | STRING    | NO        | NO                | NO                     |                        NULL |
| population_by_zip_2010 | population  |                6 | YES         | INT64     | NO        | NO                | NO                     |                        NULL |
+------------------------+-------------+------------------+-------------+-----------+-----------+-------------------+------------------------+-----------------------------+
  

Tampilan COLUMN_FIELD_PATHS

Saat Anda membuat kueri tampilan INFORMATION_SCHEMA.COLUMN_FIELD_PATHS, hasil kueri akan berisi satu baris untuk setiap kolom yang bertingkat dalam kolom RECORD (atau STRUCT).

Tabel virtual INFORMATION_SCHEMA.COLUMN_FIELD_PATHS memiliki skema berikut:

Nama kolom Jenis data Nilai
TABLE_CATALOG STRING Project ID dari project yang berisi set data
TABLE_SCHEMA STRING Nama set data yang berisi tabel juga disebut sebagai datasetId
TABLE_NAME STRING Nama tabel atau tabel virtual juga disebut sebagai tableId
COLUMN_NAME STRING Nama kolom
FIELD_PATH STRING Jalur ke kolom yang bertingkat dalam kolom `RECORD` atau `STRUCT`
DATA_TYPE STRING Jenis data GoogleSQL pada kolom
DESCRIPTION STRING Deskripsi kolom
COLLATION_NAME STRING Nama spesifikasi kolasi jika ada; jika tidak ada, NULL

Jika kolom STRING, ARRAY<STRING>, atau STRING dalam STRUCT diteruskan, spesifikasi kolasi akan ditampilkan jika ada; jika tidak ada, NULL akan ditampilkan
ROUNDING_MODE STRING Mode pembulatan yang digunakan saat menerapkan presisi dan skala ke nilai NUMERIC atau BIGNUMERIC yang berparameter; jika tidak, nilainya adalah NULL

Contoh

Contoh berikut mengambil metadata dari tampilan INFORMATION_SCHEMA.COLUMN_FIELD_PATHS untuk tabel commits dalam set data github_repos. Set data ini adalah bagian dari program set data publik BigQuery.

Karena tabel yang Anda buat kuerinya berada di project lain, yakni project bigquery-public-data, Anda menambahkan project ID ke set data dalam format berikut: `project_id`.dataset.INFORMATION_SCHEMA.view; untuk contoh, `bigquery-public-data`.github_repos.INFORMATION_SCHEMA.COLUMN_FIELD_PATHS.

Tabel commits berisi kolom bertingkat serta kolom bertingkat dan berulang berikut:

  • author: kolom RECORD bertingkat
  • committer: kolom RECORD bertingkat
  • trailer: kolom RECORD bertingkat dan berulang
  • difference: kolom RECORD bertingkat dan berulang

Untuk melihat metadata tentang kolom author dan difference, jalankan kueri berikut.

SELECT
  *
FROM
  `bigquery-public-data`.github_repos.INFORMATION_SCHEMA.COLUMN_FIELD_PATHS
WHERE
  table_name = 'commits'
  AND (column_name = 'author' OR column_name = 'difference');

Hasilnya mirip dengan berikut ini. Agar mudah dibaca, beberapa kolom dikecualikan dari hasil.

  +------------+-------------+---------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------+-------------+
  | table_name | column_name |     field_path      |                                                                      data_type                                                                      | description |
  +------------+-------------+---------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------+-------------+
  | commits    | author      | author              | STRUCT<name STRING, email STRING, time_sec INT64, tz_offset INT64, date TIMESTAMP>                                                                  | NULL        |
  | commits    | author      | author.name         | STRING                                                                                                                                              | NULL        |
  | commits    | author      | author.email        | STRING                                                                                                                                              | NULL        |
  | commits    | author      | author.time_sec     | INT64                                                                                                                                               | NULL        |
  | commits    | author      | author.tz_offset    | INT64                                                                                                                                               | NULL        |
  | commits    | author      | author.date         | TIMESTAMP                                                                                                                                           | NULL        |
  | commits    | difference  | difference          | ARRAY<STRUCT<old_mode INT64, new_mode INT64, old_path STRING, new_path STRING, old_sha1 STRING, new_sha1 STRING, old_repo STRING, new_repo STRING>> | NULL        |
  | commits    | difference  | difference.old_mode | INT64                                                                                                                                               | NULL        |
  | commits    | difference  | difference.new_mode | INT64                                                                                                                                               | NULL        |
  | commits    | difference  | difference.old_path | STRING                                                                                                                                              | NULL        |
  | commits    | difference  | difference.new_path | STRING                                                                                                                                              | NULL        |
  | commits    | difference  | difference.old_sha1 | STRING                                                                                                                                              | NULL        |
  | commits    | difference  | difference.new_sha1 | STRING                                                                                                                                              | NULL        |
  | commits    | difference  | difference.old_repo | STRING                                                                                                                                              | NULL        |
  | commits    | difference  | difference.new_repo | STRING                                                                                                                                              | NULL        |
  +------------+-------------+---------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------+-------------+
  

Tampilan TABLE_STORAGE

Tampilan TABLE_STORAGE dan TABLE_STORAGE_BY_ORGANIZATION memiliki skema berikut:

Nama kolom Jenis data Nilai
PROJECT_ID STRING ID project dari project yang berisi set data
TABLE_CATALOG STRING ID project dari project yang berisi set data
PROJECT_NUMBER INT64 Nomor project dari project yang berisi set data
TABLE_SCHEMA STRING Nama set data yang berisi tabel atau tampilan terwujud, juga disebut sebagai datasetId
TABLE_NAME STRING Nama tabel atau tampilan terwujud, juga disebut sebagai tableId
CREATION_TIME TIMESTAMP Waktu pembuatan tabel
DELETED BOOLEAN Menunjukkan apakah tabel dihapus atau tidak
STORAGE_LAST_MODIFIED_TIME TIMESTAMP Waktu terakhir kali data ditulis ke tabel.
TOTAL_ROWS INT64 Jumlah total baris dalam tabel atau tampilan terwujud
TOTAL_PARTITIONS INT64 Jumlah partisi yang ada dalam tabel atau tampilan terwujud. Tabel yang tidak dipartisi menampilkan 0.
TOTAL_LOGICAL_BYTES INT64 Jumlah total byte logis (tidak terkompresi) dalam tabel atau tampilan terwujud
ACTIVE_LOGICAL_BYTES INT64 Jumlah byte logis (tidak terkompresi) dengan usia kurang dari 90 hari
LONG_TERM_LOGICAL_BYTES INT64 Jumlah byte logis (tidak terkompresi) dengan usia lebih dari 90 hari
TOTAL_PHYSICAL_BYTES INT64 Jumlah total byte fisik (terkompresi) yang digunakan untuk penyimpanan, termasuk byte aktif, jangka panjang, dan perjalanan waktu (data yang dihapus atau diubah)
ACTIVE_PHYSICAL_BYTES INT64 Jumlah byte fisik (terkompresi) dengan usia kurang 90 hari, termasuk byte perjalanan waktu (data dihapus atau diubah)
LONG_TERM_PHYSICAL_BYTES INT64 Jumlah byte fisik (terkompresi) dengan usia lebih dari 90 hari
TIME_TRAVEL_PHYSICAL_BYTES INT64 Jumlah byte fisik (terkompresi) yang digunakan oleh penyimpanan perjalanan waktu (data yang dihapus atau diubah)
FAIL_SAFE_PHYSICAL_BYTES INT64 Jumlah byte fisik (terkompresi) yang digunakan oleh penyimpanan gagal aman (data yang dihapus atau diubah)
TABLE_TYPE STRING Jenis tabel. Misalnya, `EXTERNAL` atau `BASE TABLE`

Contoh

Contoh 1:

Contoh berikut menunjukkan total byte logis yang ditagih untuk project saat ini.

SELECT
  SUM(total_logical_bytes) AS total_logical_bytes
FROM
  `region-REGION`.INFORMATION_SCHEMA.TABLE_STORAGE;

Hasilnya mirip dengan berikut ini:

+---------------------+
| total_logical_bytes |
+---------------------+
| 971329178274633     |
+---------------------+
Contoh 2:

Contoh berikut menunjukkan cara memperkirakan perbedaan harga per set data antara model penagihan logis dan fisik selama 30 hari ke depan. Contoh ini mengasumsikan bahwa penggunaan penyimpanan mendatang bersifat konstan selama 30 hari ke depan sejak kueri dijalankan. Perlu diperhatikan bahwa perkiraan dibatasi untuk tabel dasar. Perkiraan tidak mencakup semua jenis tabel lainnya dalam set data.

Harga yang digunakan dalam variabel harga untuk kueri ini adalah untuk region us-central1. Jika Anda ingin menjalankan kueri ini untuk wilayah lain, perbarui variabel harga dengan tepat. Lihat Harga penyimpanan untuk mengetahui informasi harga.

  1. Buka halaman BigQuery di Konsol Google Cloud.

    Buka halaman BigQuery

  2. Masukkan kueri GoogleSQL berikut di kotak Query editor. INFORMATION_SCHEMA memerlukan sintaksis GoogleSQL. GoogleSQL adalah sintaksis default di Konsol Google Cloud.

    DECLARE active_logical_gib_price FLOAT64 DEFAULT 0.02;
    DECLARE long_term_logical_gib_price FLOAT64 DEFAULT 0.01;
    DECLARE active_physical_gib_price FLOAT64 DEFAULT 0.04;
    DECLARE long_term_physical_gib_price FLOAT64 DEFAULT 0.02;
    
    WITH
     storage_sizes AS (
       SELECT
         table_schema AS dataset_name,
         -- Logical
         SUM(IF(deleted=false, active_logical_bytes, 0)) / power(1024, 3) AS active_logical_gib,
         SUM(IF(deleted=false, long_term_logical_bytes, 0)) / power(1024, 3) AS long_term_logical_gib,
         -- Physical
         SUM(active_physical_bytes) / power(1024, 3) AS active_physical_gib,
         SUM(active_physical_bytes - time_travel_physical_bytes) / power(1024, 3) AS active_no_tt_physical_gib,
         SUM(long_term_physical_bytes) / power(1024, 3) AS long_term_physical_gib,
         -- Restorable previously deleted physical
         SUM(time_travel_physical_bytes) / power(1024, 3) AS time_travel_physical_gib,
         SUM(fail_safe_physical_bytes) / power(1024, 3) AS fail_safe_physical_gib,
       FROM
         `region-REGION`.INFORMATION_SCHEMA.TABLE_STORAGE_BY_PROJECT
       WHERE total_physical_bytes > 0
         -- Base the forecast on base tables only for highest precision results
         AND table_type  = 'BASE TABLE'
         GROUP BY 1
     )
    SELECT
      dataset_name,
      -- Logical
      ROUND(active_logical_gib, 2) AS active_logical_gib,
      ROUND(long_term_logical_gib, 2) AS long_term_logical_gib,
      -- Physical
      ROUND(active_physical_gib, 2) AS active_physical_gib,
      ROUND(long_term_physical_gib, 2) AS long_term_physical_gib,
      ROUND(time_travel_physical_gib, 2) AS time_travel_physical_gib,
      ROUND(fail_safe_physical_gib, 2) AS fail_safe_physical_gib,
      -- Compression ratio
      ROUND(SAFE_DIVIDE(active_logical_gib, active_no_tt_physical_gib), 2) AS active_compression_ratio,
      ROUND(SAFE_DIVIDE(long_term_logical_gib, long_term_physical_gib), 2) AS long_term_compression_ratio,
      -- Forecast costs logical
      ROUND(active_logical_gib * active_logical_gib_price, 2) AS forecast_active_logical_cost,
      ROUND(long_term_logical_gib * long_term_logical_gib_price, 2) AS forecast_long_term_logical_cost,
      -- Forecast costs physical
      ROUND((active_no_tt_physical_gib + time_travel_physical_gib + fail_safe_physical_gib) * active_physical_gib_price, 2) AS forecast_active_physical_cost,
      ROUND(long_term_physical_gib * long_term_physical_gib_price, 2) AS forecast_long_term_physical_cost,
      -- Forecast costs total
      ROUND(((active_logical_gib * active_logical_gib_price) + (long_term_logical_gib * long_term_logical_gib_price)) -
         (((active_no_tt_physical_gib + time_travel_physical_gib + fail_safe_physical_gib) * active_physical_gib_price) + (long_term_physical_gib * long_term_physical_gib_price)), 2) AS forecast_total_cost_difference
    FROM
      storage_sizes
    ORDER BY
      (forecast_active_logical_cost + forecast_active_physical_cost) DESC;
  3. Klik Run.

Hasilnya mirip dengan berikut ini:

+--------------+--------------------+-----------------------+---------------------+------------------------+--------------------------+-----------------------------+------------------------------+----------------------------------+-------------------------------+----------------------------------+--------------------------------+
| dataset_name | active_logical_gib | long_term_logical_gib | active_physical_gib | long_term_physical_gib | active_compression_ratio | long_term_compression_ratio | forecast_active_logical_cost | forecaset_long_term_logical_cost | forecast_active_physical_cost | forecast_long_term_physical_cost | forecast_total_cost_difference |
+--------------+--------------------+-----------------------+---------------------+------------------------+--------------------------+-----------------------------+------------------------------+----------------------------------+-------------------------------+----------------------------------+--------------------------------+
| dataset1     |               10.0 |                  10.0 |                 1.0 |                    1.0 |                     10.0 |                        10.0 |                          0.2 |                              0.1 |                          0.04 |                             0.02 |                           0.24 |

Membuat daftar tabel dalam set data

Anda dapat membuat daftar tabel dalam set data dengan cara berikut:

  • Menggunakan Konsol Google Cloud.
  • Menggunakan perintah bq ls alat command line bq.
  • Memanggil metode API tables.list.
  • Menggunakan library klien.

Izin yang diperlukan

Setidaknya, untuk membuat daftar tabel dalam set data, Anda harus diberi izin bigquery.tables.list. Peran IAM yang telah ditetapkan berikut menyertakan izin bigquery.tables.list:

  • bigquery.user
  • bigquery.metadataViewer
  • bigquery.dataViewer
  • bigquery.dataEditor
  • bigquery.dataOwner
  • bigquery.admin

Untuk mengetahui informasi selengkapnya tentang peran dan izin IAM di BigQuery, baca Kontrol akses.

Membuat daftar tabel

Untuk membuat daftar tabel dalam set data:

Konsol

  1. Di Konsol Google Cloud, pada panel navigasi, klik set data Anda untuk meluaskannya. Ini akan menampilkan tabel dan tampilan dalam set data.

  2. Scroll melalui daftar untuk melihat tabel di set data. Tabel dan tampilan diidentifikasi dengan ikon yang berbeda.

bq

  1. Di konsol Google Cloud, aktifkan Cloud Shell.

    Aktifkan Cloud Shell

    Di bagian bawah Google Cloud Console, Cloud Shell sesi akan terbuka dan menampilkan perintah command line. Cloud Shell adalah lingkungan shell dengan Google Cloud CLI yang sudah terinstal, dan dengan nilai yang sudah ditetapkan untuk project Anda saat ini. Diperlukan waktu beberapa detik untuk melakukan inisialisasi sesi.

  2. Berikan perintah bq ls. Flag --format dapat digunakan untuk mengontrol output. Jika Anda mencantumkan tabel di project selain project default Anda, tambahkan ID project ke set data dalam format berikut: project_id:dataset.

    Flag tambahan mencakup:

    • --max_results atau -n: Bilangan bulat yang menunjukkan jumlah hasil maksimum. Nilai defaultnya adalah 50.
    bq ls \
    --format=pretty \
    --max_results integer \
    project_id:dataset

    Dengan keterangan:

    • integer adalah bilangan bulat yang mewakili jumlah tabel yang akan dicantumkan.
    • project_id adalah ID project Anda.
    • dataset adalah nama set data.

    Saat Anda menjalankan perintah, kolom Type akan menampilkan TABLE atau VIEW. Contoh:

    +-------------------------+-------+----------------------+-------------------+
    |         tableId         | Type  |        Labels        | Time Partitioning |
    +-------------------------+-------+----------------------+-------------------+
    | mytable                 | TABLE | department:shipping  |                   |
    | myview                  | VIEW  |                      |                   |
    +-------------------------+-------+----------------------+-------------------+
    

    Contoh:

    Masukkan perintah berikut untuk mencantumkan tabel dalam set data mydataset di project default Anda.

       bq ls --format=pretty mydataset

    Masukkan perintah berikut untuk menampilkan lebih dari output default 50 tabel dari mydataset. mydataset ada dalam project default Anda.

       bq ls --format=pretty --max_results 60 mydataset

    Masukkan perintah berikut untuk mencantumkan tabel dalam set data mydataset di myotherproject.

       bq ls --format=pretty myotherproject:mydataset

API

Untuk mencantumkan tabel menggunakan API, panggil metode tables.list.

C#

Sebelum mencoba contoh ini, ikuti petunjuk penyiapan C# di Panduan memulai BigQuery menggunakan library klien. Untuk mengetahui informasi selengkapnya, lihat Dokumentasi referensi BigQuery C# API.

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


using Google.Cloud.BigQuery.V2;
using System;
using System.Collections.Generic;
using System.Linq;

public class BigQueryListTables
{
    public void ListTables(
        string projectId = "your-project-id",
        string datasetId = "your_dataset_id"
    )
    {
        BigQueryClient client = BigQueryClient.Create(projectId);
        // Retrieve list of tables in the dataset
        List<BigQueryTable> tables = client.ListTables(datasetId).ToList();
        // Display the results
        if (tables.Count > 0)
        {
            Console.WriteLine($"Tables in dataset {datasetId}:");
            foreach (var table in tables)
            {
                Console.WriteLine($"\t{table.Reference.TableId}");
            }
        }
        else
        {
            Console.WriteLine($"{datasetId} does not contain any tables.");
        }
    }
}

Go

Sebelum mencoba contoh ini, ikuti petunjuk penyiapan Go di Panduan memulai BigQuery menggunakan library klien. Untuk mengetahui informasi selengkapnya, lihat Dokumentasi referensi BigQuery Go API.

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

import (
	"context"
	"fmt"
	"io"

	"cloud.google.com/go/bigquery"
	"google.golang.org/api/iterator"
)

// listTables demonstrates iterating through the collection of tables in a given dataset.
func listTables(w io.Writer, projectID, datasetID string) error {
	// projectID := "my-project-id"
	// datasetID := "mydataset"
	ctx := context.Background()
	client, err := bigquery.NewClient(ctx, projectID)
	if err != nil {
		return fmt.Errorf("bigquery.NewClient: %v", err)
	}
	defer client.Close()

	ts := client.Dataset(datasetID).Tables(ctx)
	for {
		t, err := ts.Next()
		if err == iterator.Done {
			break
		}
		if err != nil {
			return err
		}
		fmt.Fprintf(w, "Table: %q\n", t.TableID)
	}
	return nil
}

Java

Sebelum mencoba contoh ini, ikuti petunjuk penyiapan Java di Panduan memulai BigQuery menggunakan library klien. Untuk mengetahui informasi selengkapnya, lihat Dokumentasi referensi BigQuery Java API.

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

import com.google.api.gax.paging.Page;
import com.google.cloud.bigquery.BigQuery;
import com.google.cloud.bigquery.BigQuery.TableListOption;
import com.google.cloud.bigquery.BigQueryException;
import com.google.cloud.bigquery.BigQueryOptions;
import com.google.cloud.bigquery.DatasetId;
import com.google.cloud.bigquery.Table;

public class ListTables {

  public static void runListTables() {
    // TODO(developer): Replace these variables before running the sample.
    String projectId = "bigquery-public-data";
    String datasetName = "samples";
    listTables(projectId, datasetName);
  }

  public static void listTables(String projectId, String datasetName) {
    try {
      // Initialize client that will be used to send requests. This client only needs to be created
      // once, and can be reused for multiple requests.
      BigQuery bigquery = BigQueryOptions.getDefaultInstance().getService();

      DatasetId datasetId = DatasetId.of(projectId, datasetName);
      Page<Table> tables = bigquery.listTables(datasetId, TableListOption.pageSize(100));
      tables.iterateAll().forEach(table -> System.out.print(table.getTableId().getTable() + "\n"));

      System.out.println("Tables listed successfully.");
    } catch (BigQueryException e) {
      System.out.println("Tables were not listed. Error occurred: " + e.toString());
    }
  }
}

Node.js

Sebelum mencoba contoh ini, ikuti petunjuk penyiapan Node.js di Panduan memulai BigQuery menggunakan library klien. Untuk mengetahui informasi selengkapnya, lihat Dokumentasi referensi BigQuery Node.js API.

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

// Import the Google Cloud client library
const {BigQuery} = require('@google-cloud/bigquery');
const bigquery = new BigQuery();

async function listTables() {
  // Lists tables in 'my_dataset'.

  /**
   * TODO(developer): Uncomment the following lines before running the sample.
   */
  // const datasetId = 'my_dataset';

  // List all tables in the dataset
  const [tables] = await bigquery.dataset(datasetId).getTables();

  console.log('Tables:');
  tables.forEach(table => console.log(table.id));
}

PHP

Sebelum mencoba contoh ini, ikuti petunjuk penyiapan PHP di Panduan memulai BigQuery menggunakan library klien. Untuk mengetahui informasi selengkapnya, lihat Dokumentasi referensi BigQuery PHP API.

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

use Google\Cloud\BigQuery\BigQueryClient;

/** Uncomment and populate these variables in your code */
// $projectId  = 'The Google project ID';
// $datasetId  = 'The BigQuery dataset ID';

$bigQuery = new BigQueryClient([
    'projectId' => $projectId,
]);
$dataset = $bigQuery->dataset($datasetId);
$tables = $dataset->tables();
foreach ($tables as $table) {
    print($table->id() . PHP_EOL);
}

Python

Sebelum mencoba contoh ini, ikuti petunjuk penyiapan Python di Panduan memulai BigQuery menggunakan library klien. Untuk mengetahui informasi selengkapnya, lihat Dokumentasi referensi BigQuery Python API.

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


from google.cloud import bigquery

# Construct a BigQuery client object.
client = bigquery.Client()

# TODO(developer): Set dataset_id to the ID of the dataset that contains
#                  the tables you are listing.
# dataset_id = 'your-project.your_dataset'

tables = client.list_tables(dataset_id)  # Make an API request.

print("Tables contained in '{}':".format(dataset_id))
for table in tables:
    print("{}.{}.{}".format(table.project, table.dataset_id, table.table_id))

Ruby

Sebelum mencoba contoh ini, ikuti petunjuk penyiapan Ruby di Panduan memulai BigQuery menggunakan library klien. Untuk mengetahui informasi selengkapnya, lihat Dokumentasi referensi BigQuery Ruby API.

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

require "google/cloud/bigquery"

def list_tables dataset_id = "your_dataset_id"
  bigquery = Google::Cloud::Bigquery.new
  dataset  = bigquery.dataset dataset_id

  puts "Tables in dataset #{dataset_id}:"
  dataset.tables.each do |table|
    puts "\t#{table.table_id}"
  end
end

Keamanan tabel

Untuk mengontrol akses ke tabel di BigQuery, lihat Pengantar kontrol akses tabel.

Langkah selanjutnya

Cobalah sendiri

Jika Anda baru menggunakan Google Cloud, buat akun untuk mengevaluasi performa BigQuery dalam skenario dunia nyata. Pelanggan baru mendapatkan kredit gratis senilai $300 untuk menjalankan, menguji, dan men-deploy workload.

Coba BigQuery gratis