BigQuery admite tablas particionadas y agrupaciones en clústeres de tablas. Para obtener más información sobre las particiones y los clústeres en BigQuery, consulta Introducción a las tablas particionadas y Crea y usa tablas agrupadas.
Antes de comenzar
En la consola de Cloud, ve a la página Dataform.
Selecciona o crea un repositorio.
Selecciona o crea un lugar de trabajo de desarrollo.
Funciones obligatorias
Si quieres obtener los permisos necesarios para configurar las particiones y los clústeres de tablas,
pídele a tu administrador que te otorgue el
rol de IAM de Editor de Dataform (roles/dataform.editor
) en los lugares de trabajo.
Para obtener más información sobre cómo otorgar roles, consulta Administra el acceso.
Es posible que también puedas obtener los permisos necesarios mediante funciones personalizadas, o bien otras funciones predefinidas.
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 tabla.
Para crear una partición de tabla, sigue estos pasos:
- Ve a tu lugar de trabajo de desarrollo.
- En el panel Files, expande
definitions/
. - Abre un archivo SQLX de definición de tablas.
En el bloque
config
, agrega el bloquebigquery
debajo de la declaración de 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.
Opcional: Haz clic en Formato.
En la siguiente muestra de código, se indica 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 indica cómo particionar una tabla por 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))"
}
}
Configura un filtro de partición
Para obtener más información sobre el filtro de partición en BigQuery, consulta Configura el atributo Requerir filtro de partición en una tabla con particiones.
Para configurar un filtro de partición, sigue estos pasos:
- Ve a tu lugar de trabajo de desarrollo.
- En el panel Files, 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
Opcional: Haz clic en Formato.
En la siguiente muestra de código, se presenta un conjunto de filtros de partición 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
Configurar un período de retención para las particiones
Para controlar la retención de todas las particiones en una tabla particionada, sigue estos pasos:
- Ve a tu lugar de trabajo de desarrollo.
- En el panel Files, 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 durante los que deseas conservar las particiones.
Opcional: Haz clic en Formato.
En la siguiente muestra de código, se muestra un período de retención para las 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 tablas, agrega una 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 a tu lugar de trabajo de desarrollo.
- En el panel Files, 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 por la que deseas agrupar la tabla en clústeres.
Opcional: Haz clic en Formato.
En la siguiente muestra de código, se muestra una tabla particionada agrupada en clústeres por columnas name
y revenue
:
config {
type: "table",
bigquery: {
partitionBy: "DATE(ts)",
clusterBy: ["name", "revenue"]
}
}
SELECT CURRENT_TIMESTAMP() as ts, name, revenue
¿Qué sigue?
- Si quieres aprender a reutilizar el código con inclusiones, consulta Cómo reutilizar variables y funciones con inclusiones.
- Para aprender a configurar tablas incrementales, consulta Cómo configurar una tabla incremental.