Nutzung
view: view_name {
measure: field_name {
allow_approximate_optimization: yes
}
}
|
Hierarchie
allow_approximate_optimization |
Mögliche Feldtypen
Messen
Standardwert
no
Akzeptiert
Boolescher Wert (ja oder nein)
|
Definition
Bei Dialekten, die HyperLogLog-Skizzen unterstützen, kann Looker den HyperLogLog-Algorithmus verwenden, um ungefähre eindeutige Zählungen für aggregierte Tabellen zu erhalten.
Mit der Anweisung allow_approximate_optimization: yes kann Looker HyperLogLog-Skizzen in aggregierten Tabellen speichern. Das bedeutet, dass Looker Näherungswerte für eindeutige Zählungen für die Aggregatoptimierung verwenden kann.
Eine Liste der Dialekte, die eindeutige Zählungen für aggregierte Tabellen mithilfe von HyperLogLog-Skizzen unterstützen, finden Sie auf dieser Seite im Abschnitt Dialektunterstützung für eindeutige Zählungen mit Aggregatoptimierung.
Im Allgemeinen können eindeutige Zählungen nicht mit der Aggregatoptimierung unterstützt werden, da Sie keine genauen Daten erhalten, wenn Sie versuchen, eindeutige Zählungen zu aggregieren. Wenn Sie beispielsweise die eindeutigen Nutzer auf einer Website zählen, kann es sein, dass ein Nutzer die Website zweimal besucht hat, wobei drei Wochen zwischen den Besuchen liegen. Wenn Sie versuchen, eine wöchentliche zusammengefasste Tabelle zu verwenden, um eine monatliche Anzahl eindeutiger Nutzer auf Ihrer Website zu erhalten, wird dieser Nutzer zweimal in Ihrer monatlichen Abfrage für eindeutige Zählungen gezählt und die Daten sind falsch.
Eine mögliche Lösung besteht darin, eine zusammengefasste Tabelle zu erstellen, die genau einer Explore-Abfrage entspricht, wie auf der Aggregatoptimierung Dokumentationsseite beschrieben. Wenn die Explore-Abfrage und eine Abfrage für eine zusammengefasste Tabelle identisch sind, liefern eindeutige Zählungen genaue Daten, sodass sie für die Aggregatoptimierung verwendet werden können.
Die andere Möglichkeit besteht darin, Näherungswerte für eindeutige Zählungen zu verwenden. Der HyperLogLog-Algorithmus hat einen potenziellen Fehler von etwa 2 %. Für den Parameter allow_approximate_optimization müssen Ihre Looker-Entwickler bestätigen, dass es in Ordnung ist, Näherungswerte für den Messwert zu verwenden, damit der Messwert ungefähr aus aggregierten Tabellen berechnet werden kann.
Bei der Aggregatoptimierung gibt es zwei Fälle, in denen eindeutige Zählungen eine Rolle spielen:
- Der erste Fall betrifft Messwerte vom Typ
type: count_distinct. - Der zweite Fall betrifft Messwerte vom Typ
type: count, die von Looker alscount_distinctMesswerte gerendert werden. Wie auf der Dokumentationsseite Aggregatoptimierung erläutert, rendert LookercountMesswerte alscount_distinct, um Fanout-Fehler in Explores zu vermeiden, die mehrere Datenbanktabellen verknüpfen.
Wenn Ihr Dialekt HyperLogLog-Skizzen unterstützt, können Sie in beiden Fällen die Anweisung allow_approximate_optimization: yes zu Messwerten hinzufügen, um Näherungswerte zu aktivieren. Anschließend können Sie diese Messwerte in aggregierte Tabellen einfügen.
Auch für Messwerte, die mit
allow_approximate_optimization: yesdefiniert wurden, gibt Looker nach Möglichkeit genaue Daten zurück. Wenn die Dimensionen in einer Explore-Abfrage beispielsweise genau mit den Dimensionen in einer zusammengefassten Tabelle übereinstimmen, kann Looker genaue Daten für eindeutige Zählungen liefern, ohne dass eine Näherung erforderlich ist. In diesem Fall sehen Sie auf dem Tab „SQL“ des Explores, dass eindeutige Zählungen für die Aggregatoptimierung verwendet werden, ohne dass der HyperLogLog-Algorithmus eingesetzt wird.
Beispiel
Der in diesem Beispiel gezeigte Messwert apx_unique_count ist auf allow_approximate_optimization: yes festgelegt. Das bedeutet, dass der Messwert in einer aggregate_table verwendet werden kann.
measure: apx_unique_count {
type: count_distinct
allow_approximate_optimization: yes # default value is no
sql: ${id} ;;
}
Dialektunterstützung für eindeutige Zählungen mit Aggregatoptimierung
Looker kann eindeutige Zählungen für die Aggregatoptimierung mit Datenbankdialekten verwenden, die HyperLogLog-Skizzen unterstützen. In der neuesten Version von Looker werden die folgenden SQL-Dialekte für eindeutige Zählungen mit Aggregatoptimierung unterstützt:
| Dialekt | Unterstützt? |
|---|---|
| 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 |
In der Dokumentation zu Ihrem SQL-Dialekt finden Sie Informationen zu den Kompromissen zwischen Geschwindigkeit und Genauigkeit dieser Methode.