PARTITIONS-Ansicht
Die INFORMATION_SCHEMA.PARTITIONS
-Ansicht enthält eine Zeile für jede Partition.
Zum Abfragen der Ansicht INFORMATION_SCHEMA.PARTITIONS
ist auf 1.000 Tabellen beschränkt. Um die Daten zu Partitionen auf Projektebene abzurufen, können Sie die Abfrage in mehrere Abfragen aufteilen und dann die Ergebnisse zusammenführen. Wenn Sie das Limit überschreiten, kann ein Fehler wie der folgende auftreten:
INFORMATION_SCHEMA.PARTITIONS query attempted to read too many tables. Please add more restrictive filters.
Erforderliche Berechtigungen
Zum Abfragen der INFORMATION_SCHEMA.PARTITIONS
-Ansicht benötigen Sie folgende IAM-Berechtigungen (Identity and Access Management):
bigquery.tables.get
bigquery.tables.getData
bigquery.tables.list
Die folgenden vordefinierten IAM-Rollen enthalten jeweils die vorherigen Berechtigungen:
roles/bigquery.admin
roles/bigquery.dataEditor
roles/bigquery.dataViewer
Weitere Informationen zu BigQuery-Berechtigungen finden Sie unter Zugriffssteuerung mit IAM.
Schema
Wenn Sie die Ansicht INFORMATION_SCHEMA.PARTITIONS
abfragen, wird in den Abfrageergebnissen jede Partition in einer eigenen Zeile dargestellt. Eine Ausnahme liegt vor, wenn es
eine Kombination aus langfristigen und aktiven Daten der Speicherstufe
__UNPARTITIONED__
-Partition gibt. In diesem Fall gibt die Ansicht zwei Zeilen für die Partition __UNPARTITIONED__
zurück, eine für jede Speicherstufe.
Die Ansicht INFORMATION_SCHEMA.PARTITIONS
hat das folgende Schema:
Spaltenname | Datentyp | Wert |
---|---|---|
TABLE_CATALOG |
STRING |
Die Projekt-ID des Projekts, das die Tabelle enthält. |
TABLE_SCHEMA |
STRING |
Der Name des Datasets, das die Tabelle enthält (auch als datasetId bezeichnet) |
TABLE_NAME |
STRING |
Der Name der Tabelle, auch als tableId bezeichnet. |
PARTITION_ID |
STRING |
Die ID einer einzelnen Partition. Bei nicht partitionierten Tabellen beträgt der Wert NULL . Bei partitionierten Tabellen, die Zeilen mit NULL -Werten in der Partitionierungsspalte enthalten, beträgt der Wert __NULL__ . |
TOTAL_ROWS |
INTEGER |
Die Gesamtzahl der Zeilen in der Partition |
TOTAL_LOGICAL_BYTES |
INTEGER |
Die Gesamtzahl der logischen Byte in der Partition |
LAST_MODIFIED_TIME |
TIMESTAMP |
Der Zeitpunkt, zu dem die Daten zuletzt in die Partition geschrieben wurden |
STORAGE_TIER |
STRING |
Die Speicherstufe der Partition:
|
Bereich und Syntax
Für Abfragen dieser Ansicht muss ein Dataset-Qualifizierer verwendet werden. Für Abfragen mit einem Dataset-Qualifier benötigen Sie Berechtigungen für das Dataset. Weitere Informationen finden Sie unter Syntax. In der folgenden Tabelle werden die Regions- und Ressourcenbereiche für diese Ansicht erläutert:
Ansichtsname | Ressourcenbereich | Regionsbereich |
---|---|---|
[PROJECT_ID.]DATASET_ID.INFORMATION_SCHEMA.PARTITIONS |
Dataset-Ebene | Dataset-Standort |
- Optional:
PROJECT_ID
: die ID Ihres Google Cloud-Projekts. Wenn keine Angabe erfolgt, wird das Standardprojekt verwendet. DATASET_ID
: die ID Ihres Datasets. Weitere Informationen finden Sie unter Dataset-Qualifier.
Beispiele
Beispiel 1
Im folgenden Beispiel wird die Anzahl der logischen Byte berechnet, die von jeder Speicherstufe in allen Tabellen des Datasets mit Namen mydataset
verwendet werden:
SELECT storage_tier, SUM(total_logical_bytes) AS logical_bytes FROM `mydataset.INFORMATION_SCHEMA.PARTITIONS` GROUP BY storage_tier;
Die Ergebnisse sehen in etwa so aus:
+--------------+----------------+ | storage_tier | logical_bytes | +--------------+----------------+ | LONG_TERM | 1311495144879 | | ACTIVE | 66757629240 | +--------------+----------------+
Beispiel 2
Im folgenden Beispiel wird eine Spalte erstellt, die den Partitionstyp aus dem Feld partition_id
extrahiert und Partitionsinformationen auf Tabellenebene für das öffentliche Dataset bigquery-public-data.covid19_usafacts
aggregiert:
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;
Die Ergebnisse sehen in etwa so aus:
+-----------------+----------------+--------------------+---------------------+-----------------+-------------------------+--------------------------------+ | 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 | +-----------------+----------------+--------------------+---------------------+-----------------+-------------------------+--------------------------------+