CREATE MATERIALIZED VIEW - Amazon Redshift

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

CREATE MATERIALIZED VIEW

Crea una vista materializzata basata su una o più tabelle Amazon Redshift. Le viste materializzate possono basarsi anche su tabelle esterne create utilizzando Spectrum o una query federata. Per informazioni su Spectrum, vedere Esecuzione di query sui dati esterni utilizzando Amazon Redshift Spectrum. Per informazioni sulla query federata, vedere Esecuzione di query su dati con query federate in Amazon Redshift.

Sintassi

CREATE MATERIALIZED VIEW mv_name
[ BACKUP { YES | NO } ]
[ table_attributes ]
[ AUTO REFRESH { YES | NO } ]
AS query 

Parametri

BACKUP

Una clausola che specifica se la vista materializzata deve essere inclusa nelle istantanee automatiche e manuali del cluster.

Per le viste materializzate che non contengono dati critici, specifica BACKUP NO per risparmiare tempo di elaborazione durante la creazione di istantanee e il ripristino da istantanee e per ridurre lo spazio di archiviazione su Amazon Simple Storage Service. L'impostazione BACKUP NO non ha alcun effetto sulla replica automatica dei dati su altri nodi all'interno del cluster, quindi le viste materializzate con BACKUP NO specificato vengono ripristinate in caso di errore del nodo. L'impostazione predefinita è. BACKUP YES

table_attributes

Una clausola che specifica come vengono distribuiti i dati nella vista materializzata, inclusi i seguenti:

  • Lo stile della distribuzione della vista materializzata, nel formato DISTSTYLE { EVEN | ALL | KEY }. Omettendo questa clausola, la modalità di distribuzione è impostata su EVEN. Per ulteriori informazioni, consulta Stili di distribuzione.

  • La chiave di distribuzione per la vista materializzata, nel formato DISTKEY ( distkey_identifier ). Per ulteriori informazioni, consulta Indicazione degli stili di distribuzione.

  • La chiave di ordinamento per la vista materializzata, nel formato SORTKEY ( column_name [, ...] ). Per ulteriori informazioni, consulta Utilizzo delle chiavi di ordinamento.

AS query

Una istruzione SELECT valida che definisce la vista materializzata e il suo contenuto. Il set di risultati della query definisce le colonne e le righe della vista materializzata. Per informazioni sulle limitazioni durante la creazione di viste materializzate , consultare Limitazioni.

Inoltre, i costrutti SQL linguistici specifici utilizzati nella query determinano se la vista materializzata può essere aggiornata in modo incrementale o completo. Per informazioni sul metodo di aggiornamento, consultare REFRESH MATERIALIZED VIEW. Per informazioni sulle limitazioni per l'aggiornamento incrementale, consultare Limitazioni per l'aggiornamento incrementale.

Se la query contiene un SQL comando che non supporta l'aggiornamento incrementale, Amazon Redshift visualizza un messaggio che indica che la vista materializzata utilizzerà un aggiornamento completo. Il messaggio può essere visualizzato o meno, a seconda dell'applicazione client. SQL Controllare la state colonna STV_MV_INFO per visualizzare il tipo di aggiornamento utilizzato da una vista materializzata.

AUTO REFRESH

Una clausola che definisce se la vista materializzata deve essere aggiornata automaticamente con le ultime modifiche apportate dalle tabelle di base. Il valore predefinito è NO. Per ulteriori informazioni, consulta Aggiornamento di una vista materializzata.

Note per l'utilizzo

Per creare una vista materializzata, è necessario disporre dei seguenti privilegi:

  • CREATEprivilegi per uno schema.

  • SELECTPrivilegi a livello di tabella o di colonna sulle tabelle di base per creare una vista materializzata. Se si dispone di privilegi a livello di colonna su colonne specifiche, è possibile creare una vista materializzata solo su tali colonne.

Aggiornamento incrementale per le viste materializzate in un datashare

