View a markdown version of this page

Verwendung materialisierter Ansichten mit Amazon EMR - Amazon EMR

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Verwendung materialisierter Ansichten mit Amazon EMR

Amazon EMR Version 7.12.0 und höher unterstützt die Erstellung und Verwaltung materialisierter Apache Iceberg-Ansichten im Glue-Datenkatalog. AWS Eine materialisierte Ansicht ist eine verwaltete Tabelle, die das vorberechnete Ergebnis einer SQL-Abfrage im Apache Iceberg-Format speichert und schrittweise aktualisiert wird, wenn sich die zugrunde liegenden Quelltabellen ändern. Sie können materialisierte Ansichten verwenden, um Datentransformations-Pipelines zu vereinfachen und die Abfrageleistung für komplexe analytische Workloads zu beschleunigen.

Wenn Sie eine materialisierte Ansicht mit Spark auf Amazon EMR erstellen, werden die Ansichtsdefinition und die Metadaten im Glue-Datenkatalog gespeichert. AWS Die vorberechneten Ergebnisse werden als Apache Iceberg-Tabellen in Amazon S3-Tabelles-Buckets oder Amazon S3-Buckets für allgemeine Zwecke in Ihrem Konto gespeichert. AWS Der AWS Glue Data Catalog überwacht automatisch Quelltabellen und aktualisiert materialisierte Ansichten mithilfe einer verwalteten Recheninfrastruktur.

So funktionieren materialisierte Ansichten mit Amazon EMR

Materialisierte Ansichten lassen sich über die Iceberg-Unterstützung von Apache Spark in Amazon EMR integrieren. Wenn Sie Ihre Spark-Sitzung für die Verwendung des AWS Glue-Datenkatalogs konfigurieren, können Sie materialisierte Ansichten mithilfe der Standard-SQL-Syntax erstellen. Der Spark-Optimierer kann Abfragen automatisch umschreiben, um materialisierte Ansichten zu verwenden, wenn diese eine bessere Leistung bieten, sodass der Anwendungscode nicht manuell geändert werden muss.

Der AWS Glue-Datenkatalog behandelt alle betrieblichen Aspekte der Wartung materialisierter Ansichten, einschließlich:

  • Erkennung von Änderungen in Quelltabellen mithilfe der Metadatenebene von Apache Iceberg

  • Planung und Ausführung von Aktualisierungsvorgängen mithilfe von Managed Spark Compute

  • Anhand der Datenänderungen wird festgelegt, ob eine vollständige oder eine inkrementelle Aktualisierung durchgeführt werden soll

  • Speichern von vorberechneten Ergebnissen im Apache Iceberg-Format für den Zugriff mit mehreren Engines

Sie können materialisierte Ansichten von Amazon EMR aus abfragen, indem Sie dieselben Spark-SQL-Schnittstellen verwenden, die Sie für reguläre Tabellen verwenden. Auf die vorberechneten Daten kann auch von anderen Diensten wie Amazon Athena und Amazon Redshift aus zugegriffen werden.

Voraussetzungen

Um materialisierte Ansichten mit Amazon EMR zu verwenden, benötigen Sie:

  • Ein Konto AWS

  • Ein Amazon EMR-Cluster, auf dem Version 7.12.0 oder höher ausgeführt wird

  • Quelltabellen im Apache Iceberg-Format, die im Glue-Datenkatalog registriert sind AWS

  • AWS Lake Formation-Berechtigungen, die für Quelltabellen und Zieldatenbanken konfiguriert sind

  • Ein S3-Tabelles-Bucket oder ein S3-Allzweck-Bucket, der bei AWS Lake Formation zum Speichern von Materialized View-Daten registriert ist

Konfiguration von Spark für die Verwendung materialisierter Ansichten

Um materialisierte Ansichten zu erstellen und zu verwalten, konfigurieren Sie Ihre Spark-Sitzung mit den erforderlichen Iceberg-Erweiterungen und Katalogeinstellungen. Die Konfiguration variiert je nachdem, ob Ihre Quelltabellen und materialisierten Ansichten S3-Tabellen-Buckets oder S3-Buckets für allgemeine Zwecke verwenden.

Konfiguration für S3-Tabellen

Wenn Sie S3-Tabelles-Buckets für materialisierte Ansichten verwenden, konfigurieren Sie separate Katalogverweise für Ihre Quelltabellen und materialisierten Ansichten:

