Tampilan PARTITIONS

Tampilan INFORMATION_SCHEMA.PARTITIONS berisi satu baris untuk setiap partisi.

Kueri tampilan INFORMATION_SCHEMA.PARTITIONS dibatasi hingga 1.000 tabel. Untuk mendapatkan data tentang partisi di level project, Anda dapat membagi kueri menjadi beberapa kueri, lalu menggabungkan hasilnya. Jika melebihi batas, Anda dapat mengalami error seperti berikut:

INFORMATION_SCHEMA.PARTITIONS query attempted to read too many tables. Please add more restrictive filters.

Izin yang diperlukan

Untuk membuat kueri tabel virtual INFORMATION_SCHEMA.PARTITIONS, Anda memerlukan izin Identity and Access Management (IAM) berikut:

  • bigquery.tables.get
  • bigquery.tables.getData
  • bigquery.tables.list

Setiap peran IAM yang telah ditetapkan berikut mencakup izin sebelumnya:

  • roles/bigquery.admin
  • roles/bigquery.dataEditor
  • roles/bigquery.dataViewer

Untuk mengetahui informasi selengkapnya tentang izin BigQuery, lihat Kontrol akses dengan IAM.

Skema

Saat Anda membuat kueri tampilan INFORMATION_SCHEMA.PARTITIONS, hasil kueri biasanya berisi satu baris untuk setiap partisi. Pengecualian adalah jika ada kombinasi data tingkat penyimpanan aktif dan jangka panjang di partisi __UNPARTITIONED__. Dalam hal ini, tampilan akan menampilkan dua baris untuk partisi __UNPARTITIONED__, satu untuk setiap tingkat penyimpanan.

Tampilan INFORMATION_SCHEMA.PARTITIONS memiliki skema berikut:

Nama kolom Jenis data Nilai
TABLE_CATALOG STRING Project ID dari project yang berisi tabel
TABLE_SCHEMA STRING Nama set data yang berisi tabel juga disebut sebagai datasetId
TABLE_NAME STRING Nama tabel, juga disebut sebagai tableId
PARTITION_ID STRING ID partisi tunggal. Untuk tabel yang tidak dipartisi, nilainya adalah NULL. Untuk tabel yang dipartisi yang berisi baris dengan nilai NULL dalam kolom partisi, nilainya adalah __NULL__.
TOTAL_ROWS INTEGER Jumlah total baris dalam partisi
TOTAL_LOGICAL_BYTES INTEGER Jumlah total byte logis dalam partisi
LAST_MODIFIED_TIME TIMESTAMP Waktu ketika data terakhir ditulis ke partisi
STORAGE_TIER STRING Tingkat penyimpanan partisi:

Cakupan dan sintaksis

Kueri terhadap tampilan ini harus menyertakan penentu set data. Untuk kueri dengan penentu set data, Anda harus memiliki izin untuk set data. Untuk informasi selengkapnya, lihat Sintaksis. Tabel berikut menjelaskan cakupan region dan resource untuk tampilan ini:

Nama tabel virtual Cakupan resource Cakupan region
[PROJECT_ID.]DATASET_ID.INFORMATION_SCHEMA.PARTITIONS Level set data Lokasi set data
Ganti kode berikut:

  • Opsional: PROJECT_ID: ID project Google Cloud Anda. Jika tidak ditentukan, project default akan digunakan.

    • DATASET_ID: ID set data Anda. Untuk mengetahui informasi selengkapnya, lihat Penentu set data.

    Contoh

    Contoh 1

    Contoh berikut menghitung jumlah byte logis yang digunakan oleh setiap tingkat penyimpanan di semua tabel dalam set data bernama mydataset:

    SELECT
      storage_tier,
      SUM(total_logical_bytes) AS logical_bytes
    FROM
      `mydataset.INFORMATION_SCHEMA.PARTITIONS`
    GROUP BY
      storage_tier;

    Hasilnya akan terlihat seperti berikut:

    +--------------+----------------+
    | storage_tier | logical_bytes  |
    +--------------+----------------+
    | LONG_TERM    |  1311495144879 |
    | ACTIVE       |    66757629240 |
    +--------------+----------------+
    

    Contoh 2

    Contoh berikut akan membuat kolom yang mengekstrak jenis partisi dari kolom partition_id dan menggabungkan informasi partisi di tingkat tabel untuk set data bigquery-public-data.covid19_usafacts publik:

    SELECT
      table_name,
      CASE
        WHEN regexp_contains(partition_id, '^[0-9]{4}$') THEN 'YEAR'
        WHEN regexp_contains(partition_id, '^[0-9]{6}$') THEN 'MONTH'
        WHEN regexp_contains(partition_id, '^[0-9]{8}$') THEN 'DAY'
        WHEN regexp_contains(partition_id, '^[0-9]{10}$') THEN 'HOUR'
        END AS partition_type,
      min(partition_id) AS earliest_partition,
      max(partition_id) AS latest_partition_id,
      COUNT(partition_id) AS partition_count,
      sum(total_logical_bytes) AS sum_total_logical_bytes,
      max(last_modified_time) AS max_last_updated_time
    FROM `bigquery-public-data.covid19_usafacts.INFORMATION_SCHEMA.PARTITIONS`
    GROUP BY 1, 2;

    Hasilnya akan terlihat seperti berikut:

    +-----------------+----------------+--------------------+---------------------+-----------------+-------------------------+--------------------------------+
    | table_name      | partition_type | earliest_partition | latest_partition_id | partition_count | sum_total_logical_bytes | max_last_updated_time          |
    +--------------+-------------------+--------------------+---------------------+-----------------+-------------------------+--------------------------------+
    | confirmed_cases | DAY            | 20221204           | 20221213            | 10              | 26847302                | 2022-12-13 00:09:25.604000 UTC |
    | deaths          | DAY            | 20221204           | 20221213            | 10              | 26847302                | 2022-12-13 00:09:24.709000 UTC |
    | summary         | DAY            | 20221204           | 20221213            | 10              | 241285338               | 2022-12-13 00:09:27.496000 UTC |
    +-----------------+----------------+--------------------+---------------------+-----------------+-------------------------+--------------------------------+