PARTITIONS-Ansicht

Die Ansicht INFORMATION_SCHEMA.PARTITIONS enthält eine Zeile für jede Partition.

Zum Abfragen der Ansicht INFORMATION_SCHEMA.PARTITIONS ist auf 1.000 Tabellen beschränkt. Wenn Sie Daten zu Partitionen auf Projektebene abrufen möchten, können Sie die Abfrage in mehrere Abfragen aufteilen und die Ergebnisse dann zusammenführen. Wenn Sie das Limit überschreiten, erhalten Sie möglicherweise eine Fehlermeldung wie diese:

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
Ersetzen Sie Folgendes:

  • 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, in der der Partitionstyp aus dem Feld partition_id extrahiert und Partitionsinformationen für den öffentlichen Datensatz bigquery-public-data.covid19_usafacts auf Tabellenebene zusammengefasst werden:

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