spark-sql \ --conf spark.sql.extensions=org.apache.iceberg.spark.extensions.IcebergSparkSessionExtensions \ --conf spark.sql.catalog.glue_catalog=org.apache.iceberg.spark.SparkCatalog \ --conf spark.sql.catalog.glue_catalog.type=glue \ --conf spark.sql.catalog.glue_catalog.warehouse=s3://amzn-s3-demo-bucket/warehouse \ --conf spark.sql.catalog.glue_catalog.glue.region=us-east-1 \ --conf spark.sql.catalog.glue_catalog.glue.id=111122223333 \ --conf spark.sql.catalog.glue_catalog.glue.account-id=111122223333 \ --conf spark.sql.catalog.glue_catalog.glue.lakeformation-enabled=true \ --conf spark.sql.catalog.s3t_catalog=org.apache.iceberg.spark.SparkCatalog \ --conf spark.sql.catalog.s3t_catalog.type=glue \ --conf spark.sql.catalog.s3t_catalog.glue.id=111122223333:s3tablescatalog/my-table-bucket \ --conf spark.sql.catalog.s3t_catalog.glue.account-id=111122223333 \ --conf spark.sql.catalog.s3t_catalog.glue.lakeformation-enabled=true \ --conf spark.sql.catalog.s3t_catalog.warehouse=s3://amzn-s3-demo-bucket/mv-warehouse \ --conf spark.sql.catalog.s3t_catalog.glue.region=us-east-1 \ --conf spark.sql.defaultCatalog=s3t_catalog \ // turn on automatic query rewrite (optional) --conf spark.sql.optimizer.answerQueriesWithMVs.enabled=true

Konfiguration für S3-Buckets für allgemeine Zwecke

Wenn Sie S3-Buckets für allgemeine Zwecke verwenden, konfigurieren Sie eine einzelne Katalogreferenz:

spark-sql \ --conf spark.sql.extensions=org.apache.iceberg.spark.extensions.IcebergSparkSessionExtensions \ --conf spark.sql.catalog.glue_catalog=org.apache.iceberg.spark.SparkCatalog \ --conf spark.sql.catalog.glue_catalog.type=glue \ --conf spark.sql.catalog.glue_catalog.warehouse=s3://amzn-s3-demo-bucket/warehouse \ --conf spark.sql.catalog.glue_catalog.glue.region=us-east-1 \ --conf spark.sql.catalog.glue_catalog.glue.id=111122223333 \ --conf spark.sql.catalog.s3t_catalog.glue.account-id=111122223333 \ --conf spark.sql.catalog.s3t_catalog.glue.lakeformation-enabled=true \ --conf spark.sql.defaultCatalog=glue_catalog \ // turn on automatic query rewrite (optional) --conf spark.sql.optimizer.answerQueriesWithMVs.enabled=true

Inkrementelle Aktualisierung aktivieren

Um die inkrementelle Aktualisierungsoptimierung zu aktivieren, fügen Sie Ihrer Spark-Sitzung die folgenden Konfigurationseigenschaften hinzu:

spark-sql \ --conf spark.sql.optimizer.incrementalMVRefresh.enabled=true \

Konfigurationsparameter

Die folgenden Konfigurationsparameter steuern das Verhalten der Materialized View:

  • spark.sql.extensions— Aktiviert die Iceberg Spark-Sitzungserweiterungen, die für die Unterstützung von Materialized Views erforderlich sind.

  • spark.sql.optimizer.answerQueriesWithMVs.enabled— Ermöglicht das automatische Umschreiben von Abfragen, um materialisierte Ansichten zu verwenden. Auf „true“ setzen, um diese Optimierung zu aktivieren.

  • spark.sql.optimizer.incrementalMVRefresh.enabled— Aktiviert die inkrementelle Aktualisierungsoptimierung. Auf „true“ setzen, um nur geänderte Daten bei Aktualisierungsvorgängen zu verarbeiten.

Erstellen von materialisierten Ansichten

Sie erstellen materialisierte Ansichten mithilfe der SQL-Anweisung CREATE MATERIALIZED VIEW. Die View-Definition spezifiziert die Transformationslogik als SQL-Abfrage, die auf eine oder mehrere Quelltabellen verweist.

DLLs

Ansicht erstellen

