Utilizzo
view: my_view {
derived_table: {
materialized_view: yes
...
}
}
|
Gerarchia
materialized_view |
Valore predefinito
no
Accetta
Un valore booleano (yes o no)
Regole speciali
materialized_view è supportato solo in dialetti specifici
|
Definizione
La funzionalità vista materializzata è una funzionalità avanzata. A seconda del dialetto, una vista materializzata può consumare molte risorse, quindi è importante comprendere l'implementazione delle viste materializzate del tuo dialetto. Consulta la documentazione del tuo dialetto per informazioni sul suo comportamento e sulla frequenza con cui aggiorna i dati per le viste materializzate.
Le viste materializzate ti consentono di sfruttare la funzionalità del database per rendere persistenti le tabelle derivate permanenti nel progetto Looker. Se il dialetto del database supporta le viste materializzate e la connessione di Looker è configurata con l'opzione Tabelle derivate permanenti abilitata, puoi creare una vista materializzata specificando materialized_view: yes per una tabella derivata. Le viste materializzate sono supportate sia per le tabelle derivate native sia per le tabelle derivate basate su SQL.
Analogamente a una tabella derivata permanente (PDT), una vista materializzata è un risultato di query archiviato come tabella nello schema temporaneo del database. La differenza principale tra una PDT e una vista materializzata risiede nel modo in cui vengono aggiornate le tabelle:
- Per le PDT, la strategia di persistenza è definita in Looker e la persistenza è gestita da Looker.
- Per le viste materializzate, il database è responsabile della manutenzione e dell'aggiornamento dei dati nella tabella.
Per questo motivo, la funzionalità vista materializzata richiede una conoscenza avanzata del dialetto e delle sue caratteristiche. Nella maggior parte dei casi, il database aggiorna la vista materializzata ogni volta che rileva nuovi dati nelle tabelle su cui viene eseguita la query della vista materializzata. Le viste materializzate sono ideali per gli scenari che richiedono dati in tempo reale.
Se una tabella derivata con un'istruzione materialized_view: yes ha anche un parametro datagroup, sql_trigger_value o persist_for, l'istruzione materialized_view: yes avrà la precedenza.
Esempio
Questa tabella derivata e_flights_pdt contiene l'istruzione materialized_view: yes, quindi viene creata una vista materializzata nello schema temporaneo del database:
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
}
}
Quando Looker crea la vista materializzata
Looker genera le viste materializzate nello stesso modo delle altre PDT. Se crei la vista materializzata e la interroghi in modalità di sviluppo, Looker creerà una versione di sviluppo della vista materializzata, che può essere utilizzata anche per la produzione. Per maggiori dettagli, consulta la sezione Tabelle persistenti in modalità di sviluppo nella pagina della documentazione Tabelle derivate in Looker.
In caso contrario, la vista materializzata viene creata durante il ciclo successivo del rigeneratore di Looker, dopo che il LookML della tabella derivata associata è stato implementato in produzione con materialized_view: yes.
Viste di database stabili per le viste materializzate
Looker crea automaticamente una vista di database stabile per ogni vista materializzata. La vista stabile del database viene creata sul database stesso, in modo che sia possibile eseguire query al di fuori di Looker. Si tratta della stessa funzionalità di visualizzazione stabile utilizzata con il parametro publish_as_db_view.
Looker crea la vista stabile durante il ciclo successivo del rigeneratore di Looker, dopo il deployment in produzione del LookML della vista materializzata. Una volta pubblicata la vista del database stabile, puoi eseguire query direttamente su di essa.
Gli amministratori o gli utenti con l'autorizzazione see_pdts possono ottenere il nome della vista del database stabile dalla finestra modale PDT Details nella pagina Persistent Derived Tables (Tabelle derivate permanenti) nella sezione Admin (Amministrazione) di Looker.
Per eseguire una query direttamente su una vista materializzata, basta aggiungere il nome dello schema temporaneo prima del nome della tabella. Ad esempio, se il nome della vista del database stabile è NN_e_redflight_e_redflight_publish_as_db e il nome dello schema temporaneo è tmp, puoi eseguire una query sulla vista del database stabile con un comando simile al seguente:
SELECT * from tmp.NN_e_redflight_e_redflight_publish_as_db
Requisiti per le viste materializzate
Per utilizzare le viste materializzate nel tuo progetto Looker, devi disporre di quanto segue:
- Un dialetto del database che supporta le viste materializzate. Consulta la sezione Supporto dei dialetti per le viste materializzate in questa pagina per l'elenco dei dialetti che supportano le viste materializzate.
- Uno schema temporaneo nel tuo database. Può essere qualsiasi schema del tuo database, ma ti consigliamo di crearne uno nuovo da utilizzare solo per questo scopo. L'amministratore del database deve configurare lo schema con l'autorizzazione in scrittura per l'utente del database di Looker.
- Una connessione di Looker configurata con l'opzione Persistent Derived Tables (Tabelle derivate permanenti) abilitata. In genere, questa opzione viene impostata durante la configurazione iniziale della connessione di Looker (consulta la pagina della documentazione sui dialetti di Looker per istruzioni sul dialetto del tuo database), ma puoi anche abilitare le PDT per la connessione dopo la configurazione iniziale.
- Una connessione di Looker con l'autorizzazione
CREATE TABLEper lo schema temporaneo nel tuo database. Si tratta della stessa autorizzazione richiesta per la creazione di PDT. Inoltre, per creare la vista di database stabile per la vista materializzata, la connessione deve disporre delle autorizzazioniCREATE VIEWper lo schema temporaneo nel tuo database. Puoi testare la connessione per verificare che disponga di queste autorizzazioni:- Se le PDT sono abilitate sulla connessione e quest'ultima dispone dell'autorizzazione
CREATE TABLE, il test di connessione restituirà un risultato comeCan use persistent derived tables in temp schema "docsexamples_scratch" in database "demo_db". - Se la connessione consente viste stabili e dispone dell'autorizzazione
CREATE VIEW, il test di connessione restituirà un risultato comeCan use stable views in temp schema "docsexamples_scratch" in database "flightstats".
- Se le PDT sono abilitate sulla connessione e quest'ultima dispone dell'autorizzazione
Considerazioni importanti per le viste materializzate
Con le viste materializzate, Looker non gestisce e non aggiorna i dati nella tabella. Per questo motivo, la funzionalità vista materializzata richiede una conoscenza avanzata del dialetto e delle sue caratteristiche. Ecco alcuni aspetti da considerare quando crei una vista materializzata:
- Alcuni dialetti presentano limitazioni per le viste materializzate, ad esempio intervalli di aggiornamento massimi predefiniti e supporto per i join. Looker non genera errori LookML relativi alla funzionalità specifica del dialetto delle viste materializzate. Se la creazione della vista materializzata non va a buon fine, Looker genera un errore, che può essere un evento nel log eventi PDT o un errore di runtime se provi a eseguire una query sulla vista materializzata. Consulta la documentazione del tuo dialetto per informazioni sulle limitazioni per le viste materializzate.
- Alcuni dialetti controllano l'aggiornamento delle query quando vengono eseguite query sulle viste materializzate, il che potrebbe aggiungere un piccolo ritardo nell'ottenere i risultati delle query. Consulta la documentazione del tuo dialetto per verificare se questo è il caso del tuo dialetto.
- Alcuni dialetti tenteranno di aggiornare la vista materializzata in modo incrementale anziché ricrearla completamente. Per informazioni, consulta la documentazione del tuo dialetto.
- Se la vista materializzata utilizza una tabella di base che viene eliminata dal database, potresti non essere in grado di eseguire query sulla vista materializzata e la creazione di nuove versioni non andrà a buon fine.
- Se una tabella derivata con un'istruzione
materialized_view: yesha anche un parametro datagroup,sql_trigger_valueopersist_for, l'istruzionematerialized_view: yesavrà la precedenza. - Le viste materializzate supportano gli stessi parametri specifici del dialetto supportati dalle tabelle derivate in generale, come partizionamento, chiavi di ordinamento e indici.
- Nel caso di tabelle derivate in sequenza, le viste materializzate possono dipendere dalle PDT di Looker, con le seguenti precisazioni:
- Non puoi utilizzare una tabella derivata con la strategia di persistenza
persist_fornella definizione di una tabella derivata conmaterialized_view: yes. Per le viste materializzate, la tabella di origine di una vista materializzata deve essere sempre presente nel database. Le tabelle derivatepersist_forvengono rimosse dal database dopo il periodo di tempo specificato nel parametropersist_for, pertanto non è garantito che siano presenti nel database. - Le PDT vengono ricreate con un nome univoco, quindi se una vista materializzata utilizza una PDT nella sua definizione, la vista materializzata verrà aggiornata in modo da puntare alla nuova versione della PDT ogni volta che quest'ultima viene ricreata. Ciò significa che la vista materializzata verrà essenzialmente ricreata da zero se una dipendenza viene ricreata completamente, il che potrebbe influire sulle prestazioni. In questo caso, un'opzione migliore è fare riferimento a una tabella di base di tipo append-only o a una PDT incrementale definita utilizzando Looker.
- Non puoi utilizzare una tabella derivata con la strategia di persistenza
Supporto dei dialetti per le viste materializzate
La possibilità di trasformare una tabella derivata in una vista materializzata dipende dal dialetto del database utilizzato dalla connessione di Looker. Nella release attuale di Looker, i seguenti dialetti supportano le viste materializzate:
| Dialetto | Supportata? |
|---|---|
| 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 |