Utilizzo delle viste AWS Glue Data Catalog in AWS Glue
È possibile creare e gestire viste in AWS Glue Data Catalog, comunemente note come viste AWS Glue Data Catalog. Queste viste sono utili perché supportano più motori di query SQL e consentono quindi di accedere alla stessa vista su diversi servizi AWS, ad esempio Amazon Athena, Amazon Redshift eAWS Glue. È possibile utilizzare le viste basate su Apache Iceberg, Apache Hudi e Delta Lake.
Creando una vista nel Catalogo dati, puoi utilizzare le concessioni delle risorse e i controlli di accesso basati su tag in AWS Lake Formation per concedere l'accesso. Utilizzando questo metodo di controllo degli accessi, non è necessario configurare un accesso aggiuntivo alle tabelle a cui si fa riferimento durante la creazione della vista. Questo metodo di concessione delle autorizzazioni è chiamato semantica, mentre queste viste sono chiamate viste del definitore. Per ulteriori informazioni sul controllo degli accessi in AWS Lake Formation, consultare Concessione e revoca delle autorizzazioni nelle risorse di Catalogo dati nella Guida per gli sviluppatori di AWS Lake Formation.
Le viste del Catalogo dati sono utili per i seguenti casi d'uso:
-
Controllo granulare degli accessi: è possibile creare una vista che limiti l'accesso ai dati in base alle autorizzazioni necessarie per l'utente. Ad esempio, puoi utilizzare le viste nel Catalogo dati per impedire ai dipendenti che non lavorano nel reparto delle risorse umane di visualizzare le informazioni di identificazione personale (PII).
-
Definizione completa della vista: applicando determinati filtri alla vista di Catalogo dati, è possibile assicurare che i record di dati disponibili siano sempre completi.
-
Sicurezza avanzata: la definizione delle query utilizzata per creare la vista deve essere completa, in modo che le viste di Catalogo dati siano meno suscettibili all'intervento di soggetti malintenzionati nei comandi SQL.
-
Condivisione semplice dei dati: condividere i dati con altri account AWS senza spostarli, utilizzando la condivisione dei dati tra account in AWS Lake Formation.
Creazione di una vista di Catalogo Dati
È possibile creare viste di Catalogo dati utilizzando AWS CLI e gli script ETL AWS Glue con Spark SQL. La sintassi per la creazione di una vista di Catalogo dati include la specificazione del tipo di vista come MULTI DIALECT e del predicato SECURITY come DEFINER, che indica una vista del definitore.
Istruzione SQL di esempio per creare una vista nel Catalogo dati:
CREATE PROTECTED MULTI DIALECT VIEW database_name.catalog_view SECURITY DEFINER AS SELECT order_date, sum(totalprice) AS price FROM source_table GROUP BY order_date;
Dopo aver creato una vista in Catalogo dati, puoi utilizzare un ruolo IAM con l'autorizzazione AWS Lake Formation `SELECT` sulla vista per eseguire query da servizi come Amazon Athena, Amazon Redshift o processi AWS Glue ETL. Non è necessario concedere l'accesso alle tabelle sottostanti a cui si fa riferimento nella vista.
Per ulteriori informazioni sulla creazione e la configurazione delle viste del Catalogo dati, consulta Creazione di viste in Catalogo dati AWS Glue nella Guida per gli sviluppatori di AWS Lake Formation.
Operazioni supportate per le viste
I seguenti frammenti di comandi mostrano vari modi di lavorare con le viste nel Catalogo dati:
CREATE VIEW
Crea una vista data-catalog. Di seguito è riportato un esempio che mostra la creazione di una vista da una tabella esistente:
CREATE PROTECTED MULTI DIALECT VIEW catalog_view SECURITY DEFINER AS SELECT * FROM my_catalog.my_database.source_table
ALTER VIEW
Sintassi disponibile:
ALTER VIEW view_name [FORCE] ADD DIALECT AS query ALTER VIEW view_name [FORCE] UPDATE DIALECT AS query ALTER VIEW view_name DROP DIALECT
È possibile utilizzare l'opzione FORCE ADD DIALECT per forzare l'aggiornamento dello schema e degli oggetti secondari secondo il nuovo dialetto del motore. Tieni presente che questa operazione può causare errori di query se non utilizzi anche FORCE per aggiornare altri dialetti del motore. Di seguito è riportato un esempio:
ALTER VIEW catalog_view FORCE ADD DIALECTAS SELECT order_date, sum(totalprice) AS priceFROM source_tableGROUP BY orderdate;
Quello che segue è un esempio di come modificare una vista per aggiornare il dialetto:
ALTER VIEW catalog_view UPDATE DIALECT AS SELECT count(*) FROM my_catalog.my_database.source_table;
DESCRIBE VIEW
Sintassi disponibile per descrivere una vista:
SHOW COLUMNS {FROM|IN} view_name [{FROM|IN} database_name]: se l'utente dispone delle autorizzazioni necessarie AWS Glue e AWS Lake Formation per descrivere la vista, può elencare le colonne. Di seguito sono riportati un paio di comandi di esempio per la vista delle colonne:
SHOW COLUMNS FROM my_database.source_table; SHOW COLUMNS IN my_database.source_table;
DESCRIBE view_name: se l'utente dispone delle autorizzazioni necessarie AWS Glue e AWS Lake Formation per descrivere la vista, può elencare le colonne nella vista con i rispettivi metadati.
DROP VIEW
Sintassi disponibile:
DROP VIEW [ IF EXISTS ] view_name
L'esempio seguente mostra un'istruzione DROP che verifica l'esistenza di una vista prima di eliminarla:
DROP VIEW IF EXISTS catalog_view;
SHOW CREATE VIEW view_name: mostra l'istruzione SQL che crea la vista specificata. Di seguito è riportato un esempio che mostra la creazione di una vista data-catalog:
SHOW CREATE TABLE my_database.catalog_view;CREATE PROTECTED MULTI DIALECT VIEW my_catalog.my_database.catalog_view ( net_profit, customer_id, item_id, sold_date) TBLPROPERTIES ( 'transient_lastDdlTime' = '1736267222') SECURITY DEFINER AS SELECT * FROM my_database.store_sales_partitioned_lf WHERE customer_id IN (SELECT customer_id from source_table limit 10)
SHOW VIEWS
Elenca tutte le viste del catalogo, ad esempio le viste normali, le viste multi-dialettali (MDV) e le MDV senza il dialetto Spark. La sintassi disponibile è la seguente:
SHOW VIEWS [{ FROM | IN } database_name] [LIKE regex_pattern]:
Il seguente è un comando di esempio per mostrare le viste:
SHOW VIEWS IN marketing_analytics LIKE 'catalog_view*';
Per ulteriori informazioni sulla creazione e la configurazione delle viste data-catalog, consulta Creazione di viste in Catalogo dati AWS Glue nella Guida per gli sviluppatori di AWS Lake Formation.
Interrogazione di una vista di Catalogo Dati
Dopo aver creato una vista in Catalogo dati, è possibile eseguirvi una query. Il ruolo IAM configurato nei tuoi processi AWS Glue deve avere l'autorizzazione Lake Formation SELECT nella vista di Catalogo dati. Non è necessario concedere l'accesso alle tabelle sottostanti a cui si fa riferimento nella vista.
Dopo aver impostato tutto, è possibile eseguire query sulla vista. Ad esempio, è possibile eseguire la query seguente per accedere a una vista.
SELECT * from my_database.catalog_view LIMIT 10;
Limitazioni
Quando si utilizzano le viste di Catalogo dati, considerare le seguenti limitazioni.
-
È possibile creare viste di Catalogo dati solo con AWS Glue 5.0 e versioni successive.
-
Il definitore della vista di Catalogo dati deve avere l'accesso
SELECTalle tabelle di base sottostanti a cui la vista accede. La creazione della vista di Catalogo dati non riesce se una tabella base specifica ha dei filtri Lake Formation imposti sul ruolo del definitore. -
Le tabelle di base non devono avere l'autorizzazione
IAMAllowedPrincipalsper il data lake AWS Lake Formation. Se presente, si verifica l'errore Le viste multi-dialettali possono fare riferimento solo a tabelle senza le autorizzazioni IAMAllowedPrincipals. -
La posizione Amazon S3 della tabella deve essere registrata come posizione AWS Lake Formation del data lake. Se la tabella non è registrata, si verifica l'errore
Multi Dialect views may only reference AWS Lake Formation managed tables. Per informazioni su come registrare le posizioni Amazon S3 in AWS Lake Formation, consultare Registrazione di una posizione Amazon S3 nella Guida per gli sviluppatori di AWS Lake Formation. -
Puoi creare solo viste
PROTECTEDin Catalogo dati. Le visteUNPROTECTEDnon sono supportate. -
Non è possibile fare riferimento alle tabelle di un altro account AWS nella definizione di una vista di Catalogo dati. Inoltre, non puoi fare riferimento a una tabella nello stesso account che si trova in una Regione separata.
-
Per condividere i dati in un account o una Regione, tutta la vista deve essere condivisa in account e Regioni diverse utilizzando i link alle risorse AWS Lake Formation.
-
Le funzioni definite dall'utente (UDF) non sono supportate.
-
Le viste di Catalogo Dati non possono fare riferimento ad altre viste.