materialized_view

Nutzung

view: my_view {
  derived_table: {
    materialized_view: yes
    ...
  }
}
Hierarchie
materialized_view
Standardwert
no

Akzeptiert
Ein boolescher Wert (yes oder no)

Sonderregeln
materialized_view wird nur für bestimmte Dialekte unterstützt.

Definition

Die Funktion für eine materialisierte Ansicht ist eine erweiterte Funktion. Abhängig von Ihrem Dialekt kann eine materialisierte Ansicht viele Ressourcen verbrauchen. Es ist daher wichtig, dass Sie verstehen, wie Ihr Dialekt materialisierte Ansichten implementiert. In der Dokumentation Ihres Dialekts finden Sie weitere Informationen zum Verhalten Ihres Dialekts und zur Häufigkeit, mit der er Daten von materialisierten Ansichten aktualisiert.

Materialisierte Ansichten ermöglichen es Ihnen, die Funktionalität Ihrer Datenbank zu nutzen, um persistente abgeleitete Tabellen in Ihrem Looker-Projekt zu persistieren. Wenn Ihr Datenbankdialekt materialisierte Ansichten unterstützt und Ihre Looker-Verbindung mit aktivierter Option Persistente abgeleitete Tabellen konfiguriert ist, können Sie eine materialisierte Ansicht erstellen, indem Sie materialized_view: yes für eine abgeleitete Tabelle angeben. Materialisierte Ansichten werden sowohl für native abgeleitete Tabellen als auch für SQL-basierte abgeleitete Tabellen unterstützt.

Ähnlich wie eine persistente abgeleitete Tabelle (PDT) ist eine materialisierte Ansicht ein Abfrageergebnis, das im Scratch-Schema Ihrer Datenbank als Tabelle gespeichert wird. Der Hauptunterschied zwischen einer PDT und einer materialisierten Ansicht besteht in der Aktualisierung der Tabellen:

  • Bei PDTs wird die Persistenzstrategie von Looker definiert und die Persistenz von Looker verwaltet.
  • Bei materialisierten Ansichten ist die Datenbank für die Verwaltung und Aktualisierung der Daten in der Tabelle zuständig.

Deshalb benötigen Sie für die Funktionalität der materialisierten Ansicht fortgeschrittenes Wissen um Ihren Dialekt und seine Funktionen. In den meisten Fällen aktualisiert Ihre Datenbank die materialisierte Ansicht jedes Mal, wenn die Datenbank neue Daten in den Tabellen erkennt, die von der materialisierte Ansicht abgefragt werden. Materialisierte Ansichten eignen sich ideal für Szenarien, die Echtzeitdaten erfordern.

Wenn eine abgeleitete Tabelle mit einer materialized_view: yes-Anweisung auch einen datagroup-, sql_trigger_value- oder persist_for-Parameter hat, hat die materialized_view: yes-Anweisung Vorrang.

Beispiel

Diese abgeleitete Tabelle e_flights_pdt enthält die Anweisung materialized_view: yes, sodass im Scratch-Schema der Datenbank eine materialisierte Ansicht erstellt wird:


view: e_flights_pdt {
  derived_table: {
    materialized_view: yes
    explore_source: ontime {
      column: flight_num {}
      column: carrier {}
      column: arr_date {}
    }
  }
  dimension: flight_num {}
  dimension: carrier {}
  dimension: arr_date {
    type: date
  }
}

Wenn Looker die materialisierte Ansicht erstellt

Looker generiert materialisierte Ansichten auf dieselbe Weise wie andere PDTs. Wenn Sie die materialisierte Ansicht erstellen und im Entwicklungsmodus abfragen, erstellt Looker eine Entwicklungsversion der materialisierten Ansicht, die auch für die Produktion verwendet werden kann. Weitere Informationen finden Sie im Abschnitt Persistente Tabellen im Entwicklungsmodus auf der Dokumentationsseite Abgeleitete Tabellen in Looker.

Andernfalls wird die materialisierte Ansicht im nächsten Zyklus des Looker-Regenerators erstellt, nachdem die LookML der zugehörigen abgeleiteten Tabelle mit materialized_view: yes in der Produktion bereitgestellt wurde.

Stabile Datenbankansichten für materialisierte Ansichten

Looker erstellt automatisch eine stabile Datenbankansicht für jede materialisierte Ansicht. Die stabile Datenbankansicht wird in der Datenbank selbst erstellt, sodass sie außerhalb von Looker abgefragt werden kann. Dies ist dieselbe Funktion für die stabile Ansicht, die mit dem Parameter publish_as_db_view verwendet wird.

