Vista PARTITIONS
La vista INFORMATION_SCHEMA.PARTITIONS
contiene una fila por cada partición.
Las consultas de la vista INFORMATION_SCHEMA.PARTITIONS
están limitadas a 1000 tablas. Para obtener los datos sobre las particiones a nivel de proyecto, puedes dividir la consulta en varias consultas y, a continuación, combinar los resultados. Si superas el límite, es posible que se produzca un error similar al siguiente:
INFORMATION_SCHEMA.PARTITIONS query attempted to read too many tables. Please add more restrictive filters.
Permisos obligatorios
Para consultar la vista INFORMATION_SCHEMA.PARTITIONS
, necesitas los siguientes permisos de gestión de identidades y accesos (IAM):
bigquery.tables.get
bigquery.tables.list
Cada uno de los siguientes roles de gestión de identidades y accesos predefinidos incluye los permisos anteriores:
roles/bigquery.admin
roles/bigquery.dataEditor
roles/bigquery.dataViewer
Para obtener más información sobre los permisos de BigQuery, consulta Control de acceso con gestión de identidades y accesos.
Esquema
Cuando consultas la vista INFORMATION_SCHEMA.PARTITIONS
, los resultados de la consulta suelen contener una fila por cada partición. La excepción se da cuando hay una combinación de datos de nivel de almacenamiento activo y a largo plazo en la partición __UNPARTITIONED__
. En ese caso, la vista devuelve dos filas para la partición __UNPARTITIONED__
, una por cada nivel de almacenamiento.
La vista INFORMATION_SCHEMA.PARTITIONS
tiene el siguiente esquema:
Nombre de la columna | Tipo de datos | Valor |
---|---|---|
TABLE_CATALOG |
STRING |
El ID del proyecto que contiene la tabla. |
TABLE_SCHEMA |
STRING |
El nombre del conjunto de datos que contiene la tabla, también denominado datasetId |
TABLE_NAME |
STRING |
El nombre de la tabla, también denominado tableId |
PARTITION_ID |
STRING |
ID de una sola partición. En las tablas sin particiones, el valor es NULL . En las tablas particionadas que contienen filas con valores NULL en la columna de partición, el valor es __NULL__ . |
TOTAL_ROWS |
INTEGER |
Número total de filas de la partición. |
TOTAL_LOGICAL_BYTES |
INTEGER |
Número total de bytes lógicos de la partición. |
LAST_MODIFIED_TIME |
TIMESTAMP |
La hora más reciente en la que se escribieron datos en la partición. Se usa para calcular si una partición cumple los requisitos para el almacenamiento a largo plazo. Transcurridos 90 días, la partición pasa automáticamente del almacenamiento activo al almacenamiento a largo plazo. Para obtener más información, consulta los precios del almacenamiento de BigQuery. Este campo se actualiza cuando se insertan, cargan, transmiten o modifican datos en la partición. Es posible que no se reflejen las modificaciones que impliquen la eliminación de registros. |
STORAGE_TIER |
STRING |
Nivel de almacenamiento de la partición:
|
Ámbito y sintaxis
Las consultas en esta vista deben incluir un calificador de conjunto de datos. En el caso de las consultas con un calificador de conjunto de datos, debes tener permisos para el conjunto de datos. Para obtener más información, consulta el artículo sobre la sintaxis. En la siguiente tabla se explican los ámbitos de región y de recurso de esta vista:
Nombre de la vista | Ámbito de los recursos | Ámbito de la región |
---|---|---|
[PROJECT_ID.]DATASET_ID.INFORMATION_SCHEMA.PARTITIONS |
Nivel del conjunto de datos | Ubicación del conjunto de datos |
-
Opcional:
PROJECT_ID
: el ID de tu Google Cloud proyecto. Si no se especifica, se usa el proyecto predeterminado. -
DATASET_ID
: el ID de tu conjunto de datos. Para obtener más información, consulta Calificador de conjunto de datos.
Ejemplos
Ejemplo 1
En el siguiente ejemplo se calcula el número de bytes lógicos utilizados por cada nivel de almacenamiento en todas las tablas de un conjunto de datos llamado mydataset
:
SELECT storage_tier, SUM(total_logical_bytes) AS logical_bytes FROM `mydataset.INFORMATION_SCHEMA.PARTITIONS` GROUP BY storage_tier;
Los resultados deberían ser similares a los siguientes:
+--------------+----------------+ | storage_tier | logical_bytes | +--------------+----------------+ | LONG_TERM | 1311495144879 | | ACTIVE | 66757629240 | +--------------+----------------+
Ejemplo 2
En el ejemplo siguiente se crea una columna que extrae el tipo de partición del campo partition_id
y agrega información de partición a nivel de tabla del conjunto de datos público 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;
Los resultados deberían ser similares a los siguientes:
+-----------------+----------------+--------------------+---------------------+-----------------+-------------------------+--------------------------------+ | 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 | +-----------------+----------------+--------------------+---------------------+-----------------+-------------------------+--------------------------------+