Recupero dei metadati della tabella tramite INFORMATION_SCHEMA
Le seguenti viste INFORMATION_SCHEMA
contengono i metadati della tabella:
TABLES
eTABLE_OPTIONS
per i metadati relativi alle tabelleCOLUMNS
eCOLUMN_FIELD_PATHS
per i metadati relativi a colonne e campiPARTITIONS
per i metadati sulle partizioni della tabella (anteprima)TABLE_STORAGE
per i metadati sull'utilizzo corrente dello spazio di archiviazione della tabella (anteprima)TABLE_STORAGE_TIMELINE_BY_PROJECT
eTABLE_STORAGE_TIMELINE_BY_ORGANIZATION
per i metadati sull'utilizzo storico di spazio di archiviazione nelle tabelle (anteprima)
Le viste spazio di archiviazione della tabella consentono di osservare facilmente il consumo corrente e storico di archiviazione, inclusi i byte logici, compressi e di manutenzione. Queste informazioni possono aiutarti, ad esempio, a pianificare la crescita futura e a comprendere i pattern di aggiornamento per le tabelle, anche per quelle che non dispongono di una colonna timestamp last_update
come parte dello schema.
TABLES
e TABLE_OPTIONS
contengono anche informazioni generali sulle viste.
Per informazioni dettagliate, esegui una query sulla visualizzazione
INFORMATION_SCHEMA.VIEWS
.
Prima di iniziare
Concedi ruoli IAM (Identity and Access Management) che consentono agli utenti le autorizzazioni necessarie per eseguire ogni attività in questo documento.
Autorizzazioni obbligatorie
Utilizza la seguente tabella per comprendere quali autorizzazioni IAM sono necessarie per eseguire query su INFORMATION_SCHEMA
viste.
Tieni presente che, per la visualizzazione INFORMATION_SCHEMA.TABLE_STORAGE_TIMELINE_BY_ORGANIZATION
, devi disporre delle autorizzazioni concesse a livello di organizzazione. Le altre viste richiedono solo le autorizzazioni concesse a livello di progetto. Per ulteriori
informazioni, consulta
Gestire l'accesso ai progetti, alle cartelle e all'organizzazione.
Visualizza | Autorizzazioni | Ruoli che concedono queste autorizzazioni |
---|---|---|
TABLES |
bigquery.tables.get |
roles/bigquery.admin |
TABLE_OPTIONS |
bigquery.tables.get |
roles/bigquery.admin |
COLUMNS |
bigquery.tables.get |
roles/bigquery.admin |
COLUMN_FIELD_PATHS |
bigquery.tables.get |
roles/bigquery.admin |
PARTITIONS |
bigquery.tables.get |
roles/bigquery.admin |
TABLE_STORAGE |
bigquery.tables.get |
roles/bigquery.admin |
TABLE_STORAGE_TIMELINE_BY_ORGANIZATION TABLE_STORAGE_TIMELINE_BY_PROJECT |
bigquery.tables.get |
roles/bigquery.admin |
Per ulteriori informazioni sulle autorizzazioni granulari per BigQuery, consulta i ruoli e autorizzazioni.
Syntax
Le query relative a una di queste viste devono avere un set di dati o un qualificatore di area geografica.
-- Returns metadata for tables in a single dataset.
SELECT * FROM myDataset.INFORMATION_SCHEMA.TABLES;
-- Returns metadata for tables in a region.
SELECT * FROM region-us.INFORMATION_SCHEMA.TABLES;
Per le query con un qualificatore di set di dati, devi disporre delle autorizzazioni per il set di dati. Per le query con un qualificatore di area geografica, devi disporre delle autorizzazioni per il progetto.
TABLES
visualizzazione
Quando esegui una query sulla vista INFORMATION_SCHEMA.TABLES
, i risultati della query contengono una riga per ogni tabella o vista in un set di dati. Per informazioni dettagliate sulle
viste, esegui una query sulla vista
INFORMATION_SCHEMA.VIEWS
.
La vista INFORMATION_SCHEMA.TABLES
ha il seguente schema:
Nome colonna | Tipo di dati | Valore |
---|---|---|
table_catalog |
STRING |
L'ID del progetto che contiene il set di dati. |
table_schema |
STRING |
Il nome del set di dati che contiene la tabella o la vista. Chiamato anche datasetId . |
table_name |
STRING |
Il nome della tabella o della visualizzazione. Chiamato anche tableId . |
table_type |
STRING |
Il tipo di tabella; uno dei seguenti:
|
is_insertable_into |
STRING |
YES o NO , a seconda che la tabella
supporti le istruzioni DML INSERT |
is_typed |
STRING |
Il valore è sempre NO |
creation_time |
TIMESTAMP |
Ora di creazione della tabella |
ddl |
STRING |
L'istruzione DDL che può essere utilizzata per ricreare la tabella, come CREATE TABLE o CREATE VIEW |
clone_time |
TIMESTAMP |
Per i cloni di una tabella (anteprima), il momento in cui la tabella di base è stata clonata per creare questa tabella. Se è stato utilizzato il tempo di viaggio, questo campo contiene il timestamp relativo al viaggio nel tempo. In caso contrario, il campo clone_time è uguale al
campo creation_time . Applicabile solo alle
tabelle con table_type impostato su CLONE .
|
base_table_catalog |
STRING |
Per i cloni di una tabella (Anteprima),
il progetto della tabella di base. Applicabile solo alle
tabelle con table_type impostato su CLONE .
|
base_table_schema |
STRING |
Per i cloni di una tabella (Anteprima), il set di dati della tabella di base. Applicabile solo alle tabelle con
table_type impostato su CLONE . |
base_table_name |
STRING |
Per i cloni di tabella
(Anteprima),
il nome della tabella di base. Applicabile solo alle tabelle con
table_type impostato su CLONE . |
default_collation_name |
STRING |
Il nome della specifica di confronto predefinita
se esistente; in caso contrario, NULL .
|
Query di esempio
Esempio 1:
L'esempio seguente recupera i metadati della tabella per tutte le tabelle nel set di dati denominato mydataset
. La query seleziona tutte le colonne dalla visualizzazione
INFORMATION_SCHEMA.TABLES
ad eccezione di is_typed
, che è riservata per
l'utilizzo futuro, e ddl
, che è nascosta dalle query SELECT *
. I metadati restituiti sono relativi a tutte le tabelle in mydataset
nel progetto predefinito.
mydataset
contiene le seguenti tabelle:
mytable1
: una tabella BigQuery standardmyview1
: una vista BigQuery
Per eseguire la query su un progetto diverso da quello predefinito, aggiungi l'ID progetto al set di dati nel seguente formato: `project_id`.dataset.INFORMATION_SCHEMA.view
, ad esempio `myproject`.mydataset.INFORMATION_SCHEMA.TABLES
.
Per eseguire la query:
Console
Apri la pagina BigQuery in Cloud Console.
Inserisci la seguente query SQL standard nella casella Editor query.
INFORMATION_SCHEMA
richiede la sintassi SQL standard. SQL standard è la sintassi predefinita in Cloud Console.SELECT * EXCEPT(is_typed) FROM mydataset.INFORMATION_SCHEMA.TABLES
Fai clic su Esegui.
bq
Utilizza il comando bq query
e specifica la sintassi SQL standard usando il flag --nouse_legacy_sql
o --use_legacy_sql=false
. La sintassi SQL standard è obbligatoria per le query INFORMATION_SCHEMA
.
Per eseguire la query, inserisci:
bq query --nouse_legacy_sql \ 'SELECT * EXCEPT(is_typed) FROM mydataset.INFORMATION_SCHEMA.TABLES'
Il risultato dovrebbe essere simile all'esempio seguente. Per una migliore leggibilità, alcune colonne sono escluse dai risultati.
+----------------+---------------+----------------+------------+--------------------+---------------------+---------------------------------------------+ | table_catalog | table_schema | table_name | table_type | is_insertable_into | creation_time | ddl | +----------------+---------------+----------------+------------+--------------------+---------------------+---------------------------------------------+ | myproject | mydataset | mytable1 | BASE TABLE | YES | 2018-10-29 20:34:44 | CREATE TABLE `myproject.mydataset.mytable1` | | | | | | | | ( | | | | | | | | id INT64 | | | | | | | | ); | | myproject | mydataset | myview1 | VIEW | NO | 2018-12-29 00:19:20 | CREATE VIEW `myproject.mydataset.myview1` | | | | | | | | AS SELECT 100 as id; | +----------------+---------------+----------------+------------+--------------------+---------------------+---------------------------------------------+
Esempio 2:
L'esempio seguente recupera tutte le tabelle di tipo BASE TABLE
dalla
visualizzazione INFORMATION_SCHEMA.TABLES
. La colonna is_typed
è esclusa e la colonna ddl
è nascosta. I metadati restituiti servono per le tabelle in
mydataset
nel progetto predefinito.
Per eseguire la query su un progetto diverso da quello predefinito, aggiungi l'ID progetto al set di dati nel seguente formato: `project_id`.dataset.INFORMATION_SCHEMA.view
, ad esempio `myproject`.mydataset.INFORMATION_SCHEMA.TABLES
.
Per eseguire la query:
Console
Apri la pagina BigQuery in Cloud Console.
Inserisci la seguente query SQL standard nella casella Editor query.
INFORMATION_SCHEMA
richiede la sintassi SQL standard. SQL standard è la sintassi predefinita in Cloud Console.SELECT * EXCEPT(is_typed) FROM mydataset.INFORMATION_SCHEMA.TABLES WHERE table_type="BASE TABLE"
Fai clic su Esegui.
bq
Utilizza il comando bq query
e specifica la sintassi SQL standard usando il flag --nouse_legacy_sql
o --use_legacy_sql=false
. La sintassi SQL standard è obbligatoria per le query INFORMATION_SCHEMA
.
Per eseguire la query, inserisci:
bq query --nouse_legacy_sql \ 'SELECT * EXCEPT(is_typed) FROM mydataset.INFORMATION_SCHEMA.TABLES WHERE table_type="BASE TABLE"'
Il risultato dovrebbe essere simile all'esempio seguente. Per una migliore leggibilità, alcune colonne sono escluse dai risultati.
+----------------+---------------+----------------+------------+--------------------+---------------------+---------------------------------------------+
| table_catalog | table_schema | table_name | table_type | is_insertable_into | creation_time | ddl |
+----------------+---------------+----------------+------------+--------------------+---------------------+---------------------------------------------+
| myproject | mydataset | mytable1 | BASE TABLE | YES | 2018-10-31 22:40:05 | CREATE TABLE myproject.mydataset.mytable1
|
| | | | | | | ( |
| | | | | | | id INT64 |
| | | | | | | ); |
+----------------+---------------+----------------+------------+--------------------+---------------------+---------------------------------------------+
Esempio 3:
L'esempio seguente recupera le colonne table_name
e ddl
dalla visualizzazione INFORMATION_SCHEMA.TABLES
per la tabella population_by_zip_2010
nel set di dati
census_bureau_usa
. Questo set di dati fa parte del programma del set di dati pubblico BigQuery.
Poiché la tabella su cui stai eseguendo le query si trova in un altro progetto, aggiungi l'ID progetto al set di dati nel seguente formato:
`project_id`.dataset.INFORMATION_SCHEMA.view
.
In questo esempio, il valore è
`bigquery-public-data`.census_bureau_usa.INFORMATION_SCHEMA.TABLES
.
Per eseguire la query:
Console
Apri la pagina BigQuery in Cloud Console.
Inserisci la seguente query SQL standard nella casella Editor query.
INFORMATION_SCHEMA
richiede la sintassi SQL standard. SQL standard è la sintassi predefinita in Cloud Console.SELECT table_name, ddl FROM `bigquery-public-data`.census_bureau_usa.INFORMATION_SCHEMA.TABLES WHERE table_name="population_by_zip_2010"
Fai clic su Esegui.
bq
Utilizza il comando bq query
e specifica la sintassi SQL standard usando il flag --nouse_legacy_sql
o --use_legacy_sql=false
. La sintassi SQL standard è obbligatoria per le query INFORMATION_SCHEMA
.
Per eseguire la query, inserisci:
bq query --nouse_legacy_sql \ 'SELECT table_name, ddl FROM `bigquery-public-data`.census_bureau_usa.INFORMATION_SCHEMA.TABLES WHERE table_name="population_by_zip_2010"'
Il risultato dovrebbe essere simile all'esempio seguente:
+------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | table_name | ddl | +------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | population_by_zip_2010 | CREATE TABLE `bigquery-public-data.census_bureau_usa.population_by_zip_2010` | | | ( | | | geo_id STRING OPTIONS(description="Geo code"), | | | zipcode STRING NOT NULL OPTIONS(description="Five digit ZIP Code Tabulation Area Census Code"), | | | population INT64 OPTIONS(description="The total count of the population for this segment."), | | | minimum_age INT64 OPTIONS(description="The minimum age in the age range. If null, this indicates the row as a total for male, female, or overall population."), | | | maximum_age INT64 OPTIONS(description="The maximum age in the age range. If null, this indicates the row as having no maximum (such as 85 and over) or the row is a total of the male, female, or overall population."), | | | gender STRING OPTIONS(description="male or female. If empty, the row is a total population summary.") | | | ) | | | OPTIONS( | | | labels=[("freebqcovid", "")] | | | ); | +------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
TABLE_OPTIONS
visualizzazione
Quando esegui una query sulla vista INFORMATION_SCHEMA.TABLE_OPTIONS
, i risultati della query contengono una riga per ogni opzione, per ogni tabella o vista in un set di dati. Per
informazioni dettagliate sulle
viste, esegui una query sulla vista
INFORMATION_SCHEMA.VIEWS
.
La vista INFORMATION_SCHEMA.TABLE_OPTIONS
ha il seguente schema:
Nome colonna | Tipo di dati | Valore |
---|---|---|
TABLE_CATALOG |
STRING |
L'ID del progetto che contiene il set di dati |
TABLE_SCHEMA |
STRING |
Il nome del set di dati che contiene la tabella o la vista denominata
datasetId |
TABLE_NAME |
STRING |
Nome della tabella o della visualizzazione, detto anche tableId |
OPTION_NAME |
STRING |
Uno dei valori del nome nella tabella delle opzioni |
OPTION_TYPE |
STRING |
Uno dei valori del tipo di dati nella tabella delle opzioni |
OPTION_VALUE |
STRING |
Una delle opzioni di valore nella tabella delle opzioni |
Tabella opzioni
OPTION_NAME |
OPTION_TYPE |
OPTION_VALUE |
---|---|---|
partition_expiration_days |
FLOAT64 |
La durata predefinita, in giorni, di tutte le partizioni in una tabella partizionata |
expiration_timestamp |
FLOAT64 |
L'ora di scadenza di questa tabella |
kms_key_name |
STRING |
Il nome della chiave Cloud KMS utilizzata per criptare la tabella |
friendly_name |
STRING |
Il nome descrittivo della tabella |
description |
STRING |
Una descrizione della tabella |
labels |
ARRAY<STRUCT<STRING, STRING>> |
Un array di STRUCT che rappresenta le etichette nella tabella |
require_partition_filter |
BOOL |
Se le query sulla tabella richiedono un filtro di partizionamento |
enable_refresh |
BOOL |
Indica se l'aggiornamento automatico è abilitato per una vista materializzata |
refresh_interval_minutes |
FLOAT64 |
Frequenza di aggiornamento di una vista materializzata |
Per le tabelle esterne sono possibili anche le seguenti opzioni:
Opzioni | |
---|---|
allow_jagged_rows |
Se Si applica ai dati CSV. |
allow_quoted_newlines |
Se Si applica ai dati CSV. |
compression |
Il tipo di compressione dell'origine dati. I valori supportati includono:
Si applica ai dati CSV e JSON. |
enable_logical_types |
Se Si applica ai dati Avro. |
encoding |
La codifica dei caratteri dei dati. I valori supportati includono:
Si applica ai dati CSV. |
field_delimiter |
Separatore per i campi in un file CSV. Si applica ai dati CSV. |
format |
Il formato dei dati esterni.
I valori supportati includono: Il valore |
decimal_target_types |
Determina come convertire un tipo di Esempio: |
json_extension |
Per i dati JSON, indica un particolare formato di interscambio JSON. Se non specificato, BigQuery legge i dati come record JSON generici. I valori supportati includono: |
hive_partition_uri_prefix |
Un prefisso comune per tutti gli URI di origine prima dell'inizio della codifica della chiave di partizione. Si applica solo alle tabelle esterne partizionate in hive. Si applica ai dati Avro, CSV, JSON, Parquet e ORC. Esempio: |
ignore_unknown_values |
Se Si applica ai dati CSV e JSON. |
max_bad_records |
Il numero massimo di record non validi da ignorare durante la lettura dei dati. Applicabile a dati CSV, JSON e Fogli. |
null_marker |
La stringa che rappresenta i valori Si applica ai dati CSV. |
projection_fields |
Un elenco di proprietà dell'entità da caricare. Si applica ai dati di Datastore. |
quote |
La stringa utilizzata per citare le sezioni di dati in un file CSV. Se i dati contengono caratteri di nuova riga tra virgolette, imposta anche la proprietà Si applica ai dati CSV. |
require_hive_partition_filter |
Se Si applica ai dati Avro, CSV, JSON, Parquet e ORC. |
sheet_range |
Intervallo di un foglio di lavoro di Fogli da cui eseguire la query. Si applica ai dati di Fogli. Esempio: |
skip_leading_rows |
Il numero di righe nella parte superiore di un file da saltare durante la lettura dei dati. Si applica ai dati in formato CSV e Fogli. |
uris |
Un array di URI completi per le località dei dati esterni. Esempio: |
Query di esempio
Esempio 1:
L'esempio seguente recupera le scadenze predefinite delle tabelle per tutte
le tabelle in mydataset
nel tuo progetto predefinito (myproject
) eseguendo una query sulla
visualizzazione INFORMATION_SCHEMA.TABLE_OPTIONS
.
Per eseguire la query su un progetto diverso da quello predefinito, aggiungi l'ID progetto al set di dati nel seguente formato: `project_id`.dataset.INFORMATION_SCHEMA.view
, ad esempio `myproject`.mydataset.INFORMATION_SCHEMA.TABLE_OPTIONS
.
Per eseguire la query:
Console
Apri la pagina BigQuery in Cloud Console.
Inserisci la seguente query SQL standard nella casella Editor query.
INFORMATION_SCHEMA
richiede la sintassi SQL standard. SQL standard è la sintassi predefinita in Cloud Console.SELECT * FROM mydataset.INFORMATION_SCHEMA.TABLE_OPTIONS WHERE option_name="expiration_timestamp"
Fai clic su Esegui.
bq
Utilizza il comando bq query
e specifica la sintassi SQL standard usando il flag --nouse_legacy_sql
o --use_legacy_sql=false
. La sintassi SQL standard è obbligatoria per le query INFORMATION_SCHEMA
.
Per eseguire la query, inserisci:
bq query --nouse_legacy_sql \ 'SELECT * FROM mydataset.INFORMATION_SCHEMA.TABLE_OPTIONS WHERE option_name="expiration_timestamp"'
Il risultato dovrebbe essere simile all'esempio seguente:
+----------------+---------------+------------+----------------------+-------------+--------------------------------------+ | table_catalog | table_schema | table_name | option_name | option_type | option_value | +----------------+---------------+------------+----------------------+-------------+--------------------------------------+ | myproject | mydataset | mytable1 | expiration_timestamp | TIMESTAMP | TIMESTAMP "2020-01-16T21:12:28.000Z" | | myproject | mydataset | mytable2 | expiration_timestamp | TIMESTAMP | TIMESTAMP "2021-01-01T21:12:28.000Z" | +----------------+---------------+------------+----------------------+-------------+--------------------------------------+
Esempio 2:
L'esempio seguente recupera i metadati relativi a tutte le tabelle in mydataset
che
contengono dati di test. La query utilizza i valori dell'opzione description
per trovare tabelle che contengono "test" in qualsiasi punto della descrizione. mydataset
è nel tuo progetto predefinito (myproject
).
Per eseguire la query su un progetto diverso da quello predefinito, aggiungi l'ID progetto al set di dati nel seguente formato:
`project_id`.dataset.INFORMATION_SCHEMA.view
;
ad esempio,
`myproject`.mydataset.INFORMATION_SCHEMA.TABLE_OPTIONS
.
Per eseguire la query:
Console
Apri la pagina BigQuery in Cloud Console.
Inserisci la seguente query SQL standard nella casella Editor query.
INFORMATION_SCHEMA
richiede la sintassi SQL standard. SQL standard è la sintassi predefinita in Cloud Console.SELECT * FROM mydataset.INFORMATION_SCHEMA.TABLE_OPTIONS WHERE option_name="description" AND option_value LIKE "%test%"
Fai clic su Esegui.
bq
Utilizza il comando bq query
e specifica la sintassi SQL standard usando il flag --nouse_legacy_sql
o --use_legacy_sql=false
. La sintassi SQL standard è obbligatoria per le query INFORMATION_SCHEMA
.
Per eseguire la query, inserisci:
bq query --nouse_legacy_sql \ 'SELECT * FROM mydataset.INFORMATION_SCHEMA.TABLE_OPTIONS WHERE option_name="description" AND option_value LIKE "%test%"'
Il risultato dovrebbe essere simile all'esempio seguente:
+----------------+---------------+------------+-------------+-------------+--------------+ | table_catalog | table_schema | table_name | option_name | option_type | option_value | +----------------+---------------+------------+-------------+-------------+--------------+ | myproject | mydataset | mytable1 | description | STRING | "test data" | | myproject | mydataset | mytable2 | description | STRING | "test data" | +----------------+---------------+------------+-------------+-------------+--------------+
COLUMNS
visualizzazione
Quando esegui una query sulla vista INFORMATION_SCHEMA.COLUMNS
, i risultati della query contengono una riga per ogni colonna (campo) di una tabella.
La vista INFORMATION_SCHEMA.COLUMNS
ha il seguente schema:
Nome colonna | Tipo di dati | Valore |
---|---|---|
TABLE_CATALOG |
STRING |
L'ID del progetto che contiene il set di dati |
TABLE_SCHEMA |
STRING |
Il nome del set di dati che contiene la tabella, detto anche datasetId |
TABLE_NAME |
STRING |
Nome della tabella o della visualizzazione, detto anche tableId |
COLUMN_NAME |
STRING |
Il nome della colonna. |
ORDINAL_POSITION |
INT64 |
L'offset con 1 indice della colonna all'interno della tabella; se è una pseudo-colonna come _PARTITIONTIME o _PARTITIONDATE, il valore è NULL |
IS_NULLABLE |
STRING |
YES o NO a seconda che la modalità della colonna consenta o meno i valori NULL |
DATA_TYPE |
STRING |
Il tipo di dati SQL standard della colonna. |
IS_GENERATED |
STRING |
Il valore è sempre NEVER |
GENERATION_EXPRESSION |
STRING |
Il valore è sempre NULL |
IS_STORED |
STRING |
Il valore è sempre NULL |
IS_HIDDEN |
STRING |
YES o NO a seconda che la colonna sia una pseudo-colonna come _PARTITIONTIME o _PARTITIONDATE |
IS_UPDATABLE |
STRING |
Il valore è sempre NULL |
IS_SYSTEM_DEFINED |
STRING |
YES o NO a seconda che la colonna sia una pseudo-colonna come _PARTITIONTIME o _PARTITIONDATE |
IS_PARTITIONING_COLUMN |
STRING |
YES o NO a seconda che la colonna sia o meno una colonna di partizionamento |
CLUSTERING_ORDINAL_POSITION |
INT64 |
L'offset indicizzato a 1 della colonna all'interno delle colonne di clustering della tabella; il valore è NULL se la tabella non è una tabella in cluster. |
COLLATION_NAME |
STRING |
Il nome della specifica di confronto
se esistente; in caso contrario, il valore NULL Se viene inviato il messaggio STRING o ARRAY<STRING> , viene restituita
la specifica di confronto, se esistente. In caso contrario,
viene restituito NULL
|
Query di esempio
L'esempio seguente recupera i metadati dalla vista INFORMATION_SCHEMA.COLUMNS
per la tabella population_by_zip_2010
nel set di dati
census_bureau_usa
. Questo set di dati fa parte del programma del set di dati pubblico BigQuery.
Poiché la tabella su cui stai eseguendo le query si trova in un altro progetto, nel progetto bigquery-public-data
, aggiungi l'ID progetto al set di dati nel seguente formato: `project_id`.dataset.INFORMATION_SCHEMA.view
; ad esempio, `bigquery-public-data`.census_bureau_usa.INFORMATION_SCHEMA.TABLES
.
Le seguenti colonne sono escluse dai risultati della query perché al momento sono prenotate per un uso futuro:
IS_GENERATED
GENERATION_EXPRESSION
IS_STORED
IS_UPDATABLE
Per eseguire la query:
Console
Apri la pagina BigQuery in Cloud Console.
Inserisci la seguente query SQL standard nella casella Editor query.
INFORMATION_SCHEMA
richiede la sintassi SQL standard. SQL standard è la sintassi predefinita in Cloud Console.SELECT * EXCEPT(is_generated, generation_expression, is_stored, is_updatable) FROM `bigquery-public-data`.census_bureau_usa.INFORMATION_SCHEMA.COLUMNS WHERE table_name="population_by_zip_2010"
Fai clic su Esegui.
bq
Utilizza il comando bq query
e specifica la sintassi SQL standard usando il flag --nouse_legacy_sql
o --use_legacy_sql=false
. La sintassi SQL standard è obbligatoria per le query INFORMATION_SCHEMA
.
Per eseguire la query, inserisci:
bq query --nouse_legacy_sql \ 'SELECT * EXCEPT(is_generated, generation_expression, is_stored, is_updatable) FROM `bigquery-public-data`.census_bureau_usa.INFORMATION_SCHEMA.COLUMNS WHERE table_name="population_by_zip_2010"'
Il risultato dovrebbe essere simile all'esempio seguente. Per una migliore leggibilità, alcune colonne sono escluse dai risultati.
+------------------------+-------------+------------------+-------------+-----------+-----------+-------------------+------------------------+-----------------------------+ | table_name | column_name | ordinal_position | is_nullable | data_type | is_hidden | is_system_defined | is_partitioning_column | clustering_ordinal_position | +------------------------+-------------+------------------+-------------+-----------+-----------+-------------------+------------------------+-----------------------------+ | population_by_zip_2010 | zipcode | 1 | NO | STRING | NO | NO | NO | NULL | | population_by_zip_2010 | geo_id | 2 | YES | STRING | NO | NO | NO | NULL | | population_by_zip_2010 | minimum_age | 3 | YES | INT64 | NO | NO | NO | NULL | | population_by_zip_2010 | maximum_age | 4 | YES | INT64 | NO | NO | NO | NULL | | population_by_zip_2010 | gender | 5 | YES | STRING | NO | NO | NO | NULL | | population_by_zip_2010 | population | 6 | YES | INT64 | NO | NO | NO | NULL | +------------------------+-------------+------------------+-------------+-----------+-----------+-------------------+------------------------+-----------------------------+
COLUMN_FIELD_PATHS
visualizzazione
I risultati delle query contengono una riga per ogni colonna
nidetta all'interno di una colonna RECORD
(o
STRUCT
).
Quando esegui una query sulla vista INFORMATION_SCHEMA.COLUMN_FIELD_PATHS
, i risultati delle query contengono una riga per ogni colonna nidizzata all'interno di una colonna RECORD
(o STRUCT
).
La vista INFORMATION_SCHEMA.COLUMN_FIELD_PATHS
ha il seguente schema:
Nome colonna | Tipo di dati | Valore |
---|---|---|
TABLE_CATALOG |
STRING |
L'ID del progetto che contiene il set di dati |
TABLE_SCHEMA |
STRING |
Il nome del set di dati che contiene la tabella, detto anche datasetId |
TABLE_NAME |
STRING |
Nome della tabella o della visualizzazione, detto anche tableId |
COLUMN_NAME |
STRING |
Il nome della colonna. |
FIELD_PATH |
STRING |
Percorso di una colonna nidizzata in una colonna"RECORD"o"STRUCT" |
DATA_TYPE |
STRING |
Il tipo di dati SQL standard della colonna. |
DESCRIPTION |
STRING |
La descrizione della colonna |
COLLATION_NAME |
STRING |
Il nome della specifica di confronto
se esistente; altrimenti, NULL Se viene passato un campo STRING , ARRAY<STRING> o
STRING in un STRUCT , la specifica
di restituzione viene restituita se esiste; altrimenti
viene restituito NULL
|
Query di esempio
L'esempio seguente recupera i metadati dalla vista
INFORMATION_SCHEMA.COLUMN_FIELD_PATHS
per la tabella commits
nel
set di dati github_repos
.
Questo set di dati fa parte del programma del set di dati pubblico BigQuery.
Poiché la tabella su cui stai eseguendo le query si trova in un altro progetto, nel progetto bigquery-public-data
, aggiungi l'ID progetto al set di dati nel seguente formato: `project_id`.dataset.INFORMATION_SCHEMA.view
; ad esempio, `bigquery-public-data`.github_repos.INFORMATION_SCHEMA.COLUMN_FIELD_PATHS
.
La tabella commits
contiene le seguenti colonne nidificate, nidificate e ripetute:
author
: colonnaRECORD
nidificatacommitter
: colonnaRECORD
nidificatatrailer
: colonnaRECORD
nidificata e ripetutadifference
: colonnaRECORD
nidificata e ripetuta
La query recupererà i metadati sulle colonne author
e difference
.
Per eseguire la query:
Console
Apri la pagina BigQuery in Cloud Console.
Inserisci la seguente query SQL standard nella casella Editor query.
INFORMATION_SCHEMA
richiede la sintassi SQL standard. SQL standard è la sintassi predefinita in Cloud Console.SELECT * FROM `bigquery-public-data`.github_repos.INFORMATION_SCHEMA.COLUMN_FIELD_PATHS WHERE table_name="commits" AND column_name="author" OR column_name="difference"
Fai clic su Esegui.
bq
Utilizza il comando bq query
e specifica la sintassi SQL standard usando il flag --nouse_legacy_sql
o --use_legacy_sql=false
. La sintassi SQL standard è obbligatoria per le query INFORMATION_SCHEMA
.
Per eseguire la query, inserisci:
bq query --nouse_legacy_sql \ 'SELECT * FROM `bigquery-public-data`.github_repos.INFORMATION_SCHEMA.COLUMN_FIELD_PATHS WHERE table_name="commits" AND column_name="author" OR column_name="difference"'
Il risultato dovrebbe essere simile all'esempio seguente. Per una migliore leggibilità, alcune colonne sono escluse dai risultati.
+------------+-------------+---------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------+-------------+ | table_name | column_name | field_path | data_type | description | +------------+-------------+---------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------+-------------+ | commits | author | author | STRUCT<name STRING, email STRING, time_sec INT64, tz_offset INT64, date TIMESTAMP> | NULL | | commits | author | author.name | STRING | NULL | | commits | author | author.email | STRING | NULL | | commits | author | author.time_sec | INT64 | NULL | | commits | author | author.tz_offset | INT64 | NULL | | commits | author | author.date | TIMESTAMP | NULL | | commits | difference | difference | ARRAY<STRUCT<old_mode INT64, new_mode INT64, old_path STRING, new_path STRING, old_sha1 STRING, new_sha1 STRING, old_repo STRING, new_repo STRING>> | NULL | | commits | difference | difference.old_mode | INT64 | NULL | | commits | difference | difference.new_mode | INT64 | NULL | | commits | difference | difference.old_path | STRING | NULL | | commits | difference | difference.new_path | STRING | NULL | | commits | difference | difference.old_sha1 | STRING | NULL | | commits | difference | difference.new_sha1 | STRING | NULL | | commits | difference | difference.old_repo | STRING | NULL | | commits | difference | difference.new_repo | STRING | NULL | +------------+-------------+---------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------+-------------+
PARTITIONS
visualizzazione
Quando esegui una query sulla vista INFORMATION_SCHEMA.PARTITIONS
, i risultati della query contengono una riga per ogni partizione.
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, noto anche come datasetId |
TABLE_NAME |
STRING |
Il nome della tabella, noto anche come tableId |
PARTITION_ID |
STRING |
Un'unica partizione: ID. 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 |
TOTAL_BILLABLE_BYTES |
INTEGER |
Il numero totale di byte fatturabili nella partizione |
LAST_MODIFIED_TIME |
TIMESTAMP |
L'ora in cui i dati sono stati scritti più di recente nella partizione |
STORAGE_TIER |
STRING |
Livello di archiviazione della partizione:
|
Query di esempio
L'esempio seguente calcola la quantità di byte utilizzati da ogni livello di archiviazione
in tutte le tabelle di un set di dati denominato mydataset
.
Per eseguire la query:
Console
Apri la pagina BigQuery in Cloud Console.
Inserisci la seguente query SQL standard nella casella Editor query.
INFORMATION_SCHEMA
richiede la sintassi SQL standard. SQL standard è la sintassi predefinita in Cloud Console.SELECT storage_tier, SUM(total_billable_bytes) billable_bytes FROM `mydataset.INFORMATION_SCHEMA.PARTITIONS` GROUP BY storage_tier
Fai clic su Esegui.
bq
Utilizza il comando query
e specifica la sintassi SQL standard usando il flag
--nouse_legacy_sql
o --use_legacy_sql=false
. La sintassi SQL standard è obbligatoria per le query INFORMATION_SCHEMA
.
Per eseguire la query, inserisci:
bq query --nouse_legacy_sql \ 'SELECT storage_tier, SUM(total_billable_bytes) billable_bytes FROM `mydataset.INFORMATION_SCHEMA.PARTITIONS` GROUP BY storage_tier'
I risultati sono simili alla seguente tabella.
+--------------+----------------+ | storage_tier | billable_bytes | +--------------+----------------+ | LONG_TERM | 1311495144879 | | ACTIVE | 66757629240 | +--------------+----------------+
TABLE_STORAGE
visualizzazione
SELECT
CONCAT(v1.table_catalog, ":", v1.table_schema, ".", v1.table_name) AS unmodified_table_name,
FROM
`region-REGION`.INFORMATION_SCHEMA.TABLES v1
LEFT JOIN `region-REGION`.INFORMATION_SCHEMA.TABLE_STORAGE v2 ON v1.table_name = v2.table_name
WHERE v2.table_name IS NULL;
La vista INFORMATION_SCHEMA.TABLE_STORAGE
fornisce uno snapshot corrente dell'utilizzo dello spazio di archiviazione per tabelle e viste materializzate. Quando esegui una query sulla vista INFORMATION_SCHEMA.TABLE_STORAGE
, i risultati delle query contengono una riga per ogni tabella o vista materializzata. I dati in questa tabella non vengono conservati in tempo reale e potrebbero subire un ritardo di alcuni secondi o qualche minuto.
I dati delle viste sono suddivisi per area geografica, pertanto è necessario utilizzare un qualificatore di area geografica nelle query. Se non specifichi un progetto, viene utilizzato il progetto predefinito.
I seguenti esempi mostrano come restituire i dati da un progetto o un'area geografica.
Restituisce le informazioni di archiviazione per le tabelle in un progetto specificato:
SELECT * FROM myProject.`region-REGION`.INFORMATION_SCHEMA.TABLE_STORAGE;
Restituisce informazioni di archiviazione per le tabelle in un'area geografica specificata:
SELECT * FROM `region-REGION`.INFORMATION_SCHEMA.TABLE_STORAGE;
La vista INFORMATION_SCHEMA.TABLE_STORAGE
ha il seguente schema:
Nome colonna | Tipo di dati | Valore |
---|---|---|
PROJECT_ID |
STRING |
L'ID del progetto che contiene il set di dati |
PROJECT_NAME |
INT64 |
Il numero del progetto contenente il set di dati |
TABLE_SCHEMA |
STRING |
Il nome del set di dati che contiene la tabella o la vista materializzata, noto anche come datasetId |
TABLE_NAME |
STRING |
Il nome della tabella o della vista materializzata, noto anche come
tableId |
CREATION_TIME |
TIMESTAMP |
Ora di creazione della tabella |
TOTAL_ROWS |
INT64 |
Il numero totale di righe nella tabella o nella vista materializzata |
TOTAL_PARTITIONS |
INT64 |
Il numero di partizioni presenti nella tabella o nella vista materializzata. Le tabelle non partizionate restituiscono 0. |
TOTAL_LOGICAL_BYTES |
INT64 |
Numero totale di byte logici nella tabella o nella vista materializzata |
ACTIVE_LOGICAL_BYTES |
INT64 |
Numero di byte logici da meno di 90 giorni |
LONG_TERM_LOGICAL_BYTES |
INT64 |
Numero di byte logici risalenti a più di 90 giorni prima |
TOTAL_PHYSICAL_BYTES |
INT64 |
Numero totale di byte fisici utilizzati per l'archiviazione, inclusi byte attivi, a lungo termine e nel tempo (per le tabelle eliminate) |
ACTIVE_PHYSICAL_BYTES |
INT64 |
Numero di byte fisici precedenti a 90 giorni |
LONG_TERM_PHYSICAL_BYTES |
INT64 |
Numero di byte fisici precedenti a 90 giorni |
TIME_TRAVEL_PHYSICAL_BYTES |
INT64 |
Numero di byte fisici utilizzati dallo spazio di archiviazione per un viaggio nel tempo (dati eliminati o modificati) |
Esempi
L'esempio seguente mostra i progetti della tua organizzazione che attualmente utilizzano la maggiore quantità di spazio di archiviazione.
Per eseguire la query:
Console
Apri la pagina BigQuery in Cloud Console.
Inserisci la seguente query SQL standard nella casella Editor query.
INFORMATION_SCHEMA
richiede la sintassi SQL standard. SQL standard è la sintassi predefinita in Cloud Console.SELECT project_id, SUM(total_logical_bytes) AS total_logical_bytes FROM `region-REGION`.INFORMATION_SCHEMA.TABLE_STORAGE GROUP BY project_id ORDER BY total_logical_bytes DESC;
Fai clic su Esegui.
bq
Utilizza il comando bq query
e specifica la sintassi SQL standard usando il flag --nouse_legacy_sql
o --use_legacy_sql=false
. La sintassi SQL standard è obbligatoria per le query INFORMATION_SCHEMA
.
Per eseguire la query, inserisci:
bq query --nouse_legacy_sql \ 'SELECT project_id, SUM(total_logical_bytes) AS total_logical_bytes FROM `region-REGION`.INFORMATION_SCHEMA.TABLE_STORAGE GROUP BY project_id ORDER BY total_logical_bytes DESC;'
Il risultato dovrebbe essere simile all'esempio seguente:
+---------------------+---------------------+ | project_id | total_logical_bytes | +---------------------+---------------------+ | projecta | 971329178274633 | +---------------------+---------------------+ | projectb | 834638211024843 | +---------------------+---------------------+ | projectc | 562910385625126 | +---------------------+---------------------+
TABLE_STORAGE_TIMELINE_BY_
* visualizzazioni
Le visualizzazioni della sequenza temporale di archiviazione della tabella restituiscono una riga per ogni evento che attiva una modifica dello spazio di archiviazione per la tabella, ad esempio la scrittura, l'aggiornamento o l'eliminazione di una riga. Ciò significa che possono esserci più righe per una tabella in un solo giorno. Quando esegui una query su una vista per un intervallo di tempo, utilizza il timestamp più recente il giorno di interesse.
Sono disponibili le seguenti visualizzazioni della sequenza temporale di archiviazione della tabella:
INFORMATION_SCHEMA.TABLE_STORAGE_TIMELINE_BY_PROJECT
restituisce le informazioni per tutte le tabelle nel progetto corrente o specificato.INFORMATION_SCHEMA.TABLE_STORAGE_TIMELINE_BY_ORGANIZATION
restituisce le informazioni per tutte le tabelle nella cartella principale del progetto corrente o specificato, inclusi i progetti nelle sottocartelle.
I dati delle viste sono suddivisi per area geografica, pertanto è necessario utilizzare un qualificatore di area geografica nelle query.
Le visualizzazioni della sequenza temporale di archiviazione tabella hanno il seguente schema:
Nome colonna | Tipo di dati | Valore |
---|---|---|
TIMESTAMP |
TIMESTAMP |
Timestamp relativo all'ultimo calcolo dello spazio di archiviazione. Il ricalcolo viene attivato dalle modifiche ai dati nella tabella. |
DELETED |
BOOLEAN |
Indica se la tabella è stata eliminata o meno |
PROJECT_ID |
STRING |
L'ID del progetto che contiene il set di dati |
PROJECT_NAME |
INT64 |
Il numero del progetto contenente il set di dati |
TABLE_SCHEMA |
STRING |
Il nome del set di dati che contiene la tabella o la vista materializzata, noto anche come datasetId |
TABLE_NAME |
STRING |
Il nome della tabella o della vista materializzata, noto anche come
tableId |
CREATION_TIME |
TIMESTAMP |
Ora di creazione della tabella |
TOTAL_ROWS |
INT64 |
Il numero totale di righe nella tabella o nella vista materializzata |
TOTAL_PARTITIONS |
INT64 |
Il numero di partizioni della tabella o della vista materializzata. Le tabelle non partizionate restituiranno 0. |
TOTAL_LOGICAL_BYTES |
INT64 |
Numero totale di byte logici nella tabella o nella vista materializzata |
ACTIVE_LOGICAL_BYTES |
INT64 |
Numero di byte logici da meno di 90 giorni |
LONG_TERM_LOGICAL_BYTES |
INT64 |
Numero di byte logici risalenti a più di 90 giorni prima |
TOTAL_PHYSICAL_BYTES |
INT64 |
Numero totale di byte fisici utilizzati per l'archiviazione, inclusi byte attivi, a lungo termine e nel tempo (per le tabelle eliminate) |
ACTIVE_PHYSICAL_BYTES |
INT64 |
Numero di byte fisici precedenti a 90 giorni |
LONG_TERM_PHYSICAL_BYTES |
INT64 |
Numero di byte fisici precedenti a 90 giorni |
TIME_TRAVEL_PHYSICAL_BYTES |
INT64 |
Numero di byte fisici utilizzati dallo spazio di archiviazione per un viaggio nel tempo (dati eliminati o modificati) |
Esempi
Esempio 1:
L'esempio seguente mostra le tabelle che utilizzano la maggiore quantità di spazio di archiviazione in un set di dati specifico.
Per eseguire la query:
Console
Apri la pagina BigQuery in Cloud Console.
Inserisci la seguente query SQL standard nella casella Editor query.
INFORMATION_SCHEMA
richiede la sintassi SQL standard. SQL standard è la sintassi predefinita in Cloud Console.SELECT timestamp AS start_time, table_name, total_logical_bytes FROM `region-REGION`.INFORMATION_SCHEMA.TABLE_STORAGE_TIMELINE_BY_PROJECT WHERE table_schema = "TABLE_SCHEMA" AND table_name = "TABLE_NAME" ORDER BY start_time DESC;
Fai clic su Esegui.
bq
Utilizza il comando bq query
e specifica la sintassi SQL standard usando il flag --nouse_legacy_sql
o --use_legacy_sql=false
. La sintassi SQL standard è obbligatoria per le query INFORMATION_SCHEMA
.
Per eseguire la query, inserisci:
bq query --nouse_legacy_sql \ 'SELECT timestamp AS start_time, table_name, total_logical_bytes FROM `region-REGION`.INFORMATION_SCHEMA.TABLE_STORAGE_TIMELINE_BY_PROJECT WHERE table_schema = "TABLE_SCHEMA" AND table_name = "TABLE_NAME" ORDER BY start_time DESC;'
Il risultato dovrebbe essere simile all'esempio seguente:
------------------------+---------------------+----------------------+ | start_time | table_name | total_logical_bytes | +-----------------------+---------------------+----------------------+ | 2022-03-30 17:39:54 | table1 | 322 | | 2022-03-30 17:39:54 | table2 | 1657 | | 2022-03-30 17:39:53 | table1 | 320 | | 2022-03-30 17:39:53 | table2 | 1655 | +-----------------------+---------------------+----------------------+
Esempio 2:
L'esempio seguente mostra la somma dello spazio di archiviazione fisico utilizzato da ciascun progetto nella tua organizzazione per un determinato momento.
Per eseguire la query:
Console
Apri la pagina BigQuery in Cloud Console.
Inserisci la seguente query SQL standard nella casella Editor query.
INFORMATION_SCHEMA
richiede la sintassi SQL standard. SQL standard è la sintassi predefinita in Cloud Console.WITH most_recent_records as ( SELECT project_id, table_schema, table_name, MAX(timestamp) as max_timestamp FROM `region-REGION`.INFORMATION_SCHEMA.TABLE_STORAGE_TIMELINE_BY_ORGANIZATION WHERE timestamp <= "TIMESTAMP" GROUP BY project_id, table_schema, table_name ) SELECT i_s.project_id, SUM(i_s.total_physical_bytes) AS TotalPhysicalBytes FROM `region-REGION`.INFORMATION_SCHEMA.TABLE_STORAGE_TIMELINE_BY_ORGANIZATION as i_s JOIN most_recent_records ON i_s.project_id=most_recent_records.project_id AND i_s.table_schema=most_recent_records.table_schema AND i_s.table_name=most_recent_records.table_name AND i_s.timestamp = most_recent_records.max_timestamp GROUP BY project_id;
Fai clic su Esegui.
bq
Utilizza il comando bq query
e specifica la sintassi SQL standard usando il flag --nouse_legacy_sql
o --use_legacy_sql=false
. La sintassi SQL standard è obbligatoria per le query INFORMATION_SCHEMA
.
Per eseguire la query, inserisci:
bq query --nouse_legacy_sql \ 'WITH most_recent_records as ( SELECT project_id, table_schema, table_name, MAX(timestamp) as max_timestamp FROM `region-REGION`.INFORMATION_SCHEMA.TABLE_STORAGE_TIMELINE_BY_ORGANIZATION WHERE timestamp <= "TIMESTAMP" GROUP BY project_id, table_schema, table_name ) SELECT i_s.project_id, SUM(i_s.total_physical_bytes) AS TotalPhysicalBytes FROM `region-REGION`.INFORMATION_SCHEMA.TABLE_STORAGE_TIMELINE_BY_ORGANIZATION as i_s JOIN most_recent_records ON i_s.project_id=most_recent_records.project_id AND i_s.table_schema=most_recent_records.table_schema AND i_s.table_name=most_recent_records.table_name AND i_s.timestamp = most_recent_records.max_timestamp GROUP BY project_id;'
Il risultato dovrebbe essere simile all'esempio seguente:
-----------------+------------------------+ | project_id | TotalPhysicalBytes | +----------------+------------------------+ | projecta | 3844 | | projectb | 16022778 | | projectc | 8934009 | +----------------+------------------------+