{ CREATE OR REPLACE MATERIALIZED VIEW | CREATE MATERIALIZED VIEW [ IF NOT EXISTS ] } view_identifier [ view_clauses ] [ schedule_clauses ] AS [ select_statement ] view_clauses = { [ LOCATION location ] | [ PARTITIONED BY (col [, ...]) ] | [ COMMENT view_comment ] | [ SCHEDULE [ REFRESH ] schedule_clause ] } schedule_clause = { EVERY number { HOUR | HOURS | DAY | DAYS | WEEK | WEEKS } }
Anmerkung

Die view_clauses müssen vor dem select_statement stehen.

Erstellen einer grundlegenden materialisierten Ansicht

Im folgenden Beispiel wird eine materialisierte Ansicht erstellt, die Bestelldaten nach Kunden aggregiert. Verwenden Sie dabei vollqualifizierte Tabellennamen mit dreiteiligen Benennungskonventionen in der Ansichtsdefinition:

CREATE MATERIALIZED VIEW customer_orders AS SELECT customer_name, COUNT(*) as order_count, SUM(amount) as total_amount FROM glue_catalog.sales.orders GROUP BY customer_name;

Erstellen einer materialisierten Ansicht mit automatischer Aktualisierung

Um die automatische Aktualisierung zu konfigurieren, geben Sie beim Erstellen der Ansicht einen Aktualisierungszeitplan an. Verwenden Sie dabei vollqualifizierte Tabellennamen mit dreiteiliger Benennungskonvention in der Ansichtsdefinition:

CREATE MATERIALIZED VIEW customer_orders SCHEDULE REFRESH EVERY 1 HOUR AS SELECT customer_name, COUNT(*) as order_count, SUM(amount) as total_amount FROM glue_catalog.sales.orders GROUP BY customer_name;

Erstellen einer materialisierten Ansicht mit katalogübergreifenden Verweisen

Wenn sich Ihre Quelltabellen in einem anderen Katalog befinden als Ihre materialisierte Ansicht, verwenden Sie vollqualifizierte Tabellennamen mit dreiteiliger Benennungskonvention sowohl im Ansichtsnamen als auch in der Ansichtsdefinition:

CREATE MATERIALIZED VIEW s3t_catalog.analytics.customer_summary AS SELECT customer_name, COUNT(*) as order_count, SUM(amount) as total_amount FROM glue_catalog.sales.orders GROUP BY customer_name;

Abfragen materialisierter Ansichten

Nachdem Sie eine materialisierte Ansicht erstellt haben, können Sie sie wie jede andere Tabelle mit Standard-SQL-SELECT-Anweisungen abfragen:

SELECT * FROM customer_orders;

Automatisches Umschreiben der Abfrage

Wenn das automatische Neuschreiben von Abfragen aktiviert ist, analysiert der Spark-Optimierer Ihre Abfragen und verwendet automatisch materialisierte Ansichten, wenn sie die Leistung verbessern können. Zum Beispiel, wenn Sie die folgende Abfrage ausführen:

SELECT customer_name, COUNT(*) as order_count, SUM(amount) as total_amount FROM orders GROUP BY customer_name;

Der Spark-Optimierer schreibt diese Abfrage automatisch um, um die materialisierte Ansicht customer_orders zu verwenden, anstatt die Basis-Order-Tabelle zu verarbeiten, vorausgesetzt, die materialisierte Ansicht ist aktuell.

Überprüfung des automatischen Umschreibens von Abfragen

Verwenden Sie den Befehl EXPLAIN EXTENDED, um zu überprüfen, ob eine Abfrage das automatische Umschreiben von Abfragen verwendet:

EXPLAIN EXTENDED SELECT customer_name, COUNT(*) as order_count, SUM(amount) as total_amount FROM orders GROUP BY customer_name;

Suchen Sie im Ausführungsplan nach dem Namen der materialisierten Ansicht in der BatchScan Operation. Wenn im Plan BatchScan glue_catalog.analytics.customer_orders statt glue_catalog.sales.orders angezeigt wird, wurde die Abfrage automatisch so umgeschrieben, dass sie die BatchScan materialisierte Ansicht verwendet.

Anmerkung

Nach dem Erstellen einer materialisierten Ansicht benötigt das automatische Umschreiben der Abfrage einige Zeit, bis der Spark-Metadaten-Cache gefüllt ist. Dieser Vorgang ist in der Regel innerhalb von 30 Sekunden abgeschlossen.

Aktualisieren materialisierter Ansichten

