Vista MATERIALIZED_VIEWS

La vista INFORMATION_SCHEMA.MATERIALIZED_VIEWS contiene el estado de las vistas materializadas.

Permisos necesarios

Para obtener los permisos que necesitas para consultar la vista INFORMATION_SCHEMA.MATERIALIZED_VIEWS, pídele a tu administrador que te otorgue el rol de IAM de visualizador de metadatos de BigQuery (roles/bigquery.metadataViewer) en tu proyecto o conjunto de datos. Para obtener más información sobre cómo otorgar roles, consulta Administra el acceso a proyectos, carpetas y organizaciones.

Este rol predefinido contiene los permisos necesarios para consultar la vista INFORMATION_SCHEMA.MATERIALIZED_VIEWS. Para ver los permisos exactos que son necesarios, expande la sección Permisos requeridos:

Permisos necesarios

Se requieren los siguientes permisos para consultar la vista INFORMATION_SCHEMA.MATERIALIZED_VIEWS:

  • bigquery.tables.get
  • bigquery.tables.list

También puedes obtener estos permisos con roles personalizados o con otros roles predefinidos.

Para obtener más información sobre IAM de BigQuery, consulta Control de acceso con IAM.

Esquema

Cuando consultas la vista INFORMATION_SCHEMA.MATERIALIZED_VIEWS, los resultados contienen una fila por cada vista materializada de un conjunto de datos.

La vista INFORMATION_SCHEMA.MATERIALIZED_VIEWS tiene el siguiente esquema:

Nombre de la columna Tipo de datos Valor
TABLE_CATALOG STRING El nombre del proyecto que contiene el conjunto de datos. También se conoce como projectId.
TABLE_SCHEMA STRING El nombre del conjunto de datos que contiene la vista materializada. También se conoce como datasetId.
TABLE_NAME STRING El nombre de la vista materializada. También se conoce como tableId.
LAST_REFRESH_TIME TIMESTAMP La hora en que se actualizó por última vez esta vista materializada.
REFRESH_WATERMARK TIMESTAMP La marca de agua de actualización de la vista materializada. Los datos contenidos en las tablas base de la vista materializada hasta este momento se incluyen en la caché de la vista materializada.
LAST_REFRESH_STATUS RECORD Resultado del error del último trabajo de actualización automática como un objeto ErrorProto. Si está presente, indica que la última actualización automática no se realizó correctamente.

Permiso y sintaxis

Las consultas realizadas a esta vista deben incluir un conjunto de datos o un calificador de región. Para consultas con un calificador de conjunto de datos, debes tener permisos para el conjunto de datos. Para consultas con un calificador de región, debes tener permisos para el proyecto. Para obtener más información, consulta Sintaxis. En la siguiente tabla, se explican los permisos de la región y los recursos para esta vista:

Nombre de la vista Permiso del recurso Permiso de la región
[PROJECT_ID.]`region-REGION`.INFORMATION_SCHEMA.MATERIALIZED_VIEWS Nivel de proyecto REGION
[PROJECT_ID.]DATASET_ID.INFORMATION_SCHEMA.MATERIALIZED_VIEWS Nivel de conjunto de datos Ubicación del conjunto de datos
Reemplaza lo siguiente:

  • Opcional: PROJECT_ID: el ID del proyecto de Google Cloud. Si no se especifica, se usa el proyecto predeterminado.

    Por ejemplo:

    -- Returns metadata for views in a single dataset.
    SELECT * FROM myDataset.INFORMATION_SCHEMA.MATERIALIZED_VIEWS;
    
    -- Returns metadata for all views in a region.
    SELECT * FROM region-us.INFORMATION_SCHEMA.MATERIALIZED_VIEWS;
    

    Ejemplos

    Ejemplo 1:

    En el ejemplo siguiente, se recuperan todas las vistas materializadas en mal estado de la vista INFORMATION_SCHEMA.MATERIALIZED_VIEWS. Muestra las vistas materializadas con valores no NULL last_refresh_status en mydataset en tu proyecto predeterminado:myproject.

    Para ejecutar la consulta en un proyecto que no sea el predeterminado, agrega el ID del proyecto al conjunto de datos en este formato: `project_id`.dataset.INFORMATION_SCHEMA.MATERIALIZED_VIEWS (por ejemplo, `myproject`.mydataset.INFORMATION_SCHEMA.MATERIALIZED_VIEWS).

    SELECT
      table_name, last_refresh_status
    FROM
      mydataset.INFORMATION_SCHEMA.MATERIALIZED_VIEWS
    WHERE
      last_refresh_status IS NOT NULL;

    El resultado es similar al siguiente:

      +---------------+---------------------------------------------------------------------+
      |  table_name   |                        last_refresh_status                          |
      +---------------------------------------------------------------------+---------------+
      |  myview       |   {"reason":"invalidQuery","location":"query","message":"..."}      |
      +---------------------------------------------------------------------+---------------+
      

    Ejemplo 2:

    En el siguiente ejemplo, se recuperan last_refresh_time y refresh_watermark de la vista materializada myview en mydataset en tu proyecto predeterminado: myproject. El resultado muestra cuándo se actualizó por última vez la vista materializada y hasta cuando los datos de las tablas base se recopilan en la caché de la vista materializada.

    Para ejecutar la consulta en un proyecto que no sea el predeterminado, agrega el ID del proyecto al conjunto de datos en este formato: `project_id`.dataset.INFORMATION_SCHEMA.MATERIALIZED_VIEWS (por ejemplo, `myproject`.mydataset.INFORMATION_SCHEMA.MATERIALIZED_VIEWS).

    SELECT
      table_name, last_refresh_time, refresh_watermark
    FROM
      mydataset.INFORMATION_SCHEMA.MATERIALIZED_VIEWS
    WHERE
      table_name = 'myview';

    El resultado es similar al siguiente:

      +---------------+------------------------------------------------+
      |  table_name   |  last_refresh_time     | refresh_watermark     |
      +---------------+------------------------------------------------+
      |  myview       | 2023-02-22 19:37:17    | 2023-03-08 16:52:57   |
      +---------------+------------------------------------------------+