Datenkatalog-Ansichten in Athena verwenden
Für die Erstellung von Datenkatalogansichten in Amazon Athena ist eine spezielle CREATE VIEW-Anweisung erforderlich. Ihre Abfrage verwendet die konventionelle SQL SELECT-Syntax. Datenkatalogansichten werden auch als Multidialekt-Ansichten oder MDVs bezeichnet.
Erstellen einer Datenkatalog-Ansicht
Verwenden Sie die folgende Syntax, um eine Datenkatalog-Ansicht in Athena zu erstellen.
CREATE [ OR REPLACE ] PROTECTED MULTI DIALECT VIEWview_nameSECURITY DEFINER [ SHOW VIEW JSON ] ASathena-sql-statement
Anmerkung
Die SHOW VIEW JSON-Option gilt nur für Datenkatalogansichten und nicht für Athena-Ansichten. Bei Verwendung der SHOW VIEW JSON-Option wird ein „Testlauf“ durchgeführt, bei dem die Eingabe validiert wird. Wenn die Validierung erfolgreich ist, wird der JSON-Code des AWS Glue-Tabellenobjekts zurückgegeben, das die Ansicht darstellen wird. Die tatsächliche Ansicht wird nicht erstellt. Wenn die SHOW VIEW JSON-Option nicht angegeben ist, werden Validierungen durchgeführt und die Ansicht wird wie gewohnt im Datenkatalog erstellt.
Die folgende Beispielsyntax veranschaulicht, wie ein Benutzer der Definer-Rolle die Datenkatalog-Ansicht orders_by_date erstellt. Im Beispiel wird davon ausgegangen, dass die Definer-Rolle über vollständige SELECT-Berechtigungen für die orders-Tabelle in der default-Datenbank verfügt.
CREATE PROTECTED MULTI DIALECT VIEW orders_by_date SECURITY DEFINER AS SELECT orderdate, sum(totalprice) AS price FROM orders WHERE order_city = 'SEATTLE' GROUP BY orderdate
Weitere Informationen über Syntax finden Sie unter CREATE PROTECTED MULTI DIALECT VIEW.
Abfrage einer Datenkatalog-Ansicht
Nachdem die Ansicht erstellt wurde, kann der Lake Formation-Admin SELECT-Berechtigungen für die Datenkatalog-Ansicht den InvokerPrinzipalen gewähren. Die Invoker-Prinzipale können dann die Ansicht abfragen, ohne Zugriff auf die zugrunde liegenden Basistabellen zu haben, auf die in der Ansicht verwiesen wird. Im Folgenden finden Sie ein Beispiel für eine Invoker-Abfrage.
SELECT * from orders_by_date where price > 5000
Überlegungen und Einschränkungen
Die meisten der folgenden Einschränkungen der Datenkatalogansicht sind spezifisch für Athena. Zusätzliche Einschränkungen für Datenkatalogansichten, die auch für andere Dienste gelten, finden Sie in der Dokumentation zu Lake Formation.
-
Datenkatalog-Ansichten können nicht auf andere Ansichten, Datenbankressourcen-Links oder Tabellenressourcen-Links verweisen.
-
Sie können in der Ansichtsdefinition auf bis zu 10 Tabellen verweisen.
-
Tabellen dürfen nicht über die
IAMAllowedPrincipals-Data-Lake-Berechtigung in Lake Formation verfügen. Falls vorhanden, tritt ein Fehler auf. Dieser besagt, dassAnsichten mit mehreren Dialekten nur auf Tabellen ohne IamAllowedPrincipals-Berechtigungen verweisen dürfen. -
Der Amazon-S3-Speicherort der Tabelle muss als Data-Lake-Speicherort registriert sein. Wenn die Tabelle nicht so registriert ist, tritt der Fehler
Multi-Dialect-Ansichten dürfen nur auf von Lake Formation verwaltete Tabellen verweisenauf. Informationen zur Registrierung von Amazon-S3-Speicherorten in Lake Formation finden Sie unter Registrierung eines Amazon-S3-Speicherorts im AWS Lake Formation-Entwicklerhandbuch. -
Die AWS Glue API-Aufrufe GetTables und SearchTables aktualisieren den Parameter
IsRegisteredWithLakeFormationnicht. Verwenden Sie die AWS Glue GetTable-API, um den richtigen Wert für den Parameter anzuzeigen. Weitere Informationen finden Sie unter GetTables- und SearchTables-APIs aktualisieren den Wert für den Parameter isRegisteredWithLakeFormation nicht im AWS Lake Formation-Entwicklerhandbuch. -
Beim
DEFINER-Prinzipal kann es sich nur um eine IAM-Rolle handeln. -
Die
DEFINER-Rolle muss über vollständigeSELECT-Berechtigungen (gewährbar) für die zugrunde liegenden Tabellen verfügen. -
UNPROTECTED-Data-Catalog-Ansichten werden nicht unterstützt. -
Benutzerdefinierte Funktionen (UDFs) werden in der Ansichtsdefinition nicht unterstützt.
-
Verbunddatenquellen von Athena können nicht in Data-Catalog-Ansichten verwendet werden.
-
Data-Catalog-Ansichten werden für externe Hive-Metastores nicht unterstützt.
-
Athena zeigt eine Fehlermeldung an, wenn veraltete Ansichten erkannt werden. Eine veraltete Ansicht wird gemeldet, wenn eines der folgenden Ereignisse auftritt:
-
Die Ansicht verweist auf Tabellen oder Datenbanken, die nicht vorhanden sind.
-
Eine Schema- oder Metadatenänderung wird in einer referenzierten Tabelle vorgenommen.
-
Eine referenzierte Tabelle wird gelöscht und mit einem anderen Schema oder einer anderen Konfiguration neu erstellt.
-
Berechtigungen
Für Data-Catalog-Ansichten sind drei Rollen erforderlich: Lake Formation Admin, Definer und Invoker.
-
Lake Formation Admin– Hat Zugriff auf die Konfiguration aller Lake-Formation-Berechtigungen. -
Definer– Erstellt die Data-Catalog-Ansicht. DieDefiner-Rolle muss über vollständigeSELECT-Berechtigungen für alle zugrunde liegenden Tabellen verfügen, auf die die Ansichtsdefinition verweist. -
Invoker– Kann die Data-Catalog-Ansicht abfragen oder deren Metadaten prüfen. Um den Aufrufer einer Abfrage anzuzeigen, können Sie dieinvoker_principal()-DML-Funktion verwenden. Weitere Informationen finden Sie unter invoker_principal().
Die Vertrauensbeziehungen der Definer-Rolle müssen die sts:AssumeRole-Aktion für AWS Glue und die Service-Prinzipale von Lake Formation zulassen. Weitere Informationen finden Sie unter Voraussetzungen für das Erstellen von Ansichten im AWS Lake Formation-Entwicklerhandbuch.
Für den Athena-Zugriff sind außerdem IAM-Berechtigungen erforderlich. Weitere Informationen finden Sie unter AWS verwaltete Richtlinien für Amazon Athena.