Sie können materialisierte Ansichten mit zwei Methoden aktualisieren: vollständige Aktualisierung oder inkrementelle Aktualisierung. Bei der vollständigen Aktualisierung wird die gesamte materialisierte Ansicht aus allen Basistabellendaten neu berechnet, während bei der inkrementellen Aktualisierung nur die Daten verarbeitet werden, die sich seit der letzten Aktualisierung geändert haben.

Manuelle vollständige Aktualisierung

Um eine vollständige Aktualisierung einer materialisierten Ansicht durchzuführen:

REFRESH MATERIALIZED VIEW customer_orders FULL;

Nachdem Sie diesen Befehl ausgeführt haben, fragen Sie die materialisierte Ansicht ab, um die aktualisierten Ergebnisse zu überprüfen:

SELECT * FROM customer_orders;

Manuelle inkrementelle Aktualisierung

Um eine inkrementelle Aktualisierung durchzuführen, stellen Sie sicher, dass die inkrementelle Aktualisierung in Ihrer Spark-Sitzungskonfiguration aktiviert ist, und führen Sie dann Folgendes aus:

REFRESH MATERIALIZED VIEW customer_orders;

Der AWS Glue-Datenkatalog bestimmt automatisch, ob eine inkrementelle Aktualisierung auf der Grundlage der Ansichtsdefinition und der Menge der geänderten Daten möglich ist. Wenn eine inkrementelle Aktualisierung nicht möglich ist, wird der Vorgang auf die vollständige Aktualisierung zurückgesetzt.

Die Ausführung der inkrementellen Aktualisierung wird überprüft

Um zu bestätigen, dass die inkrementelle Aktualisierung erfolgreich ausgeführt wurde, können Sie die lastRefreshType Tabelleneigenschaften überprüfen, indem Sie die folgenden Befehle ausführen:

SHOW TBLPROPERTIES <mvName>("lastRefreshType")

Dies kann auch erreicht werden, indem Sie die Debug-Protokollierung aktivieren, indem Sie Ihre Spark-Log-Konfiguration ändern:

  1. Öffnen Sie die Spark Log4j-Konfigurationsdatei:

    sudo vim /usr/lib/spark/conf/log4j2.properties
  2. Fügen Sie die folgenden Logger-Konfigurationen hinzu:

    logger.spark.name = org.apache.spark.sql logger.spark.level = debug logger.inmemcache.name = org.apache.spark.sql.InMemMvMetadataCache logger.inmemcache.level = off
  3. Suchen Sie nach der Ausführung eines Aktualisierungsvorgangs in der Spark-Ausgabe nach der folgenden Meldung:

    DEBUG RefreshMaterializedViewExec: Executed Incremental Refresh

Verwaltung materialisierter Ansichten

Amazon EMR bietet SQL-Befehle für die Verwaltung des Lebenszyklus materialisierter Ansichten.

Beschreibung einer materialisierten Ansicht

So zeigen Sie Metadaten zu einer materialisierten Ansicht an, einschließlich ihrer Definition, ihres Aktualisierungsstatus und des Zeitstempels der letzten Aktualisierung:

DESCRIBE EXTENDED customer_orders;

Eine materialisierte Ansicht ändern

So ändern Sie den Aktualisierungszeitplan einer vorhandenen Materialized View:

ALTER MATERIALIZED VIEW customer_orders ADD SCHEDULE REFRESH EVERY 2 HOURS;

Um die automatische Aktualisierung zu entfernen:

ALTER MATERIALIZED VIEW customer_orders DROP SCHEDULE;

Löschen einer materialisierten Ansicht

Um eine materialisierte Ansicht zu löschen:

DROP MATERIALIZED VIEW customer_orders;

Mit diesem Befehl wird die Definition der materialisierten Ansicht aus dem AWS Glue-Datenkatalog entfernt und die zugrunde liegenden Iceberg-Tabellendaten aus Ihrem S3-Bucket gelöscht.

Berechtigungen für materialisierte Ansichten

Um materialisierte Ansichten zu erstellen und zu verwalten, müssen Sie Berechtigungen für die IAM-Rolle konfigurieren, die die Ansicht erstellt (die Definer-Rolle). Amazon EMR unterstützt zwei Berechtigungsmodelle:

  • Nur IAM-Richtlinien — Wenn Sie Ihren Data Lake mit IAM-Richtlinien verwalten, ist keine AWS Lake Formation-Konfiguration erforderlich.

  • AWS Lake Formation — Wenn Sie AWS Lake Formation bereits zur Steuerung Ihres Data Lake verwenden, können Sie AWS Lake Formation-Berechtigungen für materialisierte Ansichten konfigurieren.