Amazon Redshift supporta l'aggiornamento automatico e incrementale per le viste materializzate in un datashare consumer quando le tabelle di base vengono condivise. L'aggiornamento incrementale è un'operazione in cui Amazon Redshift identifica le modifiche nella tabella o nelle tabelle di base avvenute dopo l'aggiornamento precedente e aggiorna solo i record corrispondenti nella vista materializzata. Questa operazione viene eseguita più rapidamente di un aggiornamento completo e migliora le prestazioni del carico di lavoro. Non è necessario modificare la definizione della vista materializzata per sfruttare l'aggiornamento incrementale.

Esistono alcune limitazioni da notare per sfruttare l'aggiornamento incrementale con una vista materializzata:

  • La vista materializzata deve fare riferimento a un solo database, locale o remoto.

  • L'aggiornamento incrementale è disponibile solo per le nuove viste materializzate. Pertanto, è necessario eliminare le viste materializzate esistenti e ricrearle affinché si verifichi un aggiornamento incrementale.

Per ulteriori informazioni sulla creazione di viste materializzate in un datashare, consulta Lavorare con le viste nella condivisione dei dati di Amazon Redshift, che contiene diversi esempi di query.

DDLaggiornamenti alle viste materializzate o alle tabelle di base

Quando utilizzi viste materializzate in Amazon Redshift, segui queste note d'uso per gli aggiornamenti del linguaggio di definizione dei dati DDL () alle viste materializzate o alle tabelle di base.

  • È possibile aggiungere colonne a una tabella di base senza conseguenze sulle viste materializzate che fanno riferimento a tale tabella di base.

  • Alcune operazioni possono lasciare la vista materializzata in uno stato in cui non può essere assolutamente aggiornata. Esempi sono le operazioni come la ridenominazione o eliminazione di una colonna, la modifica del tipo di una colonna e la modifica del nome di uno schema. Talli viste materializzate possono essere oggetto di query ma non possono essere aggiornate. In tali casi è necessario eliminare e ricreare la vista materializzata

  • In generale, non è possibile modificare la definizione di una vista materializzata (la sua dichiarazione). SQL

  • Non è possibile rinominare una vista materializzata.

Limitazioni

Non è possibile definire una vista materializzata che fa riferimento a uno dei seguenti elementi:

  • Viste standard o tabelle e viste di sistema.

  • Tabelle temporanee.

  • Funzioni definite dall'utente

  • La OFFSET clausola ORDER BYLIMIT, or.

  • Riferimenti con associazione tardiva alle tabelle di base. In altre parole, tutte le tabelle di base o le colonne correlate a cui si fa riferimento nella SQL query di definizione della vista materializzata devono esistere e devono essere valide.

  • Funzioni basate solo sui nodi Leader: CURRENT _SCHEMA, CURRENT _SCHEMAS, HAS _ DATABASE _PRIVILEGE, HAS _ SCHEMA _PRIVILEGE. HAS TABLE PRIVILEGE

  • Non è possibile utilizzare l'AUTOREFRESHYESopzione quando la definizione della vista materializzata include funzioni mutabili o schemi esterni. Non è inoltre possibile utilizzarla quando si definisce una vista materializzata in un'altra vista materializzata.

  • Non è necessario eseguire manualmente ANALYZE su viste materializzate. Questo accade attualmente solo tramite. AUTO ANALYZE Per ulteriori informazioni, consulta Analisi delle tabelle.

Esempi

Nell'esempio seguente viene creata una vista materializzata da tre tabelle di base che vengono unite e aggregate. Ogni riga rappresenta una categoria con il numero di biglietti venduti. Quando si esegue una query sulla visualizzazione materializzata tickets_mv, si accede direttamente ai dati precalcolati nella vista materializzata tickets_mv.

CREATE MATERIALIZED VIEW tickets_mv AS select catgroup, sum(qtysold) as sold from category c, event e, sales s where c.catid = e.catid and e.eventid = s.eventid group by catgroup;

