Materialisierte Ansichten überwachen

In der BigQuery-Ansicht INFORMATION_SCHEMA können Sie die Nutzung von materialisierten Ansicht überwachen und Jobs aktualisieren. Informationen zum Erstellen einer Liste von materialisierten Ansichten finden Sie unter Materialisierte Ansichten auflisten.

Ansicht INFORMATION_SCHEMA für materialisierte Ansichten

Fragen Sie die Ansicht INFORMATION_SCHEMA.TABLES ab, um materialisierte Ansichten zu ermitteln. Fragen Sie die Ansicht INFORMATION_SCHEMA.TABLE_OPTIONS ab, um die Attribute einer materialisierten Ansicht abzurufen.

Materialisierte Ansichten sind nicht in der Tabelle für INFORMATION_SCHEMA.VIEWS-Ansichten aufgeführt.

Automatische Aktualisierung überwachen

In diesem Abschnitt wird beschrieben, wie Sie Aktualisierungsdetails für materialisierte Ansichten aufrufen.

Status der letzten Aktualisierung ansehen

Rufen Sie die Methode tables.get auf oder fragen Sie die Ansicht INFORMATION_SCHEMA.MATERIALIZED_VIEWS ab, um den aktuellen Status von materialisierten Ansichten abzurufen.

Beispiel:

SELECT
  table_name, last_refresh_time, refresh_watermark, last_refresh_status
FROM
  `DATASET`.INFORMATION_SCHEMA.MATERIALIZED_VIEWS;

Wenn der Wert für last_refresh_status nicht NULL ist, ist der letzte automatische Aktualisierungsjob fehlgeschlagen. Manuelle Aktualisierungsanfragen werden hier nicht berücksichtigt. Änderungen an Basistabellen können eine Definition einer materialisierten Ansicht ungültig machen, was zu einem Fehler bei der automatischen Aktualisierung führt. Weitere Informationen finden Sie unter Inkrementelle Aktualisierungen. Wenn beispielsweise eine Spalte, auf die von der materialisierten Ansicht verwiesen wird, aus der Basistabelle entfernt wird, gibt das Feld last_refresh_status den Fehler invalidQuery zurück. Weitere Informationen finden Sie unter Fehlermeldungen.

Automatische Aktualisierungsjobs auflisten

Rufen Sie die Methode jobs.list auf, um automatische Aktualisierungsjobs für materialisierte Ansichten aufzulisten. Rufen Sie die Methode jobs.get auf, um Details zu den Jobs abzurufen. Sie können auch die INFORMATION_SCHEMA.JOBS_BY_*-Ansichten abfragen, um die Jobs abzurufen. Automatische Aktualisierungsjobs enthalten das Präfix materialized_view_refresh in der Job-ID und werden von einem BigQuery-Administratorkonto gestartet.

Beispiel:

SELECT
  job_id, total_slot_ms, total_bytes_processed,
  materialized_view_statistics.materialized_view[SAFE_OFFSET(0)].rejected_reason
  AS full_refresh_reason
FROM
  `region-us.INFORMATION_SCHEMA.JOBS_BY_PROJECT`
WHERE
  job_id LIKE '%materialized_view_refresh_%'
LIMIT 10;

Wenn Sie die Kosten für Aktualisierungsjobs beobachten und das Intervall für automatische Aktualisierungen anpassen möchten, rufen Sie die Felder total_bytes_processed und total_slot_ms auf.

So ist es beispielsweise sinnvoll, die Ansicht seltener zu aktualisieren, wenn die Aufnahmerate in den Basistabellen relativ klein ist. Wenn sich die zugrunde liegenden Daten schnell ändern, ist eine häufigere Aktualisierung sinnvoll.

Wenn die Basistabellen Daten zu vordefinierten Zeitpunkten aufnehmen, z. B. mithilfe einer nächtlichen Extrahierungs-, Transformations- und Lade-Pipeline (ETL), sollten Sie den Wartungsplan für die materialisierte Ansicht so steuern:

  1. Automatische Aktualisierung deaktivieren.

  2. Führen Sie eine manuelle Aktualisierung durch. Dies kann entweder als Teil der ETL-Pipeline stattfinden oder Sie legen eine geplante Abfrage zu bestimmten Tageszeiten fest.

Weitere Informationen zu den Preisen für materialisierte Ansichten finden Sie unter Preise für materialisierte Ansichten.

Nutzung von materialisierten Ansichten überwachen

Zum Aufrufen der Nutzung von materialisierten Ansichten für einen Abfragejob können Sie die Methode jobs.get aufrufen oder die Ansicht INFORMATION_SCHEMA.JOBS_BY_* abfragen und sich das Feld materialized_view_statistics ansehen. Es enthält Details zur Verwendung von materialisierten Ansichten durch die Abfrage, einschließlich der folgenden:

  • Ob die materialisierte Ansicht verwendet wurde
  • Ob die materialisierte Ansicht nicht verwendet wurde und warum sie abgelehnt wurde

Beispiel:

SELECT
  job_id, materialized_view_statistics
FROM
  region-US.INFORMATION_SCHEMA.JOBS_BY_PROJECT
WHERE
  job_id = '';

Fragen Sie die Ansichten INFORMATION_SCHEMA.JOBS_BY_* ab, um die Nutzung einer materialisierten Ansicht im Zeitverlauf anzuzeigen.

Die folgende Abfrage gibt beispielsweise eine Zusammenfassung der letzten Abfragejobs zurück, die die materialisierte Zielansicht verwenden:

SELECT
  mv.table_reference.dataset_id,
  mv.table_reference.table_id,
  MAX(job.creation_time) latest_job_time,
  COUNT(job_id) job_count
FROM
  region-US.INFORMATION_SCHEMA.JOBS_BY_PROJECT job,
  UNNEST(materialized_view_statistics.materialized_view) mv
WHERE
  job.creation_time > TIMESTAMP_SUB(CURRENT_TIMESTAMP, INTERVAL 7 DAY)
  AND mv.table_reference.dataset_id = 'my_dataset'
  AND mv.table_reference.table_id = 'my_materialized_view'
  AND mv.chosen = TRUE
GROUP BY 1, 2;