Vue MATERIALIZED_VIEWS

La vue INFORMATION_SCHEMA.MATERIALIZED_VIEWS contient l'état des vues matérialisées.

Autorisations requises

Pour obtenir les autorisations nécessaires pour interroger la vue INFORMATION_SCHEMA.MATERIALIZED_VIEWS, demandez à votre administrateur de vous accorder le rôle IAM Lecteur de métadonnées BigQuery (roles/bigquery.metadataViewer) sur votre projet ou votre ensemble de données. Pour en savoir plus sur l'attribution de rôles, consultez la section Gérer les accès.

Ce rôle prédéfini contient les autorisations requises pour interroger la vue INFORMATION_SCHEMA.MATERIALIZED_VIEWS. Pour afficher les autorisations exactes requises, développez la section Autorisations requises :

Autorisations requises

Les autorisations suivantes sont requises pour interroger la vue INFORMATION_SCHEMA.MATERIALIZED_VIEWS :

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

Vous pouvez également obtenir ces autorisations avec des rôles personnalisés ou d'autres rôles prédéfinis.

Pour plus d'informations sur les autorisations BigQuery, consultez la page Contrôle des accès avec IAM.

Schéma

Lorsque vous interrogez la vue INFORMATION_SCHEMA.MATERIALIZED_VIEWS, les résultats de la requête contiennent une ligne pour chaque vue d'un ensemble de données.

La vue INFORMATION_SCHEMA.MATERIALIZED_VIEWS présente le schéma suivant :

Nom de la colonne Type de données Value
TABLE_CATALOG STRING Nom du projet qui contient l'ensemble de données. Également appelé projectId.
TABLE_SCHEMA STRING Nom de l'ensemble de données contenant la vue matérialisée Également appelé datasetId.
TABLE_NAME STRING Nom de la vue matérialisée. Également appelé tableId.
LAST_REFRESH_TIME TIMESTAMP Date et heure de la dernière actualisation de la vue matérialisée.
REFRESH_WATERMARK TIMESTAMP Filigrane d'actualisation de la vue matérialisée. Les données contenues dans les tables de base de vue matérialisée jusqu'à présent sont incluses dans le cache de la vue matérialisée.
LAST_REFRESH_STATUS RECORD Résultat d'erreur de la dernière tâche d'actualisation automatique en tant qu'objet ErrorProto. Si ce champ est présent, indique que la dernière actualisation automatique a échoué.

Champ d'application et syntaxe

Les requêtes exécutées sur cette vue doivent inclure un ensemble de données ou un qualificatif de région. Pour les requêtes avec un qualificatif d'ensemble de données, vous devez disposer d'autorisations pour l'ensemble de données. Pour les requêtes avec un qualificatif de région, vous devez disposer des autorisations nécessaires sur le projet. Pour en savoir plus, consultez la section Syntaxe. Le tableau suivant explique la portée des régions et des ressources pour cette vue :

Nom de la vue Champ d'application de la ressource Champ d'application de la région
[PROJECT_ID.]`region-REGION`.INFORMATION_SCHEMA.MATERIALIZED_VIEWS Niveau Projet REGION
[PROJECT_ID.]DATASET_ID.INFORMATION_SCHEMA.MATERIALIZED_VIEWS Niveau de l'ensemble de données Emplacement d'un ensemble de données
Remplacez les éléments suivants :

Par exemple :

-- 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;

Examples

Exemple 1 :

L'exemple suivant récupère toutes les vues matérialisées non opérationnelles à partir de la vue INFORMATION_SCHEMA.MATERIALIZED_VIEWS. Il renvoie les vues matérialisées avec des valeurs last_refresh_status non NULL dans mydataset dans votre projet par défaut (myproject).

Pour exécuter la requête sur un projet autre que celui par défaut, ajoutez l'ID du projet à l'ensemble de données, en respectant le format suivant : `project_id`.dataset.INFORMATION_SCHEMA.MATERIALIZED_VIEWS. Par exemple : `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;

Le résultat ressemble à ce qui suit :

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

Exemple 2 :

L'exemple suivant récupère les valeurs last_refresh_time et refresh_watermark de la vue matérialisée myview dans mydataset de votre projet par défaut (myproject). Le résultat indique la date de la dernière actualisation de la vue matérialisée et la date de collecte des données des tables de base dans le cache de la vue matérialisée.

Pour exécuter la requête sur un projet autre que celui par défaut, ajoutez l'ID du projet à l'ensemble de données, en respectant le format suivant : `project_id`.dataset.INFORMATION_SCHEMA.MATERIALIZED_VIEWS. Par exemple : `myproject`.mydataset.INFORMATION_SCHEMA.MATERIALIZED_VIEWS.

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

Le résultat ressemble à ce qui suit :

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