allow_approximate_optimization

Utilizzo

view: view_name {
  measure: field_name {
    allow_approximate_optimization: yes 
  }
}
Gerarchia
allow_approximate_optimization
Tipi di campi disponibili
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 le approssimazioni per i conteggi distinti per la consapevolezza dell'aggregazione.

Per un elenco dei dialetti che supportano i conteggi distinti per le tabelle aggregate utilizzando gli schizzi HyperLogLog, consulta la sezione Supporto dei dialetti per i conteggi distinti con consapevolezza dell'aggregazione in questa pagina.

In generale, i conteggi distinti non possono essere supportati con la consapevolezza dell'aggregazione perché non è possibile ottenere dati precisi se si tenta di aggregare i conteggi distinti. Ad esempio, se stai contando gli utenti distinti 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 distinti sul tuo sito web, questo utente verrebbe conteggiato due volte nella query di conteggio distinti mensile e i dati sarebbero errati.

Una soluzione alternativa consiste nel creare una tabella aggregata che corrisponda esattamente a una query di esplorazione, come descritto nella pagina della documentazione relativa alla consapevolezza dell'aggregazione. Quando la query di esplorazione e una query di tabella aggregata sono uguali, le misure di conteggio distinti forniscono dati precisi, quindi possono essere utilizzate per la consapevolezza dell'aggregazione.

L'altra opzione è utilizzare le 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 riconoscere che è possibile utilizzare dati approssimativi per la misura, in modo che la misura possa essere calcolata approssimativamente dalle tabelle aggregate.

Con la consapevolezza dell'aggregazione, ci sono due casi in cui entrano in gioco i conteggi distinti:

  • Il primo caso riguarda le 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 relativa alla consapevolezza dell'aggregazione, Looker visualizza le 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 alle dimensioni di una tabella aggregata, Looker può fornire dati esatti per i conteggi distinti, senza doverli approssimare. In questo caso, nella scheda SQL dell'esplorazione vedrai che le misure di conteggio distinti vengono utilizzate per la consapevolezza dell'aggregazione senza utilizzare l'algoritmo HyperLogLog.

Esempio

La misura apx_unique_count mostrata in questo esempio è impostata su allow_approximate_optimization: yes, il che significa che la misura può essere utilizzata in una 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 dell'aggregazione

Looker può utilizzare i conteggi distinti per la consapevolezza dell'aggregazione con i 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 dell'aggregazione:

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
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 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

Consulta la documentazione del tuo dialetto SQL per comprendere i compromessi tra velocità e precisione di questo metodo.