visualizzazione_materializzata

Utilizzo

view: my_view {
derived_table: {
materialized_view:
...
}
}
Gerarchia
materialized_view
Valore predefinito
no

Accetta
Un valore booleano (yes o no)

Regole speciali
materialized_view è supportato solo su dialetti specifici

Definizione

La funzionalità materializzata della vista è una funzionalità avanzata. A seconda del dialetto, una vista materializzata può consumare risorse di grandi dimensioni, quindi è importante che tu capisca l'implementazione delle viste materializzate del tuo dialetto. Consulta la documentazione del dialetto per informazioni sul comportamento del dialetto e sulla frequenza con cui il dialetto aggiorna i dati per le viste materializzate.

Le viste materializzate consentono di utilizzare la funzionalità del database per rendere persistenti le tabelle derivate nel progetto Looker. Se il dialetto del tuo database supporta le viste materializzate e la tua connessione 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 visualizzazione materializzata è un risultato della query archiviato come tabella nello schema temporaneo del database. La differenza chiave tra una PDT e una visualizzazione materializzata consiste nel modo in cui le tabelle vengono aggiornate:

  • Per le PDT, la strategia di persistenza viene definita in Looker e la persistenza viene gestita da Looker.
  • Per le viste materializzate, il database è responsabile della manutenzione e dell'aggiornamento dei dati nella tabella.

Per questo motivo, la funzionalità di visualizzazione 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 oggetto di query dalla vista materializzata. Le viste materializzate sono ottimali 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 ha la precedenza.

Esempio

Questa tabella derivata da e_flights_pdt ha 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 viste materializzate come le altre PDT. Se crei la vista materializzata ed esegui query in modalità Development (Sviluppo), Looker ne crea una versione che può essere utilizzata anche per la produzione. Per maggiori dettagli, consulta la sezione Tabelle permanenti in modalità sviluppo nella pagina della documentazione Tabelle derivate in Looker.

In caso contrario, la vista materializzata viene creata durante il ciclo successivo del rigeneratore Looker, dopo che il deployment LookML della tabella derivata viene eseguito in produzione con materialized_view: yes.

Visualizzazioni stabili del database per le viste materializzate

Looker crea automaticamente una vista database stabile per ogni vista materializzata. La visualizzazione stabile del database viene creata nel database stesso, in modo da poter eseguire query all'esterno di Looker. Questa è la stessa funzionalità di visualizzazione stabile utilizzata con il parametro publish_as_db_view.

Looker crea la vista stabile durante il ciclo successivo del rigeneratore Looker, dopo che il deployment LookML della vista materializzata è stato eseguito in produzione. Dopo aver pubblicato la visualizzazione stabile del database, puoi eseguire query direttamente su di te.

Gli amministratori o gli utenti con l'autorizzazione see_pdts possono recuperare il nome della visualizzazione del database stabile dalla pagina Persistent Derived Tables (Tabelle derivate permanenti) nella sezione Admin (Amministrazione) di Looker. Fai clic sul menu con tre puntini della PDT e seleziona PDT Details (Dettagli PDT):

