Administra vistas materializadas
En este documento, se describe cómo administrar vistas materializadas en BigQuery.
La administración de BigQuery de las vistas materializadas incluye las siguientes operaciones:
- Alterar vistas materializadas
- Enumera vistas materializadas
- Obtén información sobre las vistas materializadas
- Borra vistas materializadas
- Actualizar vistas materializadas
Para obtener más información sobre las vistas materializadas, consulta lo siguiente:
- Introducción a las vistas materializadas
- Crea vistas materializadas
- Usa vistas materializadas
- Supervisar vistas materializadas
Antes de comenzar
Otorga funciones de la Identity and Access Management (IAM) que les brindan a los usuarios los permisos necesarios para realizar cada tarea de este documento. Los permisos necesarios para realizar una tarea (si existen) se enumeran en la sección “Permisos necesarios” de la tarea.
Alterar vistas materializadas
Puedes modificar una vista materializada a través de la consola de Google Cloud o la herramienta de línea de comandos de bq con el lenguaje de definición de datos (DDL) a través de ALTER MATERIALIZED
VIEW
y SET OPTIONS
Para obtener una lista de las opciones de vista materializada, consulta materialized_view_set_options_list
.
A continuación, se muestra un ejemplo que establece enable_refresh
en true
. Realiza los ajustes necesarios para tu caso práctico.
Permisos necesarios
Para modificar las vistas materializadas, necesitas los permisos bigquery.tables.get
y bigquery.tables.update
de IAM.
Cada uno de los siguientes roles predefinidos de IAM incluye los permisos que necesitas para alterar una vista materializada:
bigquery.dataEditor
bigquery.dataOwner
bigquery.admin
Para obtener más información sobre la Identity and Access Management (IAM) de BigQuery, consulta Roles y permisos predefinidos.
SQL
Para modificar una vista materializada, usa la
declaración DDL ALTER MATERIALIZED VIEW SET OPTIONS
:
En la consola de Google Cloud, ve a la página de BigQuery.
En el editor de consultas, escribe la siguiente oración:
ALTER MATERIALIZED VIEW PROJECT.DATASET.MATERIALIZED_VIEW SET OPTIONS (enable_refresh = true);
Reemplaza lo siguiente:
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 deseas modificar
Haz clic en
Ejecutar.
Si deseas obtener información sobre cómo ejecutar consultas, visita Ejecuta 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 instrucciones de configuración para Java incluidas en la guía de inicio rápido de BigQuery sobre cómo usar bibliotecas cliente. Para obtener más información, consulta la documentación de referencia de la API de BigQuery para Java.
Para autenticarte en BigQuery, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para bibliotecas cliente.
Enumera vistas materializadas
Puedes enumerar las vistas materializadas a través de la consola de Google Cloud, la herramienta de línea de comandos de o la API de BigQuery.
Permisos necesarios
Para mostrar las vistas materializadas en un conjunto de datos, necesitas el permiso bigquery.tables.list
de IAM.
Cada una de los siguientes roles predefinidos de IAM incluye los permisos que necesitas para mostrar las vistas materializadas en 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 los permisos de IAM, consulta Roles y permisos predefinidos.
El proceso para enumerar vistas materializadas es idéntico al proceso con el que se enumeran tablas. Para mostrar una lista de las vistas materializadas de un conjunto de datos, sigue estos pasos:
Console
En el panel Explorador, expande tu proyecto y selecciona un conjunto de datos.
Desplázate por la lista para ver las tablas en el conjunto de datos. Las tablas, las vistas y las vistas materializadas se identifican a través de íconos diferentes.
bq
Ejecuta el comando bq ls
. Se puede usar la marca --format
para controlar el resultado. Si enumeras vistas materializadas en un proyecto que no es el predeterminado, agrega el ID del proyecto al conjunto de datos en 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 ejecutas el comando, el campo Type
muestra el tipo de tabla.
Por ejemplo:
+-------------------------+--------------------+----------------------+-------------------+ | tableId | Type | Labels | Time Partitioning | +-------------------------+--------------------+----------------------+-------------------+ | mytable | TABLE | department:shipping | | | mymatview | MATERIALIZED_VIEW | | | +-------------------------+--------------------+----------------------+-------------------+
Ejemplos:
Ingresa el siguiente comando para enumerar las vistas materializadas en el conjunto de datos mydataset
en tu proyecto predeterminado.
bq ls --format=pretty mydataset
Ingresa el siguiente comando para enumerar las vistas materializadas en el conjunto de datos mydataset
en myotherproject
.
bq ls --format=pretty myotherproject:mydataset
API
Para mostrar una lista de las vistas materializadas con la API, llama al método tables.list
.
Go
Antes de probar este ejemplo, sigue las instrucciones de configuración para Go incluidas en la guía de inicio rápido de BigQuery sobre cómo usar bibliotecas cliente. Para obtener más información, consulta la documentación de referencia de la API de BigQuery para Go.
Para autenticarte en BigQuery, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para bibliotecas cliente.
Python
Antes de probar este ejemplo, sigue las instrucciones de configuración para Python incluidas en la guía de inicio rápido de BigQuery sobre cómo usar bibliotecas cliente. Para obtener más información, consulta la documentación de referencia de la API de BigQuery para Python.
Para autenticarte en BigQuery, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para bibliotecas cliente.
Obtén información sobre las vistas materializadas
Puedes obtener información sobre una vista materializada con SQL, la herramienta de línea de comandos de bq o la API de BigQuery.
Permisos necesarios
Para consultar información sobre una vista materializada, necesitas los siguientes permisos de Identity and Access Management (IAM):
bigquery.tables.get
bigquery.tables.list
bigquery.routines.get
bigquery.routines.list
Cada uno de los siguientes roles predefinidos de IAM incluye los permisos anteriores:
roles/bigquery.metadataViewer
roles/bigquery.dataViewer
roles/bigquery.admin
Para obtener más información sobre IAM de BigQuery, consulta Control de acceso con IAM.
Para obtener información sobre una vista materializada, incluidas las réplicas de vista materializada dependientes, sigue estos pasos:
SQL
Para obtener información sobre las vistas materializadas, consulta la vista INFORMATION_SCHEMA.TABLES
:
En la consola de Google Cloud, ve a la página de BigQuery.
En el editor de consultas, escribe la siguiente oración:
SELECT * FROM PROJECT_ID.DATASET_ID.INFORMATION_SCHEMA.TABLES WHERE table_type = 'MATERIALIZED VIEW';
Reemplaza lo siguiente:
PROJECT_ID
: Es el nombre del proyecto que contiene las vistas materializadasDATASET_ID
: Es el nombre del conjunto de datos que contiene las vistas materializadas
Haz clic en
Ejecutar.
Si deseas obtener información sobre cómo ejecutar consultas, visita Ejecuta una consulta interactiva.
bq
Usa el comando bq show
:
bq show --project=project_id --format=prettyjson dataset.materialized_view
Reemplaza lo siguiente:
- project_id: El ID del proyecto. Solo debes incluir esta marca para obtener información sobre una vista materializada en un proyecto diferente del proyecto predeterminado.
- dataset: el nombre del conjunto de datos que contiene la vista materializada.
- materialized_view: el nombre de la vista materializada sobre la que deseas obtener información.
Ejemplo:
Ingresa el siguiente comando para mostrar información sobre la vista materializada my_mv
en el conjunto de datos report_views
del proyecto myproject
.
bq show --project=myproject --format=prettyjson report_views.my_mv
API
Para obtener información de la vista materializada con la API, llama al método tables.get
.
Borra vistas materializadas
Puedes borrar una vista materializada a través de la consola de Google Cloud, la herramienta de línea de comandos de o la API.
Si borras una vista materializada, también se borrarán los permisos asociados a ella. Cuando vuelves a crear una vista materializada que se borró, también debes volver a configurar manualmente cualquier permiso de acceso previamente asociado.
Permisos necesarios
Para crear vistas materializadas, necesitas el permiso bigquery.tables.delete
de IAM.
Cada uno de los siguientes roles predefinidos de IAM incluye los permisos que necesitas para borrar una vista materializada:
bigquery.dataEditor
bigquery.dataOwner
bigquery.admin
Para obtener más información sobre la Identity and Access Management (IAM) de BigQuery, consulta Roles y permisos predefinidos.
SQL
Para borrar una vista materializada, usa la
declaración DDL DROP MATERIALIZED VIEW
:
En la consola de Google Cloud, ve a la página de BigQuery.
En el editor de consultas, escribe la siguiente oración:
DROP MATERIALIZED VIEW PROJECT.DATASET.MATERIALIZED_VIEW;
Reemplaza lo siguiente:
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 deseas borrar
Haz clic en
Ejecutar.
Si deseas obtener información sobre cómo ejecutar consultas, visita Ejecuta una consulta interactiva.
bq
Usa el comando bq rm
para borrar la vista materializada.
API
Llama al método tables.delete
y especifica los 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 la tabla de la vista materializada que borrarás.
Java
Antes de probar este ejemplo, sigue las instrucciones de configuración para Java incluidas en la guía de inicio rápido de BigQuery sobre cómo usar bibliotecas cliente. Para obtener más información, consulta la documentación de referencia de la API de BigQuery para Java.
Para autenticarte en BigQuery, configura las credenciales predeterminadas de la aplicación. Si deseas obtener más información, consulta Configura la autenticación para bibliotecas cliente.
Actualiza vistas materializadas
La actualización de una vista materializada actualiza los datos almacenados en caché de la vista para reflejar el estado actual de las tablas base.
Cuando consultas una vista materializada, BigQuery muestra resultados de los datos de la vista materializada almacenados en caché y de los datos recuperados de la tabla base. Cuando es posible, BigQuery solo lee los cambios desde la última vez que se actualizó la vista. Si bien 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, sin importar si se usa una vista materializada.
Mostrar los resultados de las consultas directamente desde la tabla base genera un costo de procesamiento más alto que mostrar los resultados de los datos de vistas materializadas almacenados en caché. Actualizar periódicamente los datos almacenados en caché de la vista materializada reduce la cantidad de datos que se muestran directamente desde la tabla base, lo que reduce el costo de procesamiento.
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. La cuenta de servicio bigquery-adminbot@system.gserviceaccount.com
realiza el trabajo de actualización automática y aparece en el historial de trabajos del proyecto de 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 5 a 30 minutos después de que se realiza un cambio en la tabla base, por ejemplo, inserciones o eliminaciones de filas.
Puedes establecer la limitación de frecuencia de actualización para administrar la frecuencia de las actualizaciones automáticas de los datos almacenados en caché y, de esta manera, administrar los costos y el rendimiento de las consultas de las vistas materializadas.
Habilita e inhabilita la actualización automática
Para desactivar la actualización automática cuando creas una vista materializada, configura enable_refresh
como false
.
CREATE MATERIALIZED VIEW PROJECT.DATASET.MATERIALIZED_VIEW PARTITION BY RANGE_BUCKET(column_name, buckets) OPTIONS (enable_refresh = false) AS SELECT ...
Para una vista materializada existente, puedes modificar el valor enable_refresh
con ALTER MATERIALIZED VIEW
.
ALTER MATERIALIZED VIEW PROJECT.DATASET.MATERIALIZED_VIEW SET OPTIONS (enable_refresh = true);
Configura la limitación de frecuencia
Puedes configurar una limitación de la frecuencia con la que se ejecuta la actualización automática. De forma predeterminada, las vistas materializadas se actualizan con una frecuencia de no más de 30 minutos.
La limitación de frecuencia de actualización se puede cambiar en cualquier momento.
Para establecer un límite de frecuencia de actualización cuando creas una vista materializada, configura refresh_interval_minutes
en DDL (o refresh_interval_ms
en la API y en la herramienta de línea de comandos de ) en el valor en cuestión.
CREATE MATERIALIZED VIEW PROJECT.DATASET.MATERIALIZED_VIEW OPTIONS (enable_refresh = true, refresh_interval_minutes = 60) AS SELECT ...
De manera similar, puedes establecer la limitación de frecuencia cuando modificas una vista materializada. En este ejemplo, se supone que ya habilitaste la actualización automática y solo deseas cambiar la limitación de frecuencia:
ALTER MATERIALIZED VIEW PROJECT.DATASET.MATERIALIZED_VIEW SET OPTIONS (refresh_interval_minutes = 60);
El límite mínimo de frecuencia de actualización es de 1 minuto. El límite máximo de frecuencia de actualización es de 7 días.
Puedes realizar una actualización manual de una vista materializada en cualquier momento, y su duración no está sujeta a la limitación de frecuencia.
Mejor esfuerzo.
La actualización automática se realiza según el criterio del mejor esfuerzo. BigQuery intenta iniciar una actualización dentro de los 5 minutos posteriores a un cambio en la tabla base (si la actualización anterior se realizó antes de 30 minutos), pero no garantiza que la actualización desde que comenzó en ese momento y tampoco garantiza cuándo se completará.
La actualización automática se trata de manera similar a una consulta con prioridad por lotes. Si el proyecto de la vista materializada no tiene la capacidad en este momento, la actualización se retrasa. Si el proyecto contiene muchas vistas cuya actualización resulta ser costosa, es posible que cada vista individual se retrase de forma considerable en relación con sus tablas base.
Actualización manual
Puedes actualizar manualmente una vista materializada en cualquier momento.
Permisos necesarios
Para actualizar de forma manual las vistas materializadas, necesitas los permisos de IAM bigquery.tables.getData
, bigquery.tables.update
y bigquery.tables.updateData
.
Cada uno de los siguientes roles predefinidos de IAM incluye los permisos que necesitas para actualizar de forma manual una vista materializada:
bigquery.dataEditor
bigquery.dataOwner
bigquery.admin
Para obtener más información sobre la Identity and Access Management (IAM) de BigQuery, consulta Roles y permisos predefinidos.
Para actualizar los datos en la vista materializada, llama al procedimiento del sistema BQ.REFRESH_MATERIALIZED_VIEW
. Cuando se invoca este procedimiento, BigQuery identifica los cambios que tuvieron lugar en las tablas base y los aplica en la vista materializada. La consulta para ejecutar BQ.REFRESH_MATERIALIZED_VIEW
finaliza cuando se completa la actualización.
CALL BQ.REFRESH_MATERIALIZED_VIEW('PROJECT.DATASET.MATERIALIZED_VIEW');
Supervisa las vistas materializadas
Puedes obtener información sobre vistas materializadas y trabajos de actualización actualizados con la API de BigQuery. Para obtener más información, consulta Supervisa vistas materializadas.