Sensibilizzazione aggregata

Panoramica

Looker utilizza la logica di awareness aggregata per trovare la tabella più piccola ed efficiente disponibile nel tuo database per eseguire una query, mantenendo al contempo l'accuratezza.

Per tabelle molto grandi nel tuo database, gli sviluppatori di Looker possono creare tabelle aggregate di dati più piccole, raggruppate in base a varie combinazioni di attributi. Le tabelle aggregate fungono da tabelle di riepilogo o di aggregazione che Looker può utilizzare per le query, se possibile, anziché la tabella di grandi dimensioni originale. Se implementato strategicamente, il riconoscimento degli aggregati può velocizzare la query media di ordini di grandezza.

Ad esempio, potresti avere una tabella di dati su scala petabyte con una riga per ogni ordine effettuato sul tuo sito web. Da questo database puoi creare una tabella aggregata con i totali delle vendite giornaliere. Se il tuo sito web riceve 1000 ordini al giorno, la tabella aggregata giornaliera rappresenterà ogni giorno con 999 righe in meno rispetto alla tabella originale. Puoi creare un'altra tabella aggregata con i totali delle vendite mensili che sarà ancora più efficiente. Ora, se un utente esegue una query per le vendite giornaliere o settimanali, Looker utilizzerà la tabella dei totali delle vendite giornaliere. Se un utente esegue una query sulle vendite annuali e non hai una tabella aggregata annuale, Looker utilizzerà la seconda migliore opzione, ovvero la tabella aggregata delle vendite mensili in questo esempio.

Looker risponde alle domande degli utenti con le tabelle aggregate più piccole, se possibile. Ad esempio:

  • Per una query sulle vendite mensili totali, Looker utilizza la tabella aggregata basata sulle vendite mensili (sales_monthly_aggregate_table).
  • Per una query sul totale di ogni vendita in un giorno, non esiste una tabella aggregata con questa granularità, quindi Looker ottiene i risultati della query dalla tabella del database originale (orders_database). Tuttavia, se i tuoi utenti eseguono spesso questo tipo di query, puoi creare una tabella aggregata per questa query.
  • Per una query sulle vendite settimanali, non esiste una tabella aggregata settimanale, quindi Looker utilizza la seconda migliore opzione, ovvero la tabella aggregata basata sulle vendite giornaliere (sales_daily_aggregate_table).

Utilizzando la logica di awareness aggregata, Looker eseguirà query sulla tabella aggregata più piccola possibile per rispondere alle domande degli utenti. La tabella originale verrebbe utilizzata solo per le query che richiedono una granularità più precisa di quella che le tabelle aggregate possono fornire.

Non è necessario unire le tabelle aggregate o aggiungerle a un'esplorazione separata. Looker, invece, modifica dinamicamente la clausola FROM della query di Esplora per accedere alla tabella aggregata migliore per la query. Ciò significa che i tuoi drill vengono mantenuti e le esplorazioni possono essere consolidate. Con l'aggregate awareness, un'esplorazione può sfruttare automaticamente le tabelle aggregate, ma anche approfondire i dati granulari, se necessario.

Puoi anche sfruttare le tabelle aggregate per migliorare drasticamente le prestazioni delle dashboard, in particolare per i riquadri che eseguono query su set di dati di grandi dimensioni. Per maggiori dettagli, consulta la sezione Recupero del codice LookML della tabella aggregata da una dashboard nella pagina della documentazione del parametro aggregate_table.

Aggiunta di tabelle aggregate al progetto

Gli sviluppatori Looker possono creare tabelle aggregate strategiche che ridurranno al minimo il numero di query richieste sulle tabelle di grandi dimensioni di un database. Le tabelle aggregate devono essere rese persistenti nel database in modo che siano accessibili per l'awareness aggregata. Le tabelle aggregate sono quindi un tipo di tabella derivata permanente (PDT).

Una tabella aggregata viene definita utilizzando il parametro aggregate_table sotto un parametro explore nel progetto LookML.

Ecco un esempio di explore con una tabella aggregata in LookML:

explore: orders {
  label: "Sales Totals"
  join: order_items {
    sql_on: ${orders.id} = ${order_items.id} ;;
  }
  aggregate_table: sales_monthly {
    materialization: {
      datagroup_trigger: orders_datagroup
    }
    query: {
      dimensions: [created_month]
      measures: [order_items.total_sales]
    }
  }
  # other explore parameters
}

Per creare una tabella aggregata, puoi scrivere il LookML da zero oppure puoi ottenere il LookML della tabella aggregata da un'esplorazione o da una dashboard. Consulta la pagina della documentazione del parametro aggregate_table per i dettagli del parametro aggregate_table e dei relativi sottoparametri.