Per eseguire una query direttamente su una vista materializzata, aggiungi il nome dello schema temporaneo prima del nome della tabella. Ad esempio, se il nome della visualizzazione del database stabile è NN_e_redflight_e_redflight_publish_as_db e quello dello schema temporaneo è tmp, puoi eseguire query sulla visualizzazione del database stabile con un comando come questo:


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:

  • Dialetto di database che supporta le viste materializzate. Per un elenco dei dialetti che supportano le viste materializzate, consulta la sezione Supporto dialetti per le viste materializzate di questa pagina.
  • Uno schema temporaneo sul tuo database. Può essere qualsiasi schema nel tuo database, ma ti consigliamo di creare un nuovo schema che verrà utilizzato solo a questo scopo. L'amministratore del database deve configurare lo schema con l'autorizzazione di scrittura per l'utente del database Looker.
  • Una connessione Looker configurata con l'opzione Persistent Derived Tables (Tabelle derivate permanenti) attivata. Questa configurazione viene in genere configurata durante la configurazione iniziale della connessione di Looker (vedi la pagina della documentazione relativa ai linguaggi di Looker per le istruzioni relative al dialetto del database), ma puoi anche abilitare le PDT per la connessione dopo la configurazione iniziale.
  • Una connessione Looker con l'autorizzazione CREATE TABLE per lo schema temporaneo sul database. Si tratta della stessa autorizzazione richiesta per la creazione di PDT. Inoltre, per creare la vista database stabile per la vista materializzata, la connessione deve avere le autorizzazioni CREATE VIEW per lo schema temporaneo sul database. Puoi testare la connessione per verificare che la connessione disponga delle seguenti autorizzazioni:
    • Se le PDT sono attivate e la connessione ha l'autorizzazione CREATE TABLE, il test di connessione restituirà un risultato come Can use persistent derived tables in temp schema "docsexamples_scratch" in database "demo_db".
    • Se la connessione consente viste stabili e ha l'autorizzazione CREATE VIEW, il test di connessione restituirà un risultato come Can use stable views in temp schema "docsexamples_scratch" in database "flightstats".

Considerazioni importanti sulle viste materializzate

Con le viste materializzate, Looker non mantiene e aggiorna i dati nella tabella. Per questo motivo, la funzionalità di visualizzazione materializzata richiede una conoscenza avanzata del dialetto e delle sue caratteristiche. Di seguito sono riportati alcuni aspetti da considerare durante la creazione di una vista materializzata:

  • Alcuni dialetti presentano limitazioni per le viste materializzate, ad esempio gli intervalli massimi di aggiornamento predefiniti e il supporto per i join. Looker non genera errori LookML sulla funzionalità dei dialetti delle viste materializzate. Invece, Looker genererà un errore se la vista materializzata non riesce a crearsi, come un evento nel log eventi PDT o come errore di runtime se provi a eseguire query sulla vista materializzata. Consulta la documentazione del dialetto per conoscere le limitazioni relative alle viste materializzate.
  • Alcuni dialetti controllano l'aggiornamento delle query quando viene eseguita una query sulle viste materializzate, il che potrebbe causare un leggero ritardo nella visualizzazione dei risultati delle query. Consulta la documentazione del dialetto per vedere se questo è il caso del tuo dialetto.
  • Alcuni dialetti tentano di aggiornare la vista materializzata in modo incrementale invece di ricostruirla completamente. Per informazioni, consulta la documentazione del tuo dialetto.
  • Se la tua vista materializzata utilizza una tabella di base che è stata eliminata dal database, potresti non essere in grado di eseguire query sulla vista materializzata e le nuove versioni non riusciranno a essere create.
  • 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 ha la precedenza.
  • Le viste materializzate supportano gli stessi parametri specifici per dialetto supportati dalle tabelle derivate in generale, come partizionamento, ordinari e indici.
  • Nel caso delle tabelle derivate a cascata, le viste materializzate possono dipendere dalle PDT di Looker, con le seguenti avvertenze:
    • Non puoi utilizzare una tabella derivata con la strategia di persistenza persist_for nella definizione di una tabella derivata con materialized_view: yes. Per le viste materializzate, la tabella di origine per una vista materializzata deve essere sempre presente nel database. Le tabelle derivate persist_for vengono eliminate dal database dopo il tempo specificato nel parametro persist_for, per cui non è garantito che siano presenti nel database.
    • Le PDT vengono ricreate con un nome univoco, quindi se una vista materializzata utilizza una PDT nella propria definizione, ogni volta che viene ricreata, la vista materializzata viene aggiornata in modo da puntare alla nuova versione della PDT. Ciò significa che la visualizzazione materializzata viene sostanzialmente ricostruita da zero se una dipendenza si ricostruisce completamente, il che potrebbe influire sulle prestazioni. In questo caso, l'opzione migliore è fare riferimento a una tabella di base di sola aggiunta o fare riferimento a una PDT incrementale definita tramite Looker.

Supporto del dialetto 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 versione attuale di Looker, i seguenti dialetti supportano le viste materializzate: