Utilizzo
view: view_name {
measure: field_name {
allow_approximate_optimization: yes
}
}
|
Gerarchia
allow_approximate_optimization |
Tipi di campi possibili
Misura
Valore predefinito
no
Accetta
Un valore booleano (sì o no)
|
Definizione
Per i dialetti che supportano gli schizzi HyperLogLog, Looker può sfruttare l'algoritmo HyperLogLog per approssimare i conteggi distinti per le tabelle aggregate.
L'istruzione allow_approximate_optimization: yes consente a Looker di archiviare gli schizzi HyperLogLog nelle tabelle aggregate, il che significa che Looker può utilizzare approssimazioni per i conteggi univoci per la consapevolezza aggregata.
Consulta la sezione Supporto dei dialetti per conteggi distinti con consapevolezza aggregata in questa pagina per l'elenco dei dialetti che supportano conteggi distinti per le tabelle aggregate utilizzando gli schizzi HyperLogLog.
In generale, i conteggi univoci non possono essere supportati con l'aggregazione perché non è possibile ottenere dati accurati se si tenta di aggregare i conteggi univoci. 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 hai provato ad applicare una tabella aggregata settimanale per ottenere un conteggio mensile degli utenti unici sul tuo sito web, l'utente verrà conteggiato due volte nella query di conteggio mensile degli utenti unici e i dati non saranno corretti.
Una soluzione alternativa consiste nel creare una tabella aggregata che corrisponda esattamente a una query di Esplora, come descritto nella pagina di documentazione Consapevolezza dell'aggregazione. Quando la query di esplorazione e una query della tabella aggregata sono uguali, le misure di conteggio distinto forniscono dati accurati, quindi possono essere utilizzate per la consapevolezza aggregata.
L'altra opzione è utilizzare approssimazioni per i conteggi distinti. È noto che l'algoritmo HyperLogLog ha un potenziale errore di circa il 2%. Il parametro allow_approximate_optimization richiede agli sviluppatori di Looker di confermare che è possibile utilizzare dati approssimativi per la misura, in modo che possa essere calcolata in modo approssimativo dalle tabelle aggregate.
Con la consapevolezza degli aggregati, esistono due casi in cui entrano in gioco i conteggi distinti:
- Il primo caso riguarda misure di
type: count_distinct. - Il secondo caso riguarda le misure di
type: countche vengono effettivamente visualizzate da Looker come tipi di misurecount_distinct. Come descritto nella pagina della documentazione Riconoscimento degli aggregati, Looker esegue il rendering delle misurecountcomecount_distinctper evitare errori di calcolo di fanout nelle esplorazioni che uniscono più tabelle di database.
In entrambi i casi, se il dialetto supporta gli schizzi HyperLogLog, puoi aggiungere l'istruzione allow_approximate_optimization: yes alle misure per attivare i valori approssimativi. Puoi quindi includere queste misure nelle tabelle aggregate.
Anche per le misure definite con
allow_approximate_optimization: yes, Looker restituirà dati esatti quando possibile. Ad esempio, se le dimensioni in una query di esplorazione corrispondono perfettamente a quelle di una tabella aggregata, Looker può fornire dati esatti per i conteggi distinti, senza dover approssimare. In questo caso, nella scheda SQL di Esplora vedrai che le misure di conteggio univoco vengono utilizzate per la notorietà aggregata senza utilizzare l'algoritmo HyperLogLog.
Esempio
La misura apx_unique_count mostrata in questo esempio è impostata per allow_approximate_optimization: yes, il che significa che può essere utilizzata in un aggregate_table.
measure: apx_unique_count {
type: count_distinct
allow_approximate_optimization: yes # default value is no
sql: ${id} ;;
}
Supporto dei dialetti per i conteggi distinti con consapevolezza aggregata
Looker può utilizzare conteggi distinti per la notorietà aggregata con dialetti di database che supportano gli schizzi HyperLogLog. Nell'ultima release di Looker, i seguenti dialetti SQL sono supportati per i conteggi distinti con consapevolezza degli aggregati:
| 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+ | |
| Apache Druid 0.18+ | |
| Apache Hive 2.3+ | |
| Apache Hive 3.1.2+ | |
| Apache Spark 3+ | |
| ClickHouse | |
| 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+ | |
| Exasol | |
| Google BigQuery Legacy SQL | |
| Google BigQuery Standard SQL | |
| 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 | |
| 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 |
Consulta la documentazione del tuo dialetto SQL per comprendere i compromessi tra velocità e precisione di questo metodo.