Progettazione di tabelle aggregate

Affinché una query di un'esplorazione utilizzi una tabella aggregata, quest'ultima deve essere in grado di fornire dati accurati per la query dell'esplorazione. Looker può utilizzare una tabella aggregata per una query di un'esplorazione se sono soddisfatte tutte le seguenti condizioni:

  • I campi della query di Esplora sono un sottoinsieme dei campi della tabella aggregata (consulta la sezione Fattori dei campi in questa pagina). In alternativa, i periodi di tempo della query di Esplora possono essere derivati da quelli della tabella aggregata (consulta la sezione Fattori relativi ai periodi di tempo in questa pagina).
  • La query di esplorazione contiene tipi di misure supportati dall'awareness aggregata (consulta la sezione Fattori relativi ai tipi di misure in questa pagina) oppure la query di esplorazione ha una tabella aggregata che corrisponde esattamente (consulta la sezione Creazione di tabelle aggregate che corrispondono esattamente alle query di esplorazione in questa pagina).
  • Il fuso orario della query di Esplora corrisponde a quello utilizzato dalla tabella aggregata (consulta la sezione Fattori relativi al fuso orario in questa pagina).
  • I filtri della query di Explore fanno riferimento a campi disponibili come dimensioni nella tabella aggregata oppure ogni filtro della query di Explore corrisponde a un filtro nella tabella aggregata (consulta la sezione Fattori di filtro in questa pagina).

Un modo per garantire che una tabella aggregata possa fornire dati accurati per una query di un'esplorazione è creare una tabella aggregata che corrisponda esattamente a una query di un'esplorazione. Per maggiori dettagli, consulta la sezione Creazione di tabelle aggregate che corrispondono esattamente alle query di Esplora in questa pagina.

Fattori sul campo

Per essere utilizzata per una query di esplorazione, una tabella aggregata deve contenere tutte le dimensioni e le misure necessarie per la query di esplorazione, inclusi i campi utilizzati per i filtri nella query di esplorazione. Se una query di un'esplorazione contiene una dimensione o una misura che non si trova in una tabella aggregata, Looker non può utilizzare la tabella aggregata e utilizzerà invece la tabella di base.

Ad esempio, se una query raggruppa per le dimensioni A e B, aggrega per la misura C e filtra in base alla dimensione D, la tabella aggregata deve avere almeno A, B e D come dimensioni e C come misura.

La tabella aggregata può avere anche altri campi, ma deve avere almeno i campi della query di esplorazione per poter essere utilizzata per l'ottimizzazione. L'unica eccezione sono le dimensioni del periodo di tempo, poiché i periodi di tempo con granularità più grossolana possono essere derivati da quelli con granularità più fine.

A causa di queste considerazioni sui campi, una tabella aggregata è specifica per l'esplorazione in cui è definita. Una tabella aggregata definita in un'esplorazione non verrà utilizzata per le query in un'altra esplorazione.

Fattori relativi al periodo di tempo

La logica di aggregate awareness di Looker è in grado di ricavare un periodo di tempo da un altro. Una tabella aggregata può essere utilizzata per una query, a condizione che il periodo di tempo della tabella aggregata abbia una granularità più precisa (o uguale) rispetto alla query di Esplora. Ad esempio, una tabella aggregata basata su dati giornalieri può essere utilizzata per una query di Esplora che richiede altri periodi di tempo, come query per dati giornalieri, mensili e annuali o anche dati relativi al giorno del mese, al giorno dell'anno e alla settimana dell'anno. Tuttavia, una tabella aggregata annuale non può essere utilizzata per una query di Esplora che richiede dati orari, poiché i dati della tabella aggregata non hanno una granularità sufficientemente precisa per la query di Esplora.

Lo stesso vale per i sottoinsiemi di intervalli di tempo. Ad esempio, se hai una tabella aggregata filtrata per gli ultimi tre mesi e un utente esegue una query sui dati con un filtro per gli ultimi due mesi, Looker potrà utilizzare la tabella aggregata per quella query.

Inoltre, la stessa logica si applica alle query con filtri per periodo di tempo: una tabella aggregata può essere utilizzata per una query con un filtro per periodo di tempo, a condizione che il periodo di tempo della tabella aggregata abbia una granularità più precisa (o uguale) rispetto al filtro per periodo di tempo utilizzato nella query di Explore. Ad esempio, una tabella aggregata con una dimensione del periodo di tempo giornaliero può essere utilizzata per una query di Esplora che filtra per giorno, settimana o mese.

Fattori del tipo di misura

