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
Dabei gilt:

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