L'esempio seguente crea una vista materializzata simile all'esempio precedente e utilizza la funzione aggregata MAX ().

CREATE MATERIALIZED VIEW tickets_mv_max AS select catgroup, max(qtysold) as sold from category c, event e, sales s where c.catid = e.catid and e.eventid = s.eventid group by catgroup; SELECT name, state FROM STV_MV_INFO;

L'esempio seguente utilizza una UNION ALL clausola per unire la tabella Amazon public_sales Redshift e la tabella Redshift spectrum.sales Spectrum per creare una vista materiale. mv_sales_vw Per informazioni sul CREATE EXTERNAL TABLE comando per Amazon Redshift Spectrum, CREATE EXTERNAL TABLE consulta. La tabella esterna Redshift Spectrum fa riferimento ai dati su Amazon S3.

CREATE MATERIALIZED VIEW mv_sales_vw as select salesid, qtysold, pricepaid, commission, saletime from public.sales union all select salesid, qtysold, pricepaid, commission, saletime from spectrum.sales

Nell'esempio seguente viene creata una vista materializzata mv_fq basata su una tabella esterna di query federata. Per informazioni sulla query federata, vedere CREATE EXTERNAL SCHEMA.

CREATE MATERIALIZED VIEW mv_fq as select firstname, lastname from apg.mv_fq_example; select firstname, lastname from mv_fq; firstname | lastname -----------+---------- John | Day Jane | Doe (2 rows)

Nell'esempio seguente viene illustrata la definizione di una vista materializzata.

SELECT pg_catalog.pg_get_viewdef('mv_sales_vw'::regclass::oid, true); pg_get_viewdef --------------------------------------------------- create materialized view mv_sales_vw as select a from t;

L'esempio seguente mostra come impostare AUTO REFRESH la definizione della vista materializzata e specifica anche a. DISTSTYLE Innanzitutto, crea una semplice tabella di base.

CREATE TABLE baseball_table (ball int, bat int);

Quindi crea una vista materializzata.

CREATE MATERIALIZED VIEW mv_baseball DISTSTYLE ALL AUTO REFRESH YES AS SELECT ball AS baseball FROM baseball_table;

Ora puoi eseguire una query sulla vista materializzata mv_baseball. Per verificare se AUTO REFRESH è attivato per una vista materializzata, vedere. STV_MV_INFO

L'esempio seguente crea una vista materializzata che fa riferimento a una tabella di origine in un altro database. Si presuppone che il database contenente la tabella di origine, database_A, si trovi nello stesso cluster o gruppo di lavoro della vista materializzata, creata in database_B. (È possibile sostituire i propri database per l'esempio.) Innanzitutto, crea una tabella in database_A denominata cities con una colonna cityname. Imposta il tipo di dati della colonna aVARCHAR. Dopo aver creato la tabella di origine, esegui il seguente comando in database_B per creare una vista materializzata la cui origine è la tabella cities. Assicurati di specificare il database e lo schema della tabella di origine nella FROM clausola:

CREATE MATERIALIZED VIEW cities_mv AS SELECT  cityname FROM    database_A.public.cities;

Esegui query nella vista materializzata che hai creato. La query recupera i record la cui origine è la tabella cities nel database_A:

select * from cities_mv;

Quando esegui l'SELECTistruzione, cities_mv restituisce i record. I record vengono aggiornati dalla tabella di origine solo quando viene eseguita un'istruzione. REFRESH Inoltre, tieni presente che non puoi aggiornare i record direttamente nella vista materializzata. Per informazioni sull'aggiornamento dei dati in una vista materializzata, consulta REFRESH MATERIALIZED VIEW.

Per informazioni dettagliate sulla panoramica delle viste materializzate e sui SQL comandi utilizzati per aggiornare e eliminare le viste materializzate, consultate i seguenti argomenti: