「PARTITIONS」檢視畫面
INFORMATION_SCHEMA.PARTITIONS
檢視表中的每個分區都會有一列。
查詢 INFORMATION_SCHEMA.PARTITIONS
檢視畫面時,最多只能查詢 1000 個資料表。如要在專案層級取得分區資料,您可以將查詢分成多個查詢,然後合併結果。如果超過上限,可能會遇到類似下列內容的錯誤:
INFORMATION_SCHEMA.PARTITIONS query attempted to read too many tables. Please add more restrictive filters.
所需權限
如要查詢 INFORMATION_SCHEMA.PARTITIONS
檢視畫面,您必須具備下列 Identity and Access Management (IAM) 權限:
bigquery.tables.get
bigquery.tables.list
下列每個預先定義的 IAM 角色都包含上述權限:
roles/bigquery.admin
roles/bigquery.dataEditor
roles/bigquery.dataViewer
如要進一步瞭解 BigQuery 權限,請參閱「使用身分與存取權管理功能控管存取權」一文。
結構定義
查詢 INFORMATION_SCHEMA.PARTITIONS
檢視表時,查詢結果通常會為每個分區包含一個資料列。但如果 __UNPARTITIONED__
分區中同時有長期和使用中儲存層資料,則不在此限。在這種情況下,檢視畫面會為 __UNPARTITIONED__
分區傳回兩個資料列,每個儲存層各一個。
INFORMATION_SCHEMA.PARTITIONS
檢視表具有下列結構定義:
資料欄名稱 | 資料類型 | 值 |
---|---|---|
TABLE_CATALOG |
STRING |
包含資料表的專案的專案 ID |
TABLE_SCHEMA |
STRING |
資料表所屬資料集的名稱 (又稱為 datasetId ) |
TABLE_NAME |
STRING |
資料表的名稱 (又稱為 tableId ) |
PARTITION_ID |
STRING |
單一分區的 ID。如果是未分區的資料表,這個值為 NULL 。如果分區資料表在分區資料欄中包含 NULL 值的資料列,則值為 __NULL__ 。 |
TOTAL_ROWS |
INTEGER |
分區中的資料列總數 |
TOTAL_LOGICAL_BYTES |
INTEGER |
分區中的邏輯位元組總數 |
LAST_MODIFIED_TIME |
TIMESTAMP |
資料最近一次寫入分區的時間。系統會根據這個值,判斷分區是否符合長期儲存資格。90 天後,分割區會自動從動態儲存空間轉換為長期儲存空間。詳情請參閱 BigQuery 儲存空間定價一文。當資料在分區中插入、載入、串流或修改時,這個欄位就會更新。如果修改內容涉及刪除記錄,可能不會反映在資料副本中。 |
STORAGE_TIER |
STRING |
分區的儲存空間層級: |
範圍和語法
對這個檢視表執行的查詢必須包含資料集限定詞。如果是含有資料集限定符的查詢,您必須具備該資料集的權限。詳情請參閱「語法」。下表說明這個檢視畫面的區域和資源範圍:
檢視表名稱 | 資源範圍 | 區域範圍 |
---|---|---|
[PROJECT_ID.]DATASET_ID.INFORMATION_SCHEMA.PARTITIONS |
資料集層級 | 資料集位置 |
-
選用:
PROJECT_ID
:您的 Trusted Cloud 專案 ID。如未指定,系統會使用預設專案。 -
DATASET_ID
:資料集的 ID。詳情請參閱資料集限定符。
範例
範例 1
以下範例會計算名為 mydataset
的資料集中,所有資料表各儲存層使用的邏輯位元組數:
SELECT storage_tier, SUM(total_logical_bytes) AS logical_bytes FROM `mydataset.INFORMATION_SCHEMA.PARTITIONS` GROUP BY storage_tier;
結果類似下方:
+--------------+----------------+ | storage_tier | logical_bytes | +--------------+----------------+ | LONG_TERM | 1311495144879 | | ACTIVE | 66757629240 | +--------------+----------------+
示例 2
以下範例會建立資料欄,從 partition_id
欄位擷取分區類型,並在公開 bigquery-public-data.covid19_usafacts
資料集的資料表層級匯總分區資訊:
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;
結果類似下方:
+-----------------+----------------+--------------------+---------------------+-----------------+-------------------------+--------------------------------+ | 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 | +-----------------+----------------+--------------------+---------------------+-----------------+-------------------------+--------------------------------+