Looker erstellt die stabile Ansicht im nächsten Zyklus des Looker-Regenerators, nachdem die LookML der materialisierten Ansicht in der Produktion bereitgestellt wurde. Sobald die stabile Datenbankansicht veröffentlicht wurde, können Sie sie direkt abfragen.

Administratoren oder Nutzer mit der Berechtigung see_pdts können den Namen der stabilen Datenbankansicht im PDT-Details-Modal auf der Seite „Persistente abgeleitete Tabellen“ im Bereich Admin von Looker abrufen.

Wenn Sie eine materialisierte Ansicht direkt abfragen möchten, fügen Sie einfach den Namen des Scratch-Schemas vor dem Tabellennamen ein. Wenn der Name der stabilen Datenbankansicht beispielsweise NN_e_redflight_e_redflight_publish_as_db und der Name des Scratch-Schemas tmp lautet, können Sie die stabile Datenbankansicht mit einem Befehl wie diesem abfragen:


SELECT * from tmp.NN_e_redflight_e_redflight_publish_as_db

Anforderungen für materialisierte Ansichten

Um materialisierte Ansichten in Ihrem Looker-Projekt zu verwenden, benötigen Sie Folgendes:

  • Einen Datenbankdialekt, der materialisierte Ansichten unterstützt. Eine Liste der Dialekte, die materialisierte Ansichten unterstützen, finden Sie auf dieser Seite im Abschnitt Dialektunterstützung für materialisierte Ansichten.
  • Ein Scratch-Schema in der Datenbank. Dabei kann es sich um ein beliebiges Schema in Ihrer Datenbank handeln. Wir empfehlen aber, ein neues Schema zu erstellen, das nur zu diesem Zweck eingesetzt wird. Der Datenbankadministrator muss das Schema mit Schreibberechtigung für den Looker-Datenbankbenutzer konfigurieren.
  • Eine Looker-Verbindung, die mit der Option Persistente abgeleitete Tabellen konfiguriert ist. Dies wird normalerweise bei der ersten Konfiguration Ihrer Looker-Verbindung eingerichtet. Eine Anleitung für Ihren Datenbankdialekt finden Sie auf der Dokumentationsseite Looker-Dialekte. Sie können PDTs für Ihre Verbindung aber auch nach der Ersteinrichtung aktivieren.
  • Eine Looker-Verbindung mit der Berechtigung CREATE TABLE für das temporäre Schema in Ihrer Datenbank. Dies ist dieselbe Berechtigung, die zum Erstellen von PDTs erforderlich ist. Außerdem muss die Verbindung die Berechtigung CREATE VIEW für das temporäre Schema in Ihrer Datenbank haben, um die stabile Datenbankansicht für die materialisierte Ansicht zu erstellen. Sie können die Verbindung testen, um zu prüfen, ob die Verbindung diese Berechtigungen hat:
    • Wenn PDTs für die Verbindung aktiviert sind und die Verbindung die Berechtigung CREATE TABLE hat, gibt der Verbindungstest ein Ergebnis wie Can use persistent derived tables in temp schema "docsexamples_scratch" in database "demo_db" zurück.
    • Wenn die Verbindung stabile Ansichten zulässt und die Berechtigung CREATE VIEW hat, gibt der Verbindungstest ein Ergebnis wie Can use stable views in temp schema "docsexamples_scratch" in database "flightstats" zurück.

Wichtige Hinweise zu materialisierten Ansichten