Affinché una query di esplorazione utilizzi una tabella aggregata, le misure nella tabella aggregata devono essere in grado di fornire dati accurati per la query di esplorazione.

Per questo motivo, sono supportati solo alcuni tipi di misure, come descritto nelle sezioni seguenti:

Se una query di un'esplorazione utilizza un altro tipo di misura, Looker utilizzerà la tabella originale, non quella aggregata, per restituire i risultati. L'unica eccezione è se la query di Esplora corrisponde esattamente a una query della tabella aggregata, come descritto nella sezione Creare tabelle aggregate che corrispondono esattamente alle query di Esplora.

In caso contrario, Looker utilizzerà la tabella originale, non quella aggregata, per restituire i risultati.

Misure con tipi di misure supportati

L'awareness aggregata può essere utilizzata per le query di Esplora che utilizzano misure con questi tipi di misure:

Per utilizzare una tabella aggregata per una query di un'esplorazione, Looker deve essere in grado di operare sulle misure della tabella aggregata per fornire dati accurati nella query dell'esplorazione. Ad esempio, una misura con type: sum può essere utilizzata per l'awareness aggregata perché puoi sommare più somme: una tabella aggregata di somme settimanali può essere sommata per ottenere una somma mensile accurata. Analogamente, è possibile utilizzare una misura con type: max perché una tabella aggregata dei massimi giornalieri può essere utilizzata per trovare il massimo settimanale preciso.

Nel caso di misure con type: average, l'awareness aggregata è supportata perché Looker utilizza i dati di somma e conteggio per ricavare con precisione i valori medi dalle tabelle aggregate.

Misure definite con espressioni SQL

Aggregate Awareness può essere utilizzato anche con le misure definite con espressioni nel parametro sql. Se definiti con espressioni SQL, sono supportati anche i seguenti tipi di misure:

La consapevolezza aggregata è supportata per le misure definite come combinazioni di altre misure, come in questo esempio:

measure: total_revenue_in_dollars {
  type: number
  sql: ${total_revenue_in_dollars} - ${inventory_item.total_cost_in_dollars} ;;
}

L'awareness aggregata è supportata anche per le misure in cui i calcoli sono definiti nel parametro sql, ad esempio questa misura:

measure: wholesale_value {
  type: number
    sql: (${order_items.total_sale_price} * 0.60) ;;
}

Inoltre, l'aggregate awareness è supportata per le misure in cui le operazioni MIN, MAX e COUNT sono definite nel parametro sql, ad esempio questa misura:

measure: most_recent_order_date {
  type: date
  sql: MAX(${users.created_at_raw})
}

Misure che fanno riferimento ai campi LookML

Quando le espressioni sql vengono utilizzate nelle misure, l'awareness aggregata supporta i seguenti tipi di riferimenti ai campi:

  • Riferimenti che utilizzano il formato ${view_name.field_name}, che indica i campi in altre visualizzazioni
  • Riferimenti che utilizzano il formato ${field_name}, che indica i campi nella stessa visualizzazione

L'aggregate awareness non è supportata per le misure definite utilizzando il formato ${TABLE}.column_name, che indica una colonna in una tabella. Per una panoramica sull'utilizzo dei riferimenti in LookML, consulta la pagina di documentazione Incorporazione di SQL e riferimento agli oggetti LookML.

Ad esempio, una misura definita con questo parametro sql non sarebbe supportata in una tabella aggregata, poiché utilizza il formato ${TABLE}.column_name:

measure: wholesale_value {
  type: number
  sql: (${TABLE}.total_sale_price * 0.60) ;;
}

Se vuoi includere questa misura in una tabella aggregata, puoi creare una dimensione definita con il formato ${TABLE}.column_name, quindi creare una misura che faccia riferimento alla dimensione, in questo modo:


 dimension: total_sale_price {
    sql: (${TABLE}.total_sale_price) ;;
  }

  measure: wholesale_value {
    type: number
    sql: (${total_sale_price} * 0.60) ;;
}

Ora puoi utilizzare la misura wholesale_value nella tabella aggregata.

Misure che approssimano i conteggi distinti

In generale, i conteggi distinti non sono supportati con l'awareness aggregata perché non è possibile ottenere dati accurati se si tenta di aggregare i conteggi distinti. Ad esempio, se stai conteggiando gli utenti unici su un sito web, potrebbe esserci un utente che ha visitato il sito web due volte, a distanza di tre settimane. Se provassi ad applicare una tabella aggregata settimanale per ottenere un conteggio mensile degli utenti distinti sul tuo sito web, l'utente verrebbe conteggiato due volte nella query di conteggio distinto mensile e i dati non sarebbero corretti.

