Gestionar vistas materializadas
En este documento se describe cómo gestionar las vistas materializadas en BigQuery.
La gestión de vistas materializadas de BigQuery incluye las siguientes operaciones:
- Modificar vistas materializadas
- Listar vistas materializadas
- Obtener información sobre las vistas materializadas
- Eliminar vistas materializadas
- Actualizar vistas materializadas
Para obtener más información sobre las vistas materializadas, consulta lo siguiente:
- Introducción a las vistas materializadas
- Crear vistas materializadas
- Usar vistas materializadas
- Monitorizar vistas materializadas
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. Los permisos necesarios para realizar una tarea (si los hay) se indican en la sección "Permisos necesarios" de la tarea.
Modificar vistas materializadas
Puedes modificar una vista materializada mediante la consola de Google Cloud o la herramienta de línea de comandos bq. Para ello, usa el lenguaje de definición de datos (DDL) con ALTER MATERIALIZED
VIEW
y SET OPTIONS
. Para ver una lista de opciones de vistas materializadas, consulta materialized_view_set_options_list
.
A continuación, se muestra un ejemplo en el que se asigna true
a enable_refresh
. Ajusta los valores según sea necesario para tu caso práctico.
Permisos obligatorios
Para modificar vistas materializadas, necesitas los permisos de gestión de identidades y accesos bigquery.tables.get
y bigquery.tables.update
.
Cada uno de los siguientes roles de gestión de identidades y accesos predefinidos incluye los permisos que necesitas para modificar una vista materializada:
bigquery.dataEditor
bigquery.dataOwner
bigquery.admin
Para obtener más información sobre la gestión de identidades y accesos (IAM) de BigQuery, consulta el artículo sobre roles y permisos predefinidos.
SQL
Para modificar una vista materializada, usa la
ALTER MATERIALIZED VIEW SET OPTIONS
declaración de DDL:
En la Google Cloud consola, ve a la página BigQuery.
En el editor de consultas, introduce la siguiente instrucción:
ALTER MATERIALIZED VIEW PROJECT.DATASET.MATERIALIZED_VIEW SET OPTIONS (enable_refresh = true);
Haz los cambios siguientes:
PROJECT
: el nombre del proyecto que contiene la vista materializadaDATASET
: el nombre del conjunto de datos que contiene la vista materializadaMATERIALIZED_VIEW
: el nombre de la vista materializada que quieras modificar
Haz clic en
Ejecutar.
Para obtener más información sobre cómo ejecutar consultas, consulta Ejecutar una consulta interactiva.
bq
Ejecuta el comando bq update
:
bq update \ --enable_refresh=true \ --refresh_interval_ms= \ PROJECT.DATASET.MATERIALIZED_VIEW
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.
Mostrar vistas materializadas
Puedes consultar las vistas materializadas mediante la consola de Google Cloud , la herramienta de línea de comandos bq o la API de BigQuery.
Permisos obligatorios
Para enumerar las vistas materializadas de un conjunto de datos, necesitas el permiso bigquery.tables.list
de gestión de identidades y accesos.
Cada uno de los siguientes roles de gestión de identidades y accesos predefinidos incluye los permisos que necesitas para enumerar las vistas materializadas de un conjunto de datos:
roles/bigquery.user
roles/bigquery.metadataViewer
roles/bigquery.dataViewer
roles/bigquery.dataOwner
roles/bigquery.dataEditor
roles/bigquery.admin
Para obtener más información sobre los roles y permisos de gestión de identidades y accesos, consulta el artículo sobre roles y permisos predefinidos.
El proceso para enumerar vistas materializadas es idéntico al de las tablas. Para enumerar las vistas materializadas de un conjunto de datos, sigue estos pasos:
Consola
En el panel Explorador, expande tu proyecto y selecciona un conjunto de datos.
Desplázate por la lista para ver las tablas del conjunto de datos. Las tablas, las vistas y las vistas materializadas se identifican con iconos diferentes.
bq
Ejecuta el comando bq ls
. La marca --format
se puede usar para controlar la salida. Si vas a enumerar vistas materializadas en un proyecto que no sea el predeterminado, añade el ID del proyecto al conjunto de datos con el siguiente formato:
project_id:dataset
.
bq ls --format=pretty project_id:dataset
Donde:
- project_id es el ID del proyecto.
- dataset es el nombre del conjunto de datos.
Cuando ejecutes el comando, el campo Type
mostrará el tipo de tabla.
Por ejemplo:
+-------------------------+--------------------+----------------------+-------------------+ | tableId | Type | Labels | Time Partitioning | +-------------------------+--------------------+----------------------+-------------------+ | mytable | TABLE | department:shipping | | | mymatview | MATERIALIZED_VIEW | | | +-------------------------+--------------------+----------------------+-------------------+
Ejemplos:
Introduce el siguiente comando para ver una lista de las vistas materializadas del conjunto de datos
mydataset
de tu proyecto predeterminado.
bq ls --format=pretty mydataset
Introduce el siguiente comando para enumerar las vistas materializadas del conjunto de datos mydataset
en myotherproject
.
bq ls --format=pretty myotherproject:mydataset
API
Para enumerar las vistas materializadas mediante la API, llama al método tables.list
.
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.
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.
Obtener información sobre las vistas materializadas
Puede obtener información sobre una vista materializada mediante SQL, la herramienta de línea de comandos bq o la API de BigQuery.
Permisos obligatorios
Para consultar información sobre una vista materializada, necesitas los siguientes permisos de gestión de identidades y accesos (IAM):
bigquery.tables.get
bigquery.tables.list
bigquery.routines.get
bigquery.routines.list
Cada uno de los siguientes roles de gestión de identidades y accesos predefinidos incluye los permisos anteriores:
roles/bigquery.metadataViewer
roles/bigquery.dataViewer
roles/bigquery.admin
Para obtener más información sobre los permisos de BigQuery, consulta Control de acceso con gestión de identidades y accesos.
Para obtener información sobre una vista materializada, incluidas las réplicas de vistas materializadas dependientes, sigue estos pasos:
SQL
Para obtener información sobre las vistas materializadas, consulta la vista INFORMATION_SCHEMA.TABLES
:
En la Google Cloud consola, ve a la página BigQuery.
En el editor de consultas, introduce la siguiente instrucción:
SELECT * FROM PROJECT_ID.DATASET_ID.INFORMATION_SCHEMA.TABLES WHERE table_type = 'MATERIALIZED VIEW';
Haz los cambios siguientes:
PROJECT_ID
: el nombre del proyecto que contiene las vistas materializadasDATASET_ID
: el nombre del conjunto de datos que contiene las vistas materializadas
Haz clic en
Ejecutar.
Para obtener más información sobre cómo ejecutar consultas, consulta Ejecutar una consulta interactiva.
bq
Usa el comando bq show
:
bq show --project=project_id --format=prettyjson dataset.materialized_view
Haz los cambios siguientes:
- project_id: el ID del proyecto. Solo tienes que incluir esta marca para obtener información sobre una vista materializada en un proyecto distinto del predeterminado.
- dataset: el nombre del conjunto de datos que contiene la vista materializada.
- materialized_view: el nombre de la vista materializada de la que quieres obtener información.
Ejemplo:
Introduce el siguiente comando para mostrar información sobre la vista materializada my_mv
del conjunto de datos report_views
del proyecto myproject
.
bq show --project=myproject --format=prettyjson report_views.my_mv
API
Para obtener información sobre las vistas materializadas mediante la API, llama al método tables.get
.
Eliminar vistas materializadas
Puedes eliminar una vista materializada a través de la Google Cloud consola, la herramienta de línea de comandos bq o la API.
Si eliminas una vista materializada, también se eliminarán los permisos asociados a ella. Cuando vuelvas a crear una vista materializada eliminada, también debes volver a configurar manualmente los permisos de acceso que tenía asociados.
Permisos obligatorios
Para eliminar vistas materializadas, necesita el bigquery.tables.delete
permiso de gestión de identidades y accesos.
Cada uno de los siguientes roles de gestión de identidades y accesos predefinidos incluye los permisos que necesitas para eliminar una vista materializada:
bigquery.dataEditor
bigquery.dataOwner
bigquery.admin
Para obtener más información sobre la gestión de identidades y accesos (IAM) de BigQuery, consulta el artículo sobre roles y permisos predefinidos.
SQL
Para eliminar una vista materializada, usa la DROP MATERIALIZED VIEW
instrucción DDL:
En la Google Cloud consola, ve a la página BigQuery.
En el editor de consultas, introduce la siguiente instrucción:
DROP MATERIALIZED VIEW PROJECT.DATASET.MATERIALIZED_VIEW;
Haz los cambios siguientes:
PROJECT
: el nombre del proyecto que contiene la vista materializadaDATASET
: el nombre del conjunto de datos que contiene la vista materializadaMATERIALIZED_VIEW
: el nombre de la vista materializada que quieres eliminar
Haz clic en
Ejecutar.
Para obtener más información sobre cómo ejecutar consultas, consulta Ejecutar una consulta interactiva.
bq
Usa el comando bq rm
para eliminar la vista materializada.
API
Llama al método tables.delete
y especifica valores para los parámetros projectId
, datasetId
y tableId
:
- Asigna el parámetro
projectId
al ID de tu proyecto. - Asigna el parámetro
datasetId
al ID de tu conjunto de datos. - Asigna el parámetro
tableId
al ID de tabla de la vista materializada que vas a eliminar.
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.
Actualizar vistas materializadas
Al actualizar una vista materializada, se actualizan los datos almacenados en caché de la vista para reflejar el estado actual de sus tablas base.
Cuando consultas una vista materializada, BigQuery devuelve resultados de los datos de la vista materializada almacenados en caché y de los datos obtenidos de la tabla base. Cuando es posible, BigQuery solo lee los cambios que se han producido desde la última vez que se actualizó la vista. Aunque es posible que los datos transmitidos recientemente no se incluyan durante una actualización de la vista materializada, las consultas siempre leen los datos transmitidos, independientemente de si se usa una vista materializada.
Devolver los resultados de las consultas directamente desde la tabla base conlleva un coste de computación más alto que devolver los resultados de los datos de la vista materializada almacenados en caché. Si actualizas periódicamente los datos almacenados en caché de las vistas materializadas, se reduce la cantidad de datos que se devuelven directamente de la tabla base, lo que disminuye el coste de computación.
En esta sección se describe cómo hacer lo siguiente:
Actualización automática
Puedes habilitar o inhabilitar la actualización automática en cualquier momento. El servicio bigquery-adminbot@system.gserviceaccount.com
realiza el trabajo de actualización automática y aparece en el historial de trabajos del proyecto de la vista materializada.
De forma predeterminada, los datos almacenados en caché de una vista materializada se actualizan automáticamente desde la tabla base en un plazo de entre 5 y 30 minutos después de que se produzca un cambio en la tabla base (por ejemplo, la inserción o la eliminación de filas).
Puede definir el límite de frecuencia de actualización para gestionar la frecuencia de las actualizaciones automáticas de los datos almacenados en caché y, de este modo, gestionar los costes y el rendimiento de las consultas de las vistas materializadas.
Habilitar e inhabilitar la actualización automática
Para desactivar la actualización automática al crear una vista materializada, defina enable_refresh
en false
.
CREATE MATERIALIZED VIEW PROJECT.DATASET.MATERIALIZED_VIEW PARTITION BY RANGE_BUCKET(column_name, buckets) OPTIONS (enable_refresh = false) AS SELECT ...
En el caso de una vista materializada, puede modificar el valor de enable_refresh
con ALTER MATERIALIZED VIEW
.
ALTER MATERIALIZED VIEW PROJECT.DATASET.MATERIALIZED_VIEW SET OPTIONS (enable_refresh = true);
Definir el límite de frecuencia
Puede configurar la frecuencia con la que se ejecuta la actualización automática. De forma predeterminada, las vistas materializadas se actualizan como máximo cada 30 minutos.
El límite de frecuencia de actualización se puede cambiar en cualquier momento.
Para definir un límite de frecuencia de actualización al crear una vista materializada, asigne a refresh_interval_minutes
en DDL (o refresh_interval_ms
en la API y la herramienta de línea de comandos bq) el valor que quiera.
CREATE MATERIALIZED VIEW PROJECT.DATASET.MATERIALIZED_VIEW OPTIONS (enable_refresh = true, refresh_interval_minutes = 60) AS SELECT ...
Del mismo modo, puede definir el límite de frecuencia al modificar una vista materializada. En este ejemplo, se presupone que ya has habilitado la actualización automática y solo quieres cambiar el límite de frecuencia:
ALTER MATERIALIZED VIEW PROJECT.DATASET.MATERIALIZED_VIEW SET OPTIONS (refresh_interval_minutes = 60);
El límite de frecuencia de actualización mínimo es de 1 minuto. La frecuencia máxima de actualización es de 7 días.
Puedes actualizar manualmente una vista materializada en cualquier momento, y su tiempo no está sujeto al límite de frecuencia.
Mejor resultado posible
La actualización automática se realiza en la medida de lo posible. BigQuery intenta iniciar una actualización en un plazo de 5 minutos después de que se produzca un cambio en la tabla base (si la actualización anterior se realizó hace más de 30 minutos), pero no garantiza que la actualización se inicie en ese momento ni cuándo se completará.
La actualización automática se trata de forma similar a una consulta con prioridad por lotes. Si el proyecto de la vista materializada no tiene capacidad en ese momento, la actualización se retrasa. Si el proyecto contiene muchas vistas cuya actualización resulta costosa, cada vista puede retrasarse significativamente en relación con sus tablas base.
Actualización manual
Puedes actualizar manualmente una vista materializada en cualquier momento.
Permisos obligatorios
Para actualizar manualmente las vistas materializadas, necesitas los permisos de gestión de identidades y accesos bigquery.tables.getData
, bigquery.tables.update
y bigquery.tables.updateData
.
Cada uno de los siguientes roles de gestión de identidades y accesos predefinidos incluye los permisos que necesitas para actualizar manualmente una vista materializada:
bigquery.dataEditor
bigquery.dataOwner
bigquery.admin
Para obtener más información sobre la gestión de identidades y accesos (IAM) de BigQuery, consulta el artículo sobre roles y permisos predefinidos.
Para actualizar los datos de la vista materializada, llama al procedimiento del sistema
BQ.REFRESH_MATERIALIZED_VIEW
. Cuando se llama a este procedimiento, BigQuery identifica los cambios que se han producido en las tablas base y los aplica a la vista materializada. La consulta que se va a ejecutar
BQ.REFRESH_MATERIALIZED_VIEW
finaliza cuando se completa la actualización.
CALL BQ.REFRESH_MATERIALIZED_VIEW('PROJECT.DATASET.MATERIALIZED_VIEW');
Monitorizar vistas materializadas
Puedes obtener información sobre las vistas materializadas y las tareas de actualización de vistas materializadas mediante la API de BigQuery. Para obtener más información, consulta el artículo Monitorizar vistas materializadas.