allow_approximate_optimization

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: count che vengono effettivamente visualizzate da Looker come tipi di misure count_distinct. Come descritto nella pagina della documentazione Riconoscimento degli aggregati, Looker esegue il rendering delle misure count come count_distinct per 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.