Una soluzione alternativa consiste nel creare una tabella aggregata che corrisponda esattamente a una query di Esplora, come descritto nella sezione Creare tabelle aggregate che corrispondono esattamente alle query di Esplora di questa pagina. Quando la query di Esplora e una query della tabella aggregata sono uguali, le misure di conteggio distinte forniscono dati accurati, quindi possono essere utilizzate per l'awareness aggregata.

Un'altra opzione è utilizzare le approssimazioni per i conteggi distinti. Per i dialetti che supportano gli sketch HyperLogLog, Looker può utilizzare l'algoritmo HyperLogLog per approssimare i conteggi distinti per le tabelle aggregate.

L'algoritmo HyperLogLog è noto per avere un errore di circa il 2%. Il parametro allow_approximate_optimization: yes richiede agli sviluppatori di Looker di confermare che è possibile utilizzare dati approssimativi per la misura, in modo che questa possa essere calcolata in modo approssimativo dalle tabelle aggregate.

Per saperne di più e per l'elenco dei dialetti che supportano il conteggio distinto utilizzando HyperLogLog, consulta la pagina della documentazione del parametro allow_approximate_optimization.

Fattori relativi ai fusi orari

In molti casi, gli amministratori di database utilizzano il fuso orario UTC per i database. Tuttavia, molti utenti potrebbero non trovarsi nel fuso orario UTC. Looker offre diverse opzioni per la conversione dei fusi orari, in modo che gli utenti ricevano i risultati delle query nel loro fuso orario:

  • Fuso orario query, un'impostazione che si applica a tutte le query sulla connessione al database. Se tutti gli utenti si trovano nello stesso fuso orario, puoi impostare un unico fuso orario query in modo che tutte le query vengano convertite dal fuso orario database al fuso orario query.
  • Fusi orari specifici degli utenti, in cui gli utenti possono essere assegnati e selezionare i fusi orari singolarmente. In questo caso, le query vengono convertite dal fuso orario del database al fuso orario del singolo utente.

Per ulteriori informazioni su queste opzioni, consulta la pagina della documentazione dedicata all'uso delle impostazioni del fuso orario.

Questi concetti sono importanti per comprendere l'awareness aggregata perché, affinché una tabella aggregata possa essere utilizzata per una query con dimensioni o filtri di data, il fuso orario della tabella aggregata deve corrispondere all'impostazione del fuso orario utilizzata per la query originale.

Le tabelle aggregate utilizzano il fuso orario del database se non viene specificato alcun valore timezone. La connessione al database utilizzerà il fuso orario del database anche se si verifica una delle seguenti condizioni:

  • Il tuo database non supporta i fusi orari.
  • Il fuso orario query della connessione al database è impostato sullo stesso fuso orario del database.
  • La connessione al database non ha un fuso orario query specificato né fusi orari specifici degli utenti. In questo caso, la connessione al database utilizzerà il fuso orario del database.

Se una di queste condizioni è vera, puoi omettere il parametro timezone per le tabelle aggregate.

In caso contrario, il fuso orario della tabella aggregata deve essere definito in modo da corrispondere alle possibili query, in modo che sia più probabile che la tabella aggregata venga utilizzata:

  • Se la connessione al database utilizza un unico fuso orario query, devi far corrispondere il valore timezone della tabella aggregata al valore del fuso orario query.
  • Se la connessione al database utilizza fusi orari specifici degli utenti, devi creare tabelle aggregate identiche, ciascuna con un valore timezone diverso per corrispondere ai possibili fusi orari degli utenti.

Fattori di filtro

Fai attenzione quando includi i filtri nella tabella aggregata. I filtri su una tabella aggregata possono restringere i risultati al punto da renderla inutilizzabile. Ad esempio, supponiamo che tu crei una tabella aggregata per i conteggi degli ordini giornalieri e che i filtri della tabella aggregata siano solo per gli ordini di occhiali da sole provenienti dall'Australia. Se un utente esegue una query di esplorazione per i conteggi degli ordini giornalieri di occhiali da sole in tutto il mondo, Looker non può utilizzare la tabella aggregata per quella query di esplorazione, poiché la tabella aggregata contiene solo i dati relativi all'Australia. La tabella aggregata filtra i dati in modo troppo restrittivo per essere utilizzata dalla query di Esplora.

Inoltre, tieni presente i filtri che gli sviluppatori di Looker potrebbero aver integrato nell'esplorazione, ad esempio:

  • access_filters: applica limitazioni dei dati specifiche per l'utente.
  • always_filter: richiede agli utenti di includere un determinato insieme di filtri per una query di Esplora. Gli utenti possono modificare il valore predefinito del filtro per la loro query, ma non possono rimuovere completamente il filtro.
  • conditionally_filter: definisce un insieme di filtri predefiniti che gli utenti possono ignorare se applicano almeno un filtro da un secondo elenco definito anche nell'esplorazione.

