Crear tablas con particiones
En esta página se describe cómo crear tablas con particiones en BigQuery. Para obtener una descripción general de las tablas particionadas, consulta el artículo Introducción a las tablas particionadas.
Antes de empezar
Concede roles de gestión de identidades y accesos (IAM) que proporcionen a los usuarios los permisos necesarios para realizar cada tarea de este documento.
Permisos obligatorios
Roles obligatorios
Para obtener los permisos que necesitas para crear una tabla, pide a tu administrador que te conceda los siguientes roles de gestión de identidades y accesos:
-
Usuario de trabajos de BigQuery (
roles/bigquery.jobUser
) en el proyecto si vas a crear una tabla cargando datos o guardando los resultados de una consulta en una tabla. -
Editor de datos de BigQuery (
roles/bigquery.dataEditor
) en el conjunto de datos en el que vas a crear la tabla.
Para obtener más información sobre cómo conceder roles, consulta el artículo Gestionar el acceso a proyectos, carpetas y organizaciones.
Estos roles predefinidos contienen los permisos necesarios para crear una tabla. Para ver los permisos exactos que se necesitan, despliega la sección Permisos necesarios:
Permisos obligatorios
Para crear una tabla, se necesitan los siguientes permisos:
-
bigquery.tables.create
en el conjunto de datos en el que vas a crear la tabla. -
bigquery.tables.getData
en todas las tablas y vistas a las que hace referencia tu consulta si guardas los resultados de la consulta en una tabla. -
bigquery.jobs.create
en el proyecto si creas la tabla cargando datos o guardando los resultados de una consulta en una tabla. -
bigquery.tables.updateData
en la tabla si vas a añadir o sobrescribir una tabla con los resultados de la consulta.
También puedes obtener estos permisos con roles personalizados u otros roles predefinidos.
Crear una tabla con particiones vacía
Los pasos para crear una tabla con particiones en BigQuery son similares a los de las tablas estándares; la única diferencia es que se especifican las opciones de partición y las demás opciones de las tablas.
Crear una tabla con particiones por columnas de unidades de tiempo
Para crear una tabla vacía con particiones por columnas de unidades de tiempo con una definición de esquema:
Consola
En la Google Cloud consola, ve a la página BigQuery.
- En el panel Explorador, expande tu proyecto y selecciona un conjunto de datos.
- En la sección Información del conjunto de datos, haz clic en Crear tabla.
- En el panel Crear tabla, especifica los siguientes detalles:
- En la sección Fuente, selecciona Tabla vacía en la lista Crear tabla a partir de.
- En la sección Destino, especifica los siguientes detalles:
- En Conjunto de datos, selecciona el conjunto de datos en el que quieras crear la tabla.
- En el campo Tabla, introduce el nombre de la tabla que quieras crear.
- Verifica que el campo Tipo de tabla sea Tabla nativa.
- En la sección Schema (Esquema), introduce la definición de schema.
El esquema debe incluir una columna
DATE
,TIMESTAMP
oDATETIME
para la columna de partición. Para obtener más información, consulta Especificar un esquema. Puede introducir la información del esquema manualmente mediante uno de los siguientes métodos:- Opción 1: Haz clic en Editar como texto y pega el esquema en forma de matriz JSON. Cuando usas una matriz JSON, generas el esquema siguiendo el mismo proceso que para crear un archivo de esquema JSON.
Para ver el esquema de una tabla en formato JSON, introduce el siguiente comando:
bq show --format=prettyjson dataset.table
- Opción 2: Haz clic en Tipo y Modo de cada campo. Añadir campo e introduce el esquema de la tabla. Especifica el Nombre,
- Opción 1: Haz clic en Editar como texto y pega el esquema en forma de matriz JSON. Cuando usas una matriz JSON, generas el esquema siguiendo el mismo proceso que para crear un archivo de esquema JSON.
Para ver el esquema de una tabla en formato JSON, introduce el siguiente comando:
- En la sección Configuración de particiones y clústeres, en la lista Partición, selecciona Partición por campo y, a continuación, elige la columna de partición. Esta opción solo está disponible si el esquema contiene una columna
DATE
,TIMESTAMP
oDATETIME
. - Opcional: Para requerir un filtro de partición en todas las consultas de esta tabla, seleccione la casilla Requerir filtro de partición. Un filtro de partición puede reducir los costes y mejorar el rendimiento. Para obtener más información, consulta Definir los requisitos del filtro de partición.
- Selecciona el Tipo de partición. Solo se admite Por día.
- Opcional: En la sección Opciones avanzadas, si quieres usar una clave de cifrado gestionada por el cliente, selecciona la opción Usar una clave de cifrado gestionada por el cliente (CMEK). De forma predeterminada, BigQuery encripta el contenido de los clientes almacenado en reposo mediante una Google-owned and Google-managed encryption key.
- Haz clic en Crear tabla.
SQL
Para crear una tabla con particiones por columnas de unidades de tiempo, usa la declaración de DDL CREATE TABLE
con una cláusula PARTITION BY
.
En el ejemplo siguiente se crea una tabla con particiones diarias basadas en la columna transaction_date
:
En la Google Cloud consola, ve a la página BigQuery.
En el editor de consultas, introduce la siguiente instrucción:
CREATE TABLE mydataset.newtable (transaction_id INT64, transaction_date DATE) PARTITION BY transaction_date OPTIONS ( partition_expiration_days = 3, require_partition_filter = TRUE);
Usa la cláusula
OPTIONS
para definir opciones de tabla, como la caducidad de la partición y los requisitos del filtro de partición.Haz clic en
Ejecutar.
Para obtener más información sobre cómo ejecutar consultas, consulta Ejecutar una consulta interactiva.
El tipo de partición predeterminado de las columnas DATE
es la partición diaria. Para especificar otro tipo de partición, incluye la función DATE_TRUNC
en la cláusula PARTITION BY
. Por ejemplo, la siguiente consulta crea una tabla con particiones mensuales:
CREATE TABLE mydataset.newtable (transaction_id INT64, transaction_date DATE) PARTITION BY DATE_TRUNC(transaction_date, MONTH) OPTIONS ( partition_expiration_days = 3, require_partition_filter = TRUE);
También puede especificar una columna TIMESTAMP
o DATETIME
como columna de partición. En ese caso, incluya la función TIMESTAMP_TRUNC
o DATETIME_TRUNC
en la cláusula PARTITION BY
para especificar el tipo de partición. Por ejemplo, la siguiente instrucción crea una tabla con particiones diarias basadas en una columna TIMESTAMP
:
CREATE TABLE mydataset.newtable (transaction_id INT64, transaction_ts TIMESTAMP) PARTITION BY TIMESTAMP_TRUNC(transaction_ts, DAY) OPTIONS ( partition_expiration_days = 3, require_partition_filter = TRUE);
bq
-
In the Google Cloud console, activate Cloud Shell.
At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.
Usa el comando
bq mk
con la marca--table
(o el acceso directo de-t
):bq mk \ --table \ --schema SCHEMA \ --time_partitioning_field COLUMN \ --time_partitioning_type UNIT_TIME \ --time_partitioning_expiration EXPIRATION_TIME \ --require_partition_filter=BOOLEAN PROJECT_ID:DATASET.TABLE
Haz los cambios siguientes:
- SCHEMA: una definición de esquema en formato
column:data_type,column:data_type
o la ruta a un archivo de esquema JSON en tu máquina local. Para obtener más información, consulta Especificar un esquema. - COLUMN: el nombre de la columna de partición. En el esquema de la tabla, esta columna debe ser de tipo
TIMESTAMP
,DATETIME
oDATE
. - UNIT_TIME: el tipo de partición. Los valores admitidos son
DAY
,HOUR
,MONTH
yYEAR
. - EXPIRATION_TIME: el tiempo de vencimiento de las particiones de la tabla, en segundos. La marca
--time_partitioning_expiration
es opcional. Para obtener más información, consulta Establecer la caducidad de la partición. - BOOLEAN: Si
true
, las consultas en esta tabla deben incluir un filtro de partición. La marca--require_partition_filter
es opcional. Para obtener más información, consulta Definir los requisitos de los filtros de partición. - PROJECT_ID: el ID del proyecto. Si se omite, se usará el proyecto predeterminado.
- DATASET: el nombre de un conjunto de datos de tu proyecto.
- TABLE: el nombre de la tabla que se va a crear.
Para ver otras opciones de línea de comandos, consulta
bq mk
.En el siguiente ejemplo se crea una tabla llamada
mytable
que se divide en particiones por horas en la columnats
. La caducidad de la partición es de 259.200 segundos (3 días).bq mk \ -t \ --schema 'ts:TIMESTAMP,qtr:STRING,sales:FLOAT' \ --time_partitioning_field ts \ --time_partitioning_type HOUR \ --time_partitioning_expiration 259200 \ mydataset.mytable
- SCHEMA: una definición de esquema en formato
- Abre Cloud Shell.
-
Define el Google Cloud proyecto Google Cloud predeterminado en el que quieras aplicar tus configuraciones de Terraform.
Solo tiene que ejecutar este comando una vez por proyecto y puede hacerlo en cualquier directorio.
export GOOGLE_CLOUD_PROJECT=PROJECT_ID
Las variables de entorno se anulan si defines valores explícitos en el archivo de configuración de Terraform.
-
En Cloud Shell, crea un directorio y un archivo nuevo en ese directorio. El nombre del archivo debe tener la extensión
.tf
. Por ejemplo,main.tf
. En este tutorial, nos referiremos al archivo comomain.tf
.mkdir DIRECTORY && cd DIRECTORY && touch main.tf
-
Si estás siguiendo un tutorial, puedes copiar el código de ejemplo de cada sección o paso.
Copia el código de ejemplo en el archivo
main.tf
que acabas de crear.También puedes copiar el código de GitHub. Se recomienda cuando el fragmento de Terraform forma parte de una solución integral.
- Revisa y modifica los parámetros de ejemplo para aplicarlos a tu entorno.
- Guarda los cambios.
-
Inicializa Terraform. Solo tienes que hacerlo una vez por directorio.
terraform init
Si quieres usar la versión más reciente del proveedor de Google, incluye la opción
-upgrade
:terraform init -upgrade
-
Revisa la configuración y comprueba que los recursos que va a crear o actualizar Terraform se ajustan a tus expectativas:
terraform plan
Haga las correcciones necesarias en la configuración.
-
Aplica la configuración de Terraform ejecutando el siguiente comando e introduciendo
yes
en la petición:terraform apply
Espera hasta que Terraform muestre el mensaje "Apply complete!".
- Abre tu Google Cloud proyecto para ver los resultados. En la Google Cloud consola, ve a tus recursos en la interfaz de usuario para asegurarte de que Terraform los ha creado o actualizado.
Terraform
Usa el recurso google_bigquery_table
.
Para autenticarte en BigQuery, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta Configurar la autenticación para bibliotecas de cliente.
En el siguiente ejemplo se crea una tabla denominada mytable
que se particiona por día:
Para aplicar la configuración de Terraform en un proyecto, sigue los pasos que se indican en las siguientes secciones. Google Cloud
Preparar Cloud Shell
Preparar el directorio
Cada archivo de configuración de Terraform debe tener su propio directorio (también llamado módulo raíz).
Aplica los cambios
API
Llama al método tables.insert
con un recurso de tabla definido que especifica la propiedad timePartitioning
y la propiedad schema
.
Go
Antes de probar este ejemplo, sigue las Goinstrucciones de configuración de la guía de inicio rápido de BigQuery con bibliotecas de cliente. Para obtener más información, consulta la documentación de referencia de la API Go de BigQuery.
Para autenticarte en BigQuery, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación para bibliotecas de cliente.
Java
Antes de probar este ejemplo, sigue las Javainstrucciones de configuración de la guía de inicio rápido de BigQuery con bibliotecas de cliente. Para obtener más información, consulta la documentación de referencia de la API Java de BigQuery.
Para autenticarte en BigQuery, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación para bibliotecas de cliente.
Node.js
Antes de probar este ejemplo, sigue las Node.jsinstrucciones de configuración de la guía de inicio rápido de BigQuery con bibliotecas de cliente. Para obtener más información, consulta la documentación de referencia de la API Node.js de BigQuery.
Para autenticarte en BigQuery, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación para bibliotecas de cliente.
Python
Antes de probar este ejemplo, sigue las Pythoninstrucciones de configuración de la guía de inicio rápido de BigQuery con bibliotecas de cliente. Para obtener más información, consulta la documentación de referencia de la API Python de BigQuery.
Para autenticarte en BigQuery, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación para bibliotecas de cliente.
Crear una tabla con particiones por hora de ingestión
Para crear una tabla con particiones por tiempo de ingestión vacía con una definición de esquema, sigue estos pasos:
Consola
Abre la página de BigQuery en la Google Cloud consola.
En el panel Explorador, expande tu proyecto y selecciona un conjunto de datos.
Abre la opción
Acciones y haz clic en Abrir.En el panel de detalles, haz clic en Crear tabla
.En la página Crear tabla, ve a la sección Fuente y selecciona Tabla vacía.
En la sección Destino:
- En Nombre del conjunto de datos, elige el conjunto de datos adecuado.
- En el campo Nombre de la tabla, introduce el nombre de la tabla.
- Verifica que el Tipo de tabla sea Tabla nativa.
En la sección Schema (Esquema), introduce la definición de schema.
En la sección Configuración de particiones y clústeres, en Partición, haz clic en Partición por tiempo de ingestión.
(Opcional) Para requerir un filtro de partición en todas las consultas de esta tabla, seleccione la casilla Requerir filtro de partición. Si usas este filtro, es posible que rebajes los costes y mejores el rendimiento. Para obtener más información, consulta Definir los requisitos de los filtros de partición.
Haz clic en Crear tabla.
SQL
Si quieres crear una tabla con particiones por hora de ingestión, usa laCREATE TABLE
declaración
con un elementoPARTITION BY
cláusula que las particiones de_PARTITIONDATE
en tu teléfono Android.
En el siguiente ejemplo se crea una tabla con particiones diarias:
En la Google Cloud consola, ve a la página BigQuery.
En el editor de consultas, introduce la siguiente instrucción:
CREATE TABLE mydataset.newtable (transaction_id INT64) PARTITION BY _PARTITIONDATE OPTIONS ( partition_expiration_days = 3, require_partition_filter = TRUE);
Usa la cláusula
OPTIONS
para definir opciones de tabla, como la caducidad de la partición y los requisitos del filtro de partición.Haz clic en
Ejecutar.
Para obtener más información sobre cómo ejecutar consultas, consulta Ejecutar una consulta interactiva.
El tipo de partición predeterminado para la partición por hora de ingestión es la partición diaria. Para especificar otro tipo de partición, incluye la función
DATE_TRUNC
en la cláusula PARTITION BY
. Por ejemplo, la siguiente consulta crea una tabla con particiones mensuales:
CREATE TABLE mydataset.newtable (transaction_id INT64) PARTITION BY DATE_TRUNC(_PARTITIONTIME, MONTH) OPTIONS ( partition_expiration_days = 3, require_partition_filter = TRUE);
bq
-
In the Google Cloud console, activate Cloud Shell.
At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.
Usa el comando
bq mk
con la marca--table
(o el acceso directo de-t
):bq mk \ --table \ --schema SCHEMA \ --time_partitioning_type UNIT_TIME \ --time_partitioning_expiration EXPIRATION_TIME \ --require_partition_filter=BOOLEAN \ PROJECT_ID:DATASET.TABLE
Haz los cambios siguientes:
- SCHEMA: una definición en el formato
column:data_type,column:data_type
o la ruta a un archivo de esquema JSON en tu máquina local. Para obtener más información, consulta Especificar un esquema. - UNIT_TIME: el tipo de partición. Los valores admitidos son
DAY
,HOUR
,MONTH
yYEAR
. - EXPIRATION_TIME: el tiempo de vencimiento de las particiones de la tabla, en segundos. La marca
--time_partitioning_expiration
es opcional. Para obtener más información, consulta Establecer la caducidad de la partición. - BOOLEAN: Si
true
, las consultas en esta tabla deben incluir un filtro de partición. La marca--require_partition_filter
es opcional. Para obtener más información, consulta Definir los requisitos de los filtros de partición. - PROJECT_ID: el ID del proyecto. Si se omite, se usará el proyecto predeterminado.
- DATASET: el nombre de un conjunto de datos de tu proyecto.
- TABLE: el nombre de la tabla que se va a crear.
Para ver otras opciones de línea de comandos, consulta
bq mk
.En el siguiente ejemplo se crea una tabla con particiones por hora de ingestión llamada
mytable
. La tabla tiene particiones diarias, con un vencimiento de partición de 259.200 segundos (3 días).bq mk \ -t \ --schema qtr:STRING,sales:FLOAT,year:STRING \ --time_partitioning_type DAY \ --time_partitioning_expiration 259200 \ mydataset.mytable
- SCHEMA: una definición en el formato
- Abre Cloud Shell.
-
Define el Google Cloud proyecto Google Cloud predeterminado en el que quieras aplicar tus configuraciones de Terraform.
Solo tiene que ejecutar este comando una vez por proyecto y puede hacerlo en cualquier directorio.
export GOOGLE_CLOUD_PROJECT=PROJECT_ID
Las variables de entorno se anulan si defines valores explícitos en el archivo de configuración de Terraform.
-
En Cloud Shell, crea un directorio y un archivo nuevo en ese directorio. El nombre del archivo debe tener la extensión
.tf
. Por ejemplo,main.tf
. En este tutorial, nos referiremos al archivo comomain.tf
.mkdir DIRECTORY && cd DIRECTORY && touch main.tf
-
Si estás siguiendo un tutorial, puedes copiar el código de ejemplo de cada sección o paso.
Copia el código de ejemplo en el archivo
main.tf
que acabas de crear.También puedes copiar el código de GitHub. Se recomienda cuando el fragmento de Terraform forma parte de una solución integral.
- Revisa y modifica los parámetros de ejemplo para aplicarlos a tu entorno.
- Guarda los cambios.
-
Inicializa Terraform. Solo tienes que hacerlo una vez por directorio.
terraform init
Si quieres usar la versión más reciente del proveedor de Google, incluye la opción
-upgrade
:terraform init -upgrade
-
Revisa la configuración y comprueba que los recursos que va a crear o actualizar Terraform se ajustan a tus expectativas:
terraform plan
Haga las correcciones necesarias en la configuración.
-
Aplica la configuración de Terraform ejecutando el siguiente comando e introduciendo
yes
en la petición:terraform apply
Espera hasta que Terraform muestre el mensaje "Apply complete!".
- Abre tu Google Cloud proyecto para ver los resultados. En la Google Cloud consola, ve a tus recursos en la interfaz de usuario para asegurarte de que Terraform los ha creado o actualizado.
Terraform
Usa el recurso google_bigquery_table
.
Para autenticarte en BigQuery, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta Configurar la autenticación para bibliotecas de cliente.
En el siguiente ejemplo se crea una tabla llamada mytable
que tiene particiones por hora de ingestión:
Para aplicar la configuración de Terraform en un proyecto, sigue los pasos que se indican en las siguientes secciones. Google Cloud
Preparar Cloud Shell
Preparar el directorio
Cada archivo de configuración de Terraform debe tener su propio directorio (también llamado módulo raíz).
Aplica los cambios
API
Llama al método tables.insert
con un recurso de tabla definido que especifica la propiedad timePartitioning
y la propiedad schema
.
Crear una tabla con particiones de rangos de números enteros
Para crear una tabla con particiones de rangos de números enteros vacía con una definición de esquema, sigue estos pasos:
Consola
Abre la página de BigQuery en la Google Cloud consola.
En el panel Explorador, expande tu proyecto y selecciona un conjunto de datos.
Abre la opción
Acciones y haz clic en Abrir.En el panel de detalles, haz clic en Crear tabla
.En la página Crear tabla, ve a la sección Fuente y selecciona Tabla vacía.
En la sección Destino:
- En Nombre del conjunto de datos, elige el conjunto de datos adecuado.
- En el campo Nombre de la tabla, introduce el nombre de la tabla.
- Verifica que el Tipo de tabla sea Tabla nativa.
En la sección Schema (Esquema), introduce la definición del esquema. Asegúrate de que el esquema incluya una columna
INTEGER
para la columna de partición. Para obtener más información, consulta Especificar un esquema.En la sección Configuración de particiones y clústeres, en la lista desplegable Partición, selecciona Partición por campo y elige la columna de partición. Esta opción solo está disponible si el esquema contiene una columna
INTEGER
.Proporciona valores para Inicio, Fin e Intervalo:
- Start es el inicio del primer intervalo de partición (inclusive).
- End es el final del último intervalo de partición (exclusivo).
- Intervalo es la anchura de cada intervalo de partición.
Los valores que no se incluyan en estos intervalos se añadirán a una partición especial
__UNPARTITIONED__
.(Opcional) Para requerir un filtro de partición en todas las consultas de esta tabla, seleccione la casilla Requerir filtro de partición. Si usas este filtro, es posible que rebajes los costes y mejores el rendimiento. Para obtener más información, consulta Definir los requisitos de los filtros de partición.
Haz clic en Crear tabla.
SQL
Para crear una tabla con particiones de rangos de números enteros, usa la declaración de DDL CREATE TABLE
con una cláusula PARTITION BY
.
En el ejemplo siguiente se crea una tabla con particiones en la columna customer_id
con los valores inicial 0, final 100 e intervalo 10:
En la Google Cloud consola, ve a la página BigQuery.
En el editor de consultas, introduce la siguiente instrucción:
CREATE TABLE mydataset.newtable (customer_id INT64, date1 DATE) PARTITION BY RANGE_BUCKET(customer_id, GENERATE_ARRAY(0, 100, 10)) OPTIONS ( require_partition_filter = TRUE);
Usa la cláusula
OPTIONS
para definir opciones de tabla, como los requisitos del filtro de partición.Haz clic en
Ejecutar.
Para obtener más información sobre cómo ejecutar consultas, consulta Ejecutar una consulta interactiva.
bq
-
In the Google Cloud console, activate Cloud Shell.
At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.
Usa el comando
bq mk
con la marca--table
(o el acceso directo de-t
):bq mk \ --schema schema \ --range_partitioning=COLUMN_NAME,START,END,INTERVAL \ --require_partition_filter=BOOLEAN \ PROJECT_ID:DATASET.TABLE
Haz los cambios siguientes:
- SCHEMA: una definición de esquema insertada en el formato
column:data_type,column:data_type
o la ruta a un archivo de esquema JSON en tu máquina local. Para obtener más información, consulta Especificar un esquema. - COLUMN_NAME: el nombre de la columna de partición. En el esquema de la tabla, esta columna debe ser de tipo
INTEGER
. - START: inicio del primer intervalo de partición (inclusive).
- END: el final del último intervalo de partición (exclusivo).
- INTERVAL: ancho de cada intervalo de partición.
- BOOLEAN: Si
true
, las consultas en esta tabla deben incluir un filtro de partición. La marca--require_partition_filter
es opcional. Para obtener más información, consulta Definir los requisitos de los filtros de partición. - PROJECT_ID: el ID del proyecto. Si se omite, se usará el proyecto predeterminado.
- DATASET: el nombre de un conjunto de datos de tu proyecto.
- TABLE: el nombre de la tabla que se va a crear.
Los valores que estén fuera del intervalo de la partición se incluirán en una partición
__UNPARTITIONED__
especial.Para ver otras opciones de línea de comandos, consulta
bq mk
.En el ejemplo siguiente se crea una tabla llamada
mytable
que se particiona en la columnacustomer_id
.bq mk \ -t \ --schema 'customer_id:INTEGER,qtr:STRING,sales:FLOAT' \ --range_partitioning=customer_id,0,100,10 \ mydataset.mytable
- SCHEMA: una definición de esquema insertada en el formato
- Abre Cloud Shell.
-
Define el Google Cloud proyecto Google Cloud predeterminado en el que quieras aplicar tus configuraciones de Terraform.
Solo tiene que ejecutar este comando una vez por proyecto y puede hacerlo en cualquier directorio.
export GOOGLE_CLOUD_PROJECT=PROJECT_ID
Las variables de entorno se anulan si defines valores explícitos en el archivo de configuración de Terraform.
-
En Cloud Shell, crea un directorio y un archivo nuevo en ese directorio. El nombre del archivo debe tener la extensión
.tf
. Por ejemplo,main.tf
. En este tutorial, nos referiremos al archivo comomain.tf
.mkdir DIRECTORY && cd DIRECTORY && touch main.tf
-
Si estás siguiendo un tutorial, puedes copiar el código de ejemplo de cada sección o paso.
Copia el código de ejemplo en el archivo
main.tf
que acabas de crear.También puedes copiar el código de GitHub. Se recomienda cuando el fragmento de Terraform forma parte de una solución integral.
- Revisa y modifica los parámetros de ejemplo para aplicarlos a tu entorno.
- Guarda los cambios.
-
Inicializa Terraform. Solo tienes que hacerlo una vez por directorio.
terraform init
Si quieres usar la versión más reciente del proveedor de Google, incluye la opción
-upgrade
:terraform init -upgrade
-
Revisa la configuración y comprueba que los recursos que va a crear o actualizar Terraform se ajustan a tus expectativas:
terraform plan
Haga las correcciones necesarias en la configuración.
-
Aplica la configuración de Terraform ejecutando el siguiente comando e introduciendo
yes
en la petición:terraform apply
Espera hasta que Terraform muestre el mensaje "Apply complete!".
- Abre tu Google Cloud proyecto para ver los resultados. En la Google Cloud consola, ve a tus recursos en la interfaz de usuario para asegurarte de que Terraform los ha creado o actualizado.
Terraform
Usa el recurso google_bigquery_table
.
Para autenticarte en BigQuery, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta Configurar la autenticación para bibliotecas de cliente.
En el siguiente ejemplo se crea una tabla llamada mytable
que se particiona por intervalo de números enteros:
Para aplicar la configuración de Terraform en un proyecto, sigue los pasos que se indican en las siguientes secciones. Google Cloud
Preparar Cloud Shell
Preparar el directorio
Cada archivo de configuración de Terraform debe tener su propio directorio (también llamado módulo raíz).
Aplica los cambios
API
Llama al método tables.insert
con un recurso de tabla definido que especifica la propiedad rangePartitioning
y la propiedad schema
.
Java
Antes de probar este ejemplo, sigue las Javainstrucciones de configuración de la guía de inicio rápido de BigQuery con bibliotecas de cliente. Para obtener más información, consulta la documentación de referencia de la API Java de BigQuery.
Para autenticarte en BigQuery, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación para bibliotecas de cliente.
Node.js
Antes de probar este ejemplo, sigue las Node.jsinstrucciones de configuración de la guía de inicio rápido de BigQuery con bibliotecas de cliente. Para obtener más información, consulta la documentación de referencia de la API Node.js de BigQuery.
Para autenticarte en BigQuery, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación para bibliotecas de cliente.
Python
Antes de probar este ejemplo, sigue las Pythoninstrucciones de configuración de la guía de inicio rápido de BigQuery con bibliotecas de cliente. Para obtener más información, consulta la documentación de referencia de la API Python de BigQuery.
Para autenticarte en BigQuery, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación para bibliotecas de cliente.
Crear una tabla con particiones a partir del resultado de una consulta
Puede crear una tabla particionada a partir del resultado de una consulta de las siguientes formas:
- En SQL, usa una declaración
CREATE TABLE ... AS SELECT
. Puedes usar este método para crear una tabla con particiones por columnas de unidades de tiempo o por intervalos de números enteros, pero no por hora de ingestión. - Usa la herramienta de línea de comandos bq o la API de BigQuery para definir una tabla de destino para una consulta. Cuando se ejecuta la consulta, BigQuery escribe los resultados en la tabla de destino. Puedes usar este método con cualquier tipo de partición.
Llama al método de API
jobs.insert
y especifica la partición en la propiedadtimePartitioning
o en la propiedadrangePartitioning
.
SQL
Usa la instrucción CREATE TABLE
. Incluye una cláusula PARTITION BY
para configurar la partición.
En el ejemplo siguiente se crea una tabla con particiones en la columna transaction_date
:
En la Google Cloud consola, ve a la página BigQuery.
En el editor de consultas, introduce la siguiente instrucción:
CREATE TABLE mydataset.newtable (transaction_id INT64, transaction_date DATE) PARTITION BY transaction_date AS ( SELECT transaction_id, transaction_date FROM mydataset.mytable );
Usa la cláusula
OPTIONS
para definir opciones de tabla, como los requisitos del filtro de partición.Haz clic en
Ejecutar.
Para obtener más información sobre cómo ejecutar consultas, consulta Ejecutar una consulta interactiva.
bq
-
In the Google Cloud console, activate Cloud Shell.
At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.
Para crear una tabla con particiones a partir de una consulta, usa el comando
bq query
con la marca--destination_table
y la marca--time_partitioning_type
.Partición por columnas de unidades de tiempo:
bq query \ --use_legacy_sql=false \ --destination_table TABLE_NAME \ --time_partitioning_field COLUMN \ --time_partitioning_type UNIT_TIME \ 'QUERY_STATEMENT'
Partición por hora de ingestión:
bq query \ --use_legacy_sql=false \ --destination_table TABLE_NAME \ --time_partitioning_type UNIT_TIME \ 'QUERY_STATEMENT'
Particiones de rangos de números enteros:
bq query \ --use_legacy_sql=false \ --destination_table PROJECT_ID:DATASET.TABLE \ --range_partitioning COLUMN,START,END,INTERVAL \ 'QUERY_STATEMENT'
Haz los cambios siguientes:
- PROJECT_ID: el ID del proyecto. Si se omite, se usará el proyecto predeterminado.
- DATASET: el nombre de un conjunto de datos de tu proyecto.
- TABLE: el nombre de la tabla que se va a crear.
- COLUMN: el nombre de la columna de partición.
- UNIT_TIME: el tipo de partición. Los valores admitidos son
DAY
,HOUR
,MONTH
oYEAR
. - START: el inicio de la partición por rango (inclusive).
- END: el final de la partición por rango, exclusivo.
- INTERVAL: ancho de cada intervalo de la partición.
- QUERY_STATEMENT: la consulta utilizada para rellenar la tabla.
En el ejemplo siguiente se crea una tabla con particiones en la columna
transaction_date
, con particiones mensuales.bq query \ --use_legacy_sql=false \ --destination_table mydataset.newtable \ --time_partitioning_field transaction_date \ --time_partitioning_type MONTH \ 'SELECT transaction_id, transaction_date FROM mydataset.mytable'
En el ejemplo siguiente se crea una tabla con particiones en la columna
customer_id
mediante particiones de rangos de números enteros.bq query \ --use_legacy_sql=false \ --destination_table mydataset.newtable \ --range_partitioning customer_id,0,100,10 \ 'SELECT * FROM mydataset.ponies'
En el caso de las tablas con particiones por hora de ingestión, también puedes cargar datos en una partición específica mediante un decorador de partición. En el siguiente ejemplo se crea una tabla con particiones por hora de ingestión y se cargan datos en la partición
20180201
(1 de febrero del 2018):bq query \ --use_legacy_sql=false \ --time_partitioning_type=DAY \ --destination_table='newtable$20180201' \ 'SELECT * FROM mydataset.mytable'
API
Para guardar los resultados de una consulta en una tabla con particiones, llama al método jobs.insert
.
Configura una tarea query
. Especifica la tabla de destino en destinationTable
. Especifica la partición en la propiedad timePartitioning
o en la propiedad rangePartitioning
.
Convertir tablas con particiones por fecha en tablas con particiones por hora de ingestión
Si has creado tablas con particiones por fecha, puedes convertir todo el conjunto de tablas relacionadas en una sola tabla con particiones por tiempo de ingestión mediante el comando partition
en la herramienta de línea de comandos bq.
bq --location=LOCATION partition \ --time_partitioning_type=PARTITION_TYPE \ --time_partitioning_expiration INTEGER \ PROJECT_ID:SOURCE_DATASET.SOURCE_TABLE \ PROJECT_ID:DESTINATION_DATASET.DESTINATION_TABLE
Haz los cambios siguientes:
- LOCATION: el nombre de tu ubicación. La marca
--location
es opcional. - PARTITION_TYPE: el tipo de partición. Los valores posibles son
DAY
,HOUR
,MONTH
oYEAR
. - INTEGER: tiempo de caducidad de la partición, en segundos. No hay ningún valor mínimo. El tiempo de vencimiento se evalúa como la fecha UTC de la partición más el valor entero. La marca
time_partitioning_expiration
es opcional. - PROJECT_ID: tu ID de proyecto.
- SOURCE_DATASET: el conjunto de datos que contiene las tablas particionadas por fecha.
- SOURCE_TABLE: el prefijo de las tablas particionadas por fecha.
- DESTINATION_DATASET: el conjunto de datos de la nueva tabla particionada.
- DESTINATION_TABLE; nombre de la tabla con particiones que se va a crear.
El comando partition
no admite las marcas --label
, --expiration
, --add_tags
ni --description
. Una vez creada la tabla, puedes añadirle etiquetas, una fecha de vencimiento, etiquetas y una descripción.
Cuando ejecutas el comando partition
, BigQuery crea un trabajo de copia que genera particiones a partir de las tablas fragmentadas.
En el siguiente ejemplo se crea una tabla con particiones por hora de ingestión llamada mytable_partitioned
a partir de un conjunto de tablas fragmentadas por fecha con el prefijo sourcetable_
. La nueva tabla se particiona a diario, con una caducidad de partición de 259.200 segundos (3 días).
bq partition \
--time_partitioning_type=DAY \
--time_partitioning_expiration 259200 \
mydataset.sourcetable_ \
mydataset.mytable_partitioned
Si las tablas fragmentadas por fecha fueran sourcetable_20180126
y sourcetable_20180127
, este comando crearía las siguientes particiones: mydataset.mytable_partitioned$20180126
y mydataset.mytable_partitioned$20180127
.
Seguridad de las tablas con particiones
El control de acceso de las tablas con particiones es el mismo que el de las tablas estándar. Para obtener más información, consulta Introducción a los controles de acceso a tablas.
Siguientes pasos
- Para saber cómo gestionar y actualizar tablas con particiones, consulta Gestionar tablas con particiones.
- Para obtener información sobre cómo consultar tablas con particiones, consulta Consultar tablas con particiones.