Visualizzazione PARTITIONS
La visualizzazione INFORMATION_SCHEMA.PARTITIONS
contiene una riga per ogni partizione.
L'esecuzione di query sulla visualizzazione INFORMATION_SCHEMA.PARTITIONS
è limitata a 1000 tabelle. Per ottenere i dati sulle partizioni a livello di progetto, puoi dividere la
query in più query e poi unire i risultati. Se superi il limite,
potresti riscontrare un errore simile al seguente:
INFORMATION_SCHEMA.PARTITIONS query attempted to read too many tables. Please add more restrictive filters.
Autorizzazioni obbligatorie
Per eseguire query sulla visualizzazione INFORMATION_SCHEMA.PARTITIONS
, devi disporre delle seguenti
autorizzazioni Identity and Access Management (IAM):
bigquery.tables.get
bigquery.tables.list
Ognuno dei seguenti ruoli IAM predefiniti include le autorizzazioni precedenti:
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 visualizzazione INFORMATION_SCHEMA.PARTITIONS
, i risultati della query
in genere contengono una riga per ogni partizione. L'eccezione si verifica quando nella partizione __UNPARTITIONED__
è presente una combinazione di dati del livello di archiviazione a lungo termine e attivo. In questo caso,
la visualizzazione restituisce due righe per la partizione __UNPARTITIONED__
, una per ogni
livello di archiviazione.
La vista INFORMATION_SCHEMA.PARTITIONS
ha lo schema seguente:
Nome colonna | Tipo di dati | Valore |
---|---|---|
TABLE_CATALOG |
STRING |
L'ID progetto del progetto che contiene la tabella |
TABLE_SCHEMA |
STRING |
Il nome del set di dati che contiene la tabella, indicato anche come
datasetId |
TABLE_NAME |
STRING |
Il nome della tabella, noto anche come 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
valori NULL 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'ultima volta che i dati sono stati scritti nella partizione. Viene utilizzato per calcolare l'idoneità di una partizione all'archiviazione a lungo termine. Dopo 90 giorni, la partizione passa automaticamente dall'archiviazione attiva all'archiviazione a lungo termine. Per ulteriori informazioni, consulta la pagina relativa ai prezzi dello spazio di archiviazione BigQuery. Questo campo viene aggiornato quando i dati vengono inseriti, caricati, trasmessi in streaming o modificati all'interno della partizione. Le modifiche che comportano l'eliminazione di record potrebbero non essere riflesse. |
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 le query con un qualificatore del set di dati, devi disporre delle autorizzazioni per il set di dati. Per saperne di più, consulta la sezione Sintassi. La tabella seguente spiega gli ambiti di regione e risorsa per questa visualizzazione:
Nome vista | Ambito risorsa | Ambito 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 Trusted Cloud progetto. Se non specificato, viene utilizzato il progetto predefinito. -
DATASET_ID
: l'ID del tuo set di dati. Per maggiori informazioni, vedi 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 di 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
Il seguente esempio crea una colonna che estrae il tipo di partizione dal campo
partition_id
e aggrega le informazioni sulla partizione a livello di tabella
per il set di dati pubblico 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;
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 | +-----------------+----------------+--------------------+---------------------+-----------------+-------------------------+--------------------------------+