Questi tipi di filtro si basano su campi specifici. Se l'esplorazione contiene questi filtri, devi includere i relativi campi nel parametro dimensions di aggregate_table.

Ad esempio, ecco un'esplorazione con un filtro di accesso basato sul campo orders.region:

explore: orders {
  access_filter: {
    field: orders.region
    user_attribute: region
  }
}

Per creare una tabella aggregata da utilizzare per questa esplorazione, la tabella aggregata deve includere il campo su cui si basa il filtro di accesso. Nel prossimo esempio, il filtro di accesso si basa sul campo orders.region e questo stesso campo è incluso come dimensione nella tabella aggregata:

explore: orders {
  access_filter: {
    field: orders.region  # <-- orders.region field
    user_attribute: region
  }
  aggregate_table: sales_monthly {
    materialization: {
      datagroup_trigger: orders_datagroup
    }
    query: {
      dimensions: [orders.created_day, orders.region] # <-- orders.region field
      measures: [orders.total_sales]
      timezone: America/Los_Angeles
    }
  }
}

Poiché la query della tabella aggregata include la dimensione orders.region, Looker può filtrare dinamicamente i dati nella tabella aggregata in modo che corrispondano al filtro della query di esplorazione. Pertanto, Looker può comunque utilizzare la tabella aggregata per le query dell'esplorazione, anche se l'esplorazione ha un filtro di accesso.

Questo vale anche per le query di Esplora che utilizzano una tabella derivata nativa configurata con bind_filters. Il parametro bind_filters passa i filtri specificati da una query di Explore alla sottoquery della tabella derivata nativa. Nel caso dell'aggregate awareness, se la query di esplorazione richiede una tabella derivata nativa che utilizza bind_filters, la query di esplorazione può utilizzare una tabella aggregata solo se tutti i campi utilizzati nel parametro bind_filters della tabella derivata nativa hanno esattamente gli stessi valori di filtro nella query di esplorazione e nella tabella aggregata.

Creazione di tabelle aggregate che corrispondono esattamente alle query di Esplora

Un modo per assicurarti che una tabella aggregata possa essere utilizzata per una query di Esplora è creare una tabella aggregata che corrisponda esattamente alla query di Esplora. Se la query di esplorazione e la tabella aggregata utilizzano le stesse misure, dimensioni, filtri, fusi orari e altri parametri, per definizione i risultati della tabella aggregata verranno applicati alla query di esplorazione. Se una tabella aggregata corrisponde esattamente a una query di un'esplorazione, Looker può utilizzare tabelle aggregate che includono qualsiasi tipo di misura.

Puoi creare una tabella aggregata da un'esplorazione utilizzando l'opzione Ottieni LookML dal menu a forma di ingranaggio di un'esplorazione. Puoi anche creare corrispondenze esatte per tutti i riquadri di una dashboard utilizzando l'opzione Ottieni LookML dal menu a forma di ingranaggio di una dashboard.

Determinazione della tabella aggregata utilizzata per una query

Gli utenti con autorizzazioni see_sql possono utilizzare i commenti nella scheda SQL di un'esplorazione per vedere quale tabella aggregata verrà utilizzata per una query. I commenti della scheda SQL vengono visualizzati anche in modalità di sviluppo, in modo che gli sviluppatori possano testare le nuove tabelle aggregate per vedere come Looker le utilizza prima di eseguirne il push in produzione.

Ad esempio, in base alla tabella aggregata mensile di esempio mostrata in precedenza, puoi andare a Esplora ed eseguire una query per i totali delle vendite annuali. Poi puoi fare clic sulla scheda SQL per visualizzare i dettagli della query creata da Looker. Se sei in modalità di sviluppo, Looker mostra i commenti per indicare la tabella aggregata utilizzata per la query.

Dai seguenti commenti nella scheda SQL, possiamo vedere che Looker utilizza la tabella aggregata sales_monthly per questa query e le informazioni sul motivo per cui altre tabelle aggregate non sono state utilizzate per la query:

-- use existing orders::sales_monthly in sandbox_scratch.LR$LB4151619827209021_orders$sales_monthly
-- Did not use orders::sales_weekly; it does not include the following fields in the query: orders.created_month
-- Did not use orders::sales_daily; orders::sales_monthly was a better fit for optimization.
-- Did not use orders::sales_last_3_days; contained filters not in the query: orders.created_date

