BigQuery admite tablas particionadas y agrupamiento en clústeres de tablas. Para obtener más información sobre particiones y clústeres en BigQuery, consulta Introducción a las tablas particionadas y Crea y usa tablas agrupadas en clústeres.
Antes de comenzar
En Cloud Console, ve a la página Dataform.
Selecciona o crea un repositorio.
Selecciona o crea un lugar de trabajo de desarrollo.
Roles obligatorios
A fin de obtener los permisos que necesitas para configurar particiones y clústeres de tablas, pídele al administrador que te otorgue el rol de IAM Editor de formulario de datos (roles/dataform.editor
) en los lugares de trabajo.
Para obtener más información sobre cómo otorgar roles, consulta Administra el acceso.
También puedes obtener los permisos necesarios mediante roles personalizados o cualquier otro rol predefinido.
Crea una partición de tabla
Para crear una partición de tabla, agrega una partition_expression de BigQuery al bloque bigquery
en un archivo SQLX de definición de tablas.
Para crear una partición de tabla, sigue estos pasos:
- Ve al lugar de trabajo de desarrollo.
- En el panel Archivos, expande
definitions/
. - Abre un archivo SQLX de definición de tablas.
- En el bloque
config
, agrega el bloquebigquery
debajo de la declaración del tipo de tabla en el siguiente formato:
config {
type: "table",
bigquery: {
}
}
- En el bloque
bigquery
, ingresa el siguiente fragmento de código:
partitionBy: "PARTITION_EXPRESSION"
Reemplaza PARTITION_EXPRESSION por una expresión para particionar la tabla.
En la siguiente muestra de código, se muestra cómo particionar una tabla por hora en un archivo SQLX de definición de tablas:
config {
type: "table",
bigquery: {
partitionBy: "DATETIME_TRUNC(<timestamp_column>, HOUR)"
}
}
En la siguiente muestra de código, se muestra cómo particionar una tabla con un valor de número entero en un archivo SQLX de definición de tablas:
config {
type: "table",
bigquery: {
partitionBy: "RANGE_BUCKET(<integer_column>, GENERATE_ARRAY(0, 1000000, 1000))"
}
}
Cómo configurar un filtro de partición
Para obtener más información sobre el filtro de partición en BigQuery, consulta Configura el atributo de filtro de partición obligatorio en una tabla particionada.
Para configurar un filtro de partición, sigue estos pasos:
- Ve al lugar de trabajo de desarrollo.
- En el panel Archivos, expande
definitions/
. - Abre un archivo SQLX de definición de tabla particionada.
- En el bloque
bigquery
, ingresa el siguiente fragmento de código:
requirePartitionFilter : true
En la siguiente muestra de código, se muestra un filtro de partición establecido en el bloque bigquery
de un archivo SQLX de tabla particionada:
config {
type: "table",
bigquery: {
partitionBy: "DATE(ts)",
requirePartitionFilter : true
}
}
SELECT CURRENT_TIMESTAMP() AS ts
Establece un período de retención para las particiones
Para controlar la retención de todas las particiones de una tabla particionada, sigue estos pasos:
- Ve al lugar de trabajo de desarrollo.
- En el panel Archivos, expande
definitions/
. - Abre un archivo SQLX de definición de tabla particionada.
- En el bloque
bigquery
, ingresa el siguiente fragmento de código:
partitionExpirationDays: NUMBER_OF_DAYS
Reemplaza NUMBER_OF_DAYS por la cantidad de días en los que quieres conservar las particiones.
En la siguiente muestra de código, se muestra un período de retención para particiones establecidas en 14 días en el bloque bigquery
de un archivo SQLX de tabla particionada:
config {
type: "table",
bigquery: {
partitionBy: "DATE(ts)",
partitionExpirationDays: 14,
}
}
SELECT CURRENT_TIMESTAMP() AS ts
Crea un clúster de tabla
Para crear un clúster de tabla, agrega un clustering_column_list de BigQuery al bloque bigquery
en un archivo SQLX de definición de tablas.
Para crear un clúster de tabla, sigue estos pasos:
- Ve al lugar de trabajo de desarrollo.
- En el panel Archivos, expande
definitions/
. - Abre un archivo SQLX de definición de tablas.
- En el bloque
bigquery
, ingresa el siguiente fragmento de código:
clusterBy: ["CLUSTER_COLUMN"]
Reemplaza CLUSTER_COLUMN por el nombre de la columna mediante la que deseas agrupar la tabla en clústeres.
En la siguiente muestra de código, se muestra una tabla particionada agrupada en clústeres por las columnas name
y revenue
:
config {
type: "table",
bigquery: {
partitionBy: "DATE(ts)",
clusterBy: ["name", "revenue"]
}
}
SELECT CURRENT_TIMESTAMP() as ts, name, revenue
¿Qué sigue?
- Para aprender a reutilizar código con inclusiones, consulta Reutiliza variables y funciones con inclusiones.
- Para aprender a configurar tablas incrementales, consulta Configura una tabla incremental.