Erforderliche Berechtigungen für die Definer-Rolle

Die Definer-Rolle muss über die folgenden Lake Formation-Berechtigungen verfügen:

  • Für Quelltabellen — SELECT- oder ALL-Berechtigungen ohne Zeilen-, Spalten- oder Zellenfilter

  • In der Zieldatenbank — CREATE_TABLE-Berechtigung

  • Zum AWS Glue-Datenkatalog — GetTable und CreateTable zu den API-Berechtigungen

Wenn Sie eine materialisierte Ansicht erstellen, wird der ARN der Definer-Rolle in der Ansichtsdefinition gespeichert. Der AWS Glue-Datenkatalog übernimmt diese Rolle bei der Ausführung automatischer Aktualisierungsvorgänge. Wenn die Definierer-Rolle den Zugriff auf Quelltabellen verliert, schlagen Aktualisierungsvorgänge fehl, bis die Berechtigungen wiederhergestellt sind.

Zugriff auf materialisierte Ansichten gewähren

Um anderen Benutzern Zugriff auf die Abfrage einer materialisierten Ansicht zu gewähren, verwenden Sie AWS Lake Formation, um die SELECT-Berechtigung für die Materialized View-Tabelle zu gewähren. Benutzer können die materialisierte Ansicht abfragen, ohne direkten Zugriff auf die zugrunde liegenden Quelltabellen zu benötigen.

Ausführliche Informationen zur Konfiguration von Lake Formation-Berechtigungen finden Sie unter Erteilen und Widerrufen von Berechtigungen für Datenkatalogressourcen im AWS Lake Formation Developer Guide.

Überwachung von Vorgängen bei Materialized View

Der AWS Glue-Datenkatalog veröffentlicht Metriken und Protokolle für Aktualisierungsvorgänge bei Materialized Views auf Amazon. CloudWatch Sie können den Aktualisierungsstatus, die Dauer und das Datenvolumen, das mithilfe von CloudWatch Metriken verarbeitet wird, überwachen.

Aktualisierungsmetriken anzeigen

So zeigen Sie Aktualisierungsmetriken für Materialized Views an:

  1. Öffnen Sie die CloudWatch Konsole.

  2. Wählen Sie im Navigationsbereich die Option Metriken aus.

  3. Wählen Sie den Glue-Namespace.

  4. Filtern Sie Metriken nach dem Namen der materialisierten Ansicht.

Alarme einrichten

Um Benachrichtigungen zu erhalten, wenn Aktualisierungsvorgänge fehlschlagen oder die erwartete Dauer überschreiten, erstellen Sie CloudWatch Alarme für Materialized View-Metriken. Sie können EventBridge Amazon-Regeln auch so konfigurieren, dass automatische Reaktionen auf Aktualisierungsereignisse ausgelöst werden.

Beispiel: Vollständiger Arbeitsablauf

Das folgende Beispiel zeigt einen vollständigen Workflow zum Erstellen und Verwenden einer materialisierten Ansicht auf Amazon EMR.

  1. Stellen Sie mithilfe von SSH eine Verbindung zu Ihrem primären EMR-Clusterknoten her.

  2. Erstellen Sie eine Basistabelle mit Beispieldaten:

    spark-sql \ --conf spark.sql.extensions=org.apache.iceberg.spark.extensions.IcebergSparkSessionExtensions \ --conf spark.sql.catalog.glue_catalog=org.apache.iceberg.spark.SparkCatalog \ --conf spark.sql.catalog.glue_catalog.type=glue \ --conf spark.sql.catalog.glue_catalog.warehouse=s3://amzn-s3-demo-bucket/warehouse \ --conf spark.sql.catalog.glue_catalog.glue.region=us-east-1 \ --conf spark.sql.catalog.glue_catalog.glue.id=111122223333 \ --conf spark.sql.catalog.glue_catalog.glue.account-id=111122223333 \ --conf spark.sql.catalog.glue_catalog.glue.lakeformation-enabled=true \ --conf spark.sql.defaultCatalog=glue_catalog \ --conf spark.sql.optimizer.answerQueriesWithMVs.enabled=true CREATE DATABASE IF NOT EXISTS sales; USE sales; CREATE TABLE orders ( id INT, customer_name STRING, amount DECIMAL(10,2), order_date DATE ); INSERT INTO orders VALUES (1, 'John Doe', 150.00, DATE('2024-01-15')), (2, 'Jane Smith', 200.50, DATE('2024-01-16')), (3, 'Bob Johnson', 75.25, DATE('2024-01-17'));
  3. Erstellen Sie eine materialisierte Ansicht:

    CREATE MATERIALIZED VIEW customer_summary AS SELECT customer_name, COUNT(*) as order_count, SUM(amount) as total_amount FROM glue_catalog.sales.orders GROUP BY customer_name;
  4. Fragen Sie die materialisierte Ansicht ab:

    SELECT * FROM customer_summary;
  5. Fügen Sie zusätzliche Daten in die Basistabelle ein:

    INSERT INTO orders VALUES (4, 'Jane Smith', 350.00, DATE('2024-01-18')), (5, 'Bob Johnson', 100.25, DATE('2024-01-19'));
  6. Aktualisieren Sie die materialisierte Ansicht:

    REFRESH MATERIALIZED VIEW customer_summary FULL;
  7. Überprüfen Sie die aktualisierten Ergebnisse:

    SELECT * FROM customer_summary;