Consulta la sezione Risoluzione dei problemi di questa pagina per i possibili commenti che potresti visualizzare nella scheda SQL e i suggerimenti su come risolverli.

Stime dei risparmi di calcolo per l'awareness aggregata

Se la connessione al database supporta le stime dei costi e se è possibile utilizzare una tabella aggregata per una query, la finestra Esplora mostrerà i risparmi di calcolo derivanti dall'utilizzo della tabella aggregata anziché dall'esecuzione di query direttamente sul database. I risparmi aggregati relativi all'awareness vengono visualizzati accanto al pulsante Esegui in un'esplorazione prima dell'esecuzione della query.

Prima di eseguire la query, se vuoi vedere quale tabella aggregata verrà utilizzata per la query, puoi fare clic sulla scheda SQL, come descritto nella sezione Determinare quale tabella aggregata viene utilizzata per una query di questa pagina della documentazione.

Dopo l'esecuzione della query, la finestra Esplora mostrerà quale tabella aggregata è stata utilizzata per rispondere alla query accanto al pulsante Esegui.

I risparmi aggregati di awareness vengono mostrati per le connessioni al database abilitate per le stime dei costi. Per ulteriori informazioni, consulta la pagina della documentazione Esplorazione dei dati in Looker .

Looker unisce i nuovi dati alle tabelle aggregate

Per le tabelle aggregate con filtri temporali, Looker può unire i dati aggiornati nella tabella aggregata. Potresti avere una tabella aggregata che include i dati degli ultimi tre giorni, ma che è stata creata ieri. La tabella aggregata non conterrebbe le informazioni di oggi, quindi non dovresti utilizzarla per una query di Esplora sulle informazioni giornaliere più recenti.

Tuttavia, Looker può comunque utilizzare i dati della tabella aggregata per la query, perché eseguirà una query sui dati più recenti e poi unirà i risultati a quelli della tabella aggregata.

Looker può unire i dati aggiornati con quelli della tabella aggregata nelle seguenti circostanze:

  • La tabella aggregata ha un filtro temporale.
  • La tabella aggregata include una dimensione basata sullo stesso campo temporale del filtro temporale.

Ad esempio, la seguente tabella aggregata ha una dimensione basata sul campo orders.created_date e un filtro temporale ("3 days") basato sullo stesso campo:

aggregate_table: sales_last_3_days {
  query:  {
    dimensions: [orders.created_date]
    measures: [order_items.total_sales]
    filters: [orders.created_date: "3 days"]  # <-- time filter
    timezone: America/Los_Angeles
  }
  ...
}

Se questa tabella aggregata è stata creata ieri, Looker recupererà i dati più recenti non ancora inclusi nella tabella aggregata, quindi unirà i risultati aggiornati con quelli della tabella aggregata. Ciò significa che i tuoi utenti riceveranno i dati più recenti, ottimizzando al contempo le prestazioni utilizzando l'awareness aggregata.

Se sei in modalità di sviluppo, puoi fare clic sulla scheda SQL di un'esplorazione per visualizzare la tabella aggregata utilizzata da Looker per la query e l'istruzione UNION utilizzata da Looker per importare i dati più recenti non inclusi nella tabella aggregata.

Le tabelle aggregate devono essere rese persistenti

Per essere accessibile per l'awareness aggregata, la tabella aggregata deve essere persistente nel database. La strategia di persistenza è specificata nel parametro materialization della tabella aggregata. Poiché le tabelle aggregate sono un tipo di tabella derivata permanente (PDT), hanno gli stessi requisiti delle PDT. Per maggiori dettagli, consulta la pagina della documentazione dedicata alle tabelle derivate in Looker.

Puoi creare PDT incrementali nel tuo progetto se il tuo dialetto le supporta. Looker crea PDT incrementali aggiungendo nuovi dati alla tabella, anziché ricostruirla interamente. Poiché le tabelle aggregate sono a loro volta un tipo di PDT, puoi creare anche tabelle aggregate incrementali. Per saperne di più sulle PDT incrementali, consulta la pagina della documentazione relativa alle PDT incrementali. Per un esempio di tabella aggregata incrementale, consulta la pagina della documentazione del parametro increment_key.

Un utente con l'autorizzazione develop può eseguire l'override delle impostazioni di persistenza e ricreare tutte le tabelle aggregate per una query per ottenere i dati più aggiornati. Per ricostruire le tabelle per una query, seleziona l'opzione Rebuild Derived Tables & Run (Ricostruisci tabelle derivate ed esegui) dal menu a forma di ingranaggio Explore actions (Azioni di esplorazione).

Devi attendere il caricamento della query di Esplora prima che questa opzione sia disponibile.

