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 |
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 | +-----------------+----------------+--------------------+---------------------+-----------------+-------------------------+--------------------------------+