Bei materialisierten Ansichten werden die Daten in der Tabelle nicht von Looker verwaltet und aktualisiert. Deshalb benötigen Sie für die Funktionalität der materialisierten Ansicht fortgeschrittenes Wissen um Ihren Dialekt und seine Funktionen. Beachten Sie beim Erstellen einer materialisierten Ansicht Folgendes:

  • Einige Dialekte haben Einschränkungen für materialisierte Ansichten, z. B. maximale Standardaktualisierungsintervalle und Unterstützung für Joins. Looker generiert keine LookML-Fehler für dialektspezifische Funktionen von materialisierten Ansichten. Stattdessen generiert Looker einen Fehler, wenn die materialisierte Ansicht nicht erstellt werden kann. Dieser wird entweder als Ereignis im PDT-Ereignisprotokoll oder als Laufzeitfehler angezeigt, wenn Sie versuchen, die materialisierte Ansicht abzufragen. Informationen zu den Einschränkungen für materialisierte Ansichten finden Sie in der Dokumentation Ihres Dialekts.
  • Einige Dialekte prüfen die Aktualität der Abfrage, wenn materialisierte Ansichten abgefragt werden. Dies kann zu einer geringen Verzögerung beim Abrufen der Abfrageergebnisse führen. In der Dokumentation Ihres Dialekts finden Sie Informationen dazu, ob dies für Ihren Dialekt der Fall ist.
  • Bei einigen Dialekten wird versucht, die materialisierte Ansicht inkrementell zu aktualisieren, anstatt sie vollständig neu zu erstellen. Informationen dazu finden Sie in der Dokumentation zu Ihrem Dialekt.
  • Wenn Ihre materialisierte Ansicht eine Basistabelle verwendet, die aus der Datenbank gelöscht wurde, können Sie die materialisierte Ansicht möglicherweise nicht abfragen und neue Versionen können nicht erstellt werden.
  • Wenn eine abgeleitete Tabelle mit einer materialized_view: yes-Anweisung auch einen datagroup-, sql_trigger_value- oder persist_for-Parameter hat, hat die materialized_view: yes-Anweisung Vorrang.
  • Materialisierte Ansichten unterstützen dieselben dialektspezifischen Parameter, die im Allgemeinen von abgeleiteten Tabellen unterstützt werden, z. B. Partitionierung, Sortierschlüssel und Indizes.
  • Bei kaskadierenden abgeleiteten Tabellen können materialisierte Ansichten von Looker-PDTs abhängen. Dabei gilt Folgendes:
    • Sie können eine abgeleitete Tabelle mit der Persistenzstrategie persist_for nicht in der Definition einer abgeleiteten Tabelle mit materialized_view: yes verwenden. Bei materialisierten Ansichten muss die Quelltabelle für eine materialisierte Ansicht immer in der Datenbank vorhanden sein. persist_for-abgeleitete Tabellen werden nach der im Parameter persist_for angegebenen Zeit aus der Datenbank gelöscht. Es ist also nicht garantiert, dass sie in der Datenbank vorhanden sind.
    • PDTs werden mit einem eindeutigen Namen neu erstellt. Wenn also eine materialisierte Ansicht eine PDT in ihrer Definition verwendet, wird die materialisierte Ansicht bei jeder Neuerstellung der PDT so aktualisiert, dass sie auf die neue Version der PDT verweist. Das bedeutet, dass die materialisierte Ansicht im Wesentlichen von Grund auf neu erstellt wird, wenn eine Abhängigkeit vollständig neu erstellt wird. Dies kann sich auf die Leistung auswirken. In diesem Fall ist es besser, auf eine Basistabelle zu verweisen, die nur angehängt werden kann, oder auf eine inkrementelle PDT, die mit Looker definiert wurde.

Dialektunterstützung für materialisierte Ansichten

Ob eine abgeleitete Tabelle in eine materialisierte Ansicht umgewandelt werden kann, hängt vom Datenbankdialekt ab, den Ihre Looker-Verbindung verwendet. In der aktuellen Looker-Version unterstützen die folgenden Dialekte materialisierte Ansichten:

Dialekt Unterstützt?
Actian Avalanche
Amazon Athena
Amazon Aurora MySQL
Amazon Redshift
Amazon Redshift 2.1+
Amazon Redshift Serverless 2.1+
Apache Druid
Apache Druid 0.13.x - 0.17.x
Apache Druid 0.18+
Apache Hive 2.3+
Apache Hive 3.1.2+
Apache Spark 3+
ClickHouse
ClickHouse 26+
Cloudera Impala 3.1+
Cloudera Impala 3.1+ with Native Driver
Cloudera Impala with Native Driver
DataVirtuality
Databricks
Denodo 7
Denodo 8 & 9
Dremio
Dremio 11+
Dremio 26+ with Arrow Flight SQL
Exasol
Google BigQuery Legacy SQL
Google BigQuery Standard SQL
Google Cloud AlloyDB for PostgreSQL
Google Cloud PostgreSQL
Google Cloud SQL
Google Spanner
Greenplum
HyperSQL
IBM Netezza
MariaDB
Microsoft Azure PostgreSQL
Microsoft Azure SQL Database
Microsoft Azure Synapse Analytics
Microsoft SQL Server 2008+
Microsoft SQL Server 2012+
Microsoft SQL Server 2016
Microsoft SQL Server 2017+
MongoBI
MongoSQL
MySQL
MySQL 8.0.12+
Oracle
Oracle ADWC
PostgreSQL 9.5+
PostgreSQL pre-9.5
PrestoDB
PrestoSQL
SAP HANA
SAP HANA 2+
SingleStore
SingleStore 7+
Snowflake
Teradata
Trino
Vector
Vertica