L'opzione Rebuild Derived Tables & Run (Ricostruisci tabelle derivate ed esegui) ricostruisce tutte le tabelle derivate a cui viene fatto riferimento nella query, nonché tutte le tabelle derivate da cui dipendono le tabelle nella query. Sono incluse le tabelle aggregate, che sono a loro volta un tipo di tabella derivata permanente.

Per l'utente che avvia l'opzione Rebuild Derived Tables & Run (Ricostruisci tabelle derivate ed esegui), la query attenderà la ricostruzione delle tabelle prima di caricare i risultati. Le query di altri utenti continueranno a utilizzare le tabelle esistenti. Una volta ricostruite le tabelle persistenti, tutti gli utenti utilizzeranno le tabelle ricostruite.

Per ulteriori dettagli sull'opzione Rebuild Derived Tables & Run (Ricostruisci tabelle derivate ed esegui), consulta la pagina della documentazione dedicata alle tabelle derivate in Looker.

Risoluzione dei problemi

Come descritto nella sezione Determinazione della tabella aggregata utilizzata per una query, se sei in modalità di sviluppo, puoi eseguire query nell'esplorazione e fare clic sulla scheda SQL per visualizzare i commenti sulla tabella aggregata utilizzata per la query, se presenti.

La scheda SQL include anche commenti sul motivo per cui non sono state utilizzate tabelle aggregate per una query, se questo è il caso. Per le tabelle aggregate non utilizzate, il commento inizierà con:

Did not use [explore name]::[aggregate table name];

Ad esempio, ecco un commento sul motivo per cui la tabella aggregata sales_daily definita nell'esplorazione order_items non è stata utilizzata per una query:

-- Did not use order_items::sales_daily; query contained the following filters
that were neither included as fields nor exactly matched by filters in the aggregate table:
order_items.created_year.

In questo caso, i filtri nella query hanno impedito l'utilizzo della tabella aggregata.

La tabella seguente mostra alcuni altri possibili motivi per cui non è possibile utilizzare una tabella aggregata, insieme ai passaggi che puoi seguire per aumentarne l'usabilità.

Motivo per cui non viene utilizzata la tabella aggregata Spiegazione e possibili passaggi
Nessun campo di questo tipo nell'esplorazione. Si è verificato un errore di tipo di convalida LookML. Molto probabilmente, ciò è dovuto al fatto che la tabella aggregata non è stata definita correttamente o che è presente un errore di battitura nel LookML della tabella aggregata. Un probabile colpevole è un nome di campo errato o simile.

Per risolvere il problema, verifica che le dimensioni e le misure nella tabella aggregata corrispondano ai nomi dei campi nell'esplorazione. Per saperne di più su come definire una tabella aggregata, consulta la pagina della documentazione del parametro aggregate_table.
La tabella aggregata non include i seguenti campi nella query. Per essere utilizzata per una query di esplorazione, una tabella aggregata deve contenere tutte le dimensioni e le misure necessarie per la query di esplorazione, inclusi i campi utilizzati per i filtri nella query di esplorazione. Se una query di un'esplorazione contiene una dimensione o una misura che non si trova in una tabella aggregata, Looker non può utilizzare la tabella aggregata e utilizzerà invece la tabella di base. Per maggiori dettagli, consulta la sezione Fattori dei campi in questa pagina. L'unica eccezione sono le dimensioni del periodo di tempo, poiché i periodi di tempo con granularità più grossolana possono essere derivati da quelli con granularità più fine.

Per risolvere il problema, verifica che i campi della query di esplorazione siano inclusi nella definizione della tabella aggregata.
La query conteneva i seguenti filtri che non erano inclusi come campi né corrispondevano esattamente ai filtri della tabella aggregata. I filtri nella query di esplorazione impediscono a Looker di utilizzare la tabella aggregata.

Per risolvere il problema, puoi eseguire una delle seguenti operazioni:
  • Aggiungi lo stesso filtro alla tabella aggregata.
  • Aggiungi alla tabella aggregata il campo utilizzato dal filtro.
  • Rimuovi i filtri dalla query di Esplora.
Per maggiori dettagli, consulta la sezione Fattori di filtro in questa pagina.
La query contiene le seguenti misure che non possono essere aggregate. La query contiene uno o più tipi di misure non supportati per l'awareness aggregata, ad esempio conteggio distinto, mediana o percentile.

Per risolvere il problema, controlla il tipo di ogni misura nella query e assicurati che sia uno dei tipi di misura supportati. Inoltre, se l'esplorazione contiene join, verifica che le misure non vengano convertite in misure distinte (aggregati simmetrici) tramite join con fanout. Per una spiegazione, consulta la sezione Aggregati simmetrici per le esplorazioni con join in questa pagina.
Una tabella aggregata diversa era più adatta per l'ottimizzazione. Per la query erano disponibili più tabelle aggregate valide e Looker ne ha trovata una più ottimale da utilizzare. In questo caso non è necessario fare nulla.
Looker non ha eseguito alcun raggruppamento (a causa di un parametro primary_key o cancel_grouping_fields) e pertanto non è possibile eseguire il roll up della query. La query fa riferimento a una dimensione che impedisce l'utilizzo di una clausola GROUP BY, pertanto Looker non può utilizzare alcuna tabella aggregata per la query.

Per risolvere il problema, verifica che il parametro primary_key della vista e il parametro cancel_grouping_fields dell'esplorazione siano configurati correttamente.
La tabella aggregata conteneva filtri non presenti nella query. La tabella aggregata ha un filtro non temporale che non è presente nella query.

Per risolvere il problema, puoi rimuovere il filtro dalla tabella aggregata. Per maggiori dettagli, consulta la sezione Fattori di filtro in questa pagina.
Un campo è definito come campo solo con filtri nella query di esplorazione, ma è elencato nel parametro dimensions della tabella aggregata. Il parametro dimensions della tabella aggregata elenca un campo definito solo come campo filter nella query di Explore.

Per risolvere il problema, rimuovi il campo dall'elenco dimensions della tabella aggregata. Se questo campo è necessario per la tabella aggregata, aggiungilo all'elenco filters nella query della tabella aggregata.
Lo strumento di ottimizzazione non è in grado di determinare il motivo per cui la tabella aggregata non è stata utilizzata. Questo commento è riservato ai casi limite. Se visualizzi questo messaggio per una query di Explore utilizzata di frequente, puoi creare una tabella aggregata che corrisponda esattamente alla query di Explore. Puoi ottenere il codice LookML della tabella aggregata da un'esplorazione, come descritto nella pagina del parametro aggregate_table.

Aspetti da considerare

Aggregati simmetrici per le esplorazioni con join

Un aspetto importante da notare è che in un'esplorazione che unisce più tabelle di database, Looker può visualizzare le misure di tipo SUM, COUNT e AVERAGE rispettivamente come SUM DISTINCT, COUNT DISTINCT e AVERAGE DISTINCT. Looker esegue questa operazione per evitare errori di calcolo del fanout. Ad esempio, una misura count viene visualizzata come tipo di misura count_distinct. Questo serve a evitare errori di calcolo del fanout per i join e fa parte della funzionalità degli aggregati simmetrici di Looker. Per una spiegazione di questa funzionalità di Looker, consulta la pagina delle best practice sugli aggregati simmetrici.

La funzionalità degli aggregati simmetrici impedisce errori di calcolo, ma può anche impedire l'utilizzo delle tabelle aggregate in determinati casi, quindi è importante comprenderla.

Per i tipi di misura supportati dall'awareness aggregata, questo vale per sum, count e average. Looker eseguirà il rendering di questi tipi di misure come DISTINCT se:

Per una spiegazione di questi tipi di join, consulta la pagina della documentazione del parametro relationship.

Se scopri che la tua tabella aggregata non viene utilizzata per questo motivo, puoi crearne una che corrisponda esattamente a una query di Explore per utilizzare questi tipi di misure per un'esplorazione con join. Per saperne di più, consulta la sezione Creazione di tabelle aggregate che corrispondono esattamente alle query di Esplora in questa pagina.

Inoltre, se hai un dialetto SQL che supporta gli sketch HyperLogLog, puoi aggiungere il parametro allow_approximate_optimization: yes alla misura. Quando una misura di conteggio viene definita con allow_approximate_optimization: yes, Looker può utilizzarla per l'awareness aggregata, anche se viene visualizzata come conteggio distinto.

Per maggiori dettagli e per un elenco dei dialetti SQL che supportano gli sketch HyperLogLog, consulta la pagina della documentazione del parametro allow_approximate_optimization.

Supporto dei dialetti per l'awareness aggregata

La possibilità di utilizzare l'aggregate awareness dipende dal dialetto del database utilizzato dalla connessione di Looker. Nell'ultima release di Looker, i seguenti dialetti supportano l'awareness aggregata:

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

Supporto dei dialetti per la creazione incrementale di tabelle aggregate

Affinché Looker supporti le tabelle aggregate incrementali nel tuo progetto Looker, anche il dialetto del database deve supportarle. La tabella seguente mostra i dialetti che supportano la creazione incrementale di PDT nell'ultima release di Looker:

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