visualizzazione PARTITIONS
La vista INFORMATION_SCHEMA.PARTITIONS
contiene una riga per ogni partizione.
La query sulla vista INFORMATION_SCHEMA.PARTITIONS
è limitata a 1000
tabelle. Per ottenere i dati sulle partizioni a livello di progetto, puoi suddividere
una query in più query e poi unisci i risultati. Se superi il limite,
potrebbe verificarsi un errore simile al seguente:
INFORMATION_SCHEMA.PARTITIONS query attempted to read too many tables. Please add more restrictive filters.
Autorizzazioni obbligatorie
Per eseguire una query sulla vista INFORMATION_SCHEMA.PARTITIONS
, è necessario quanto segue
Autorizzazioni IAM (Identity and Access Management):
bigquery.tables.get
bigquery.tables.getData
bigquery.tables.list
Ciascuno dei seguenti ruoli IAM predefiniti include autorizzazioni:
roles/bigquery.admin
roles/bigquery.dataEditor
roles/bigquery.dataViewer
Per ulteriori informazioni sulle autorizzazioni BigQuery, consulta Controllo dell'accesso con IAM.
Schema
Quando esegui una query sulla vista INFORMATION_SCHEMA.PARTITIONS
, i risultati
di solito contengono una riga per ogni partizione. Fanno eccezione i casi in cui
una combinazione di dati del livello di archiviazione a lungo termine e attivi
__UNPARTITIONED__
partizione. In questo caso,
la vista restituisce due righe per la partizione __UNPARTITIONED__
, una per ogni
livello di archiviazione.
La vista INFORMATION_SCHEMA.PARTITIONS
ha il seguente schema:
Nome colonna | Tipo di dati | Valore |
---|---|---|
TABLE_CATALOG |
STRING |
L'ID del progetto che contiene la tabella |
TABLE_SCHEMA |
STRING |
Il nome del set di dati che contiene la tabella, chiamato anche
datasetId |
TABLE_NAME |
STRING |
Il nome della tabella, chiamato anche tableId |
PARTITION_ID |
STRING |
L'ID di una singola partizione. Per le tabelle non partizionate, il valore è
NULL . Per le tabelle partizionate che contengono righe con
NULL valori nella colonna di partizionamento, il valore è
__NULL__ . |
TOTAL_ROWS |
INTEGER |
Il numero totale di righe nella partizione |
TOTAL_LOGICAL_BYTES |
INTEGER |
Il numero totale di byte logici nella partizione |
LAST_MODIFIED_TIME |
TIMESTAMP |
L'ora in cui i dati sono stati scritti più di recente nella partizione |
STORAGE_TIER |
STRING |
Il livello di archiviazione della partizione:
|
Ambito e sintassi
Le query su questa vista devono includere un qualificatore del set di dati. Per con un qualificatore del set di dati, devi disporre delle autorizzazioni per il set di dati. Per ulteriori informazioni consulta la sezione Sintassi. La tabella seguente illustra gli ambiti delle risorse e delle regioni per questa vista:
Nome vista | Ambito risorsa | Ambito della regione |
---|---|---|
[PROJECT_ID.]DATASET_ID.INFORMATION_SCHEMA.PARTITIONS |
Livello del set di dati | Posizione del set di dati |
- (Facoltativo)
PROJECT_ID
: l'ID del tuo progetto Google Cloud. Se non specificato, viene utilizzato il progetto predefinito. DATASET_ID
: l'ID del set di dati. Per ulteriori informazioni consulta la sezione Qualificatore del set di dati.
Esempi
Esempio 1
L'esempio seguente calcola il numero di byte logici utilizzati da ogni
livello di archiviazione in tutte le tabelle in un set di dati denominato mydataset
:
SELECT storage_tier, SUM(total_logical_bytes) AS logical_bytes FROM `mydataset.INFORMATION_SCHEMA.PARTITIONS` GROUP BY storage_tier;
I risultati sono simili ai seguenti:
+--------------+----------------+ | storage_tier | logical_bytes | +--------------+----------------+ | LONG_TERM | 1311495144879 | | ACTIVE | 66757629240 | +--------------+----------------+
Esempio 2
L'esempio seguente crea una colonna che estrae il tipo di partizione dal
partition_id
e aggrega le informazioni sulla partizione a livello di tabella
per il set di dati bigquery-public-data.covid19_usafacts
pubblico:
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;
I risultati sono simili ai seguenti:
+-----------------+----------------+--------------------+---------------------+-----------------+-------------------------+--------------------------------+ | 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 | +-----------------+----------------+--------------------+---------------------+-----------------+-------------------------+--------------------------------+