Überlegungen und Einschränkungen

Beachten Sie Folgendes, wenn Sie materialisierte Ansichten mit Amazon EMR verwenden:

  • Für materialisierte Ansichten ist Amazon EMR Version 7.12.0 oder höher erforderlich.

  • Quelltabellen müssen Apache Iceberg-Tabellen sein, die im Glue-Datenkatalog registriert sind. AWS Apache Hive-, Apache Hudi- und Linux Foundation Delta Lake-Tabellen werden beim Start nicht unterstützt.

  • Quelltabellen müssen sich in derselben AWS Region und demselben AWS Konto wie die materialisierte Ansicht befinden.

  • Materialisierte Ansichten können AWS Glue Data Catalog-Ansichten, Ansichten mit mehreren Dialekten oder andere materialisierte Ansichten nicht als Quelltabellen referenzieren.

  • Die View-Definer-Rolle muss vollen Lesezugriff (SELECT- oder ALL-Berechtigung) auf alle Quelltabellen haben, ohne dass Zeilen-, Spalten- oder Zellenfilter angewendet werden.

  • Materialisierte Ansichten sind letztendlich konsistent mit Quelltabellen. Während des Aktualisierungsfensters geben Abfragen möglicherweise veraltete Daten zurück. Führen Sie eine manuelle Aktualisierung aus, um sofortige Konsistenz zu gewährleisten.

  • Das Mindestintervall für die automatische Aktualisierung beträgt eine Stunde.

  • Die inkrementelle Aktualisierung unterstützt eine eingeschränkte Teilmenge von SQL-Vorgängen. Die Ansichtsdefinition muss aus einem einzelnen SELECT-FROM-WHERE-GROUP BY-HAVING Block bestehen und darf keine Mengenoperationen, Unterabfragen, das DISTINCT-Schlüsselwort in SELECT oder andere Aggregatfunktionen, Fensterfunktionen oder Verknüpfungen als INNER JOIN enthalten.

  • Die inkrementelle Aktualisierung unterstützt keine benutzerdefinierten Funktionen oder bestimmte integrierte Funktionen. Nur eine Teilmenge der integrierten Funktionen von Spark SQL wird unterstützt.

  • Das automatische Umschreiben von Abfragen berücksichtigt nur materialisierte Ansichten, deren Definitionen zu einer eingeschränkten SQL-Teilmenge gehören, ähnlich wie bei inkrementellen Aktualisierungseinschränkungen.

  • Vollständige Aktualisierungsvorgänge überschreiben die gesamte Tabelle und führen dazu, dass vorherige Snapshots nicht mehr verfügbar sind.

  • Bezeichner, die andere Sonderzeichen als alphanumerische Zeichen und Unterstriche enthalten, werden in CREATE MATERIALIZED VIEW-Abfragen nicht unterstützt.

  • Materialized View-Spalten, die mit dem Präfix __ivm beginnen, sind für die Verwendung durch das System reserviert. AWS behält sich das Recht vor, diese Spalten in zukünftigen Versionen zu ändern oder zu entfernen.

  • Die Klauseln SORT BY, LIMIT, OFFSET, CLUSTER BY und ORDER BY werden in Definitionen für materialisierte Ansichten nicht unterstützt.

  • Cross-Region und kontoübergreifende Quelltabellen werden nicht unterstützt.

  • Non-deterministic Funktionen wie rand () oder current_timestamp () werden in Definitionen für materialisierte Ansichten nicht unterstützt.