symmetric_aggregates

Nutzung

explore: explore_name {
  symmetric_aggregates: yes
}
Hierarchie
symmetric_aggregates
Standardwert
yes

Akzeptiert
Ein boolescher Wert (yes oder no)

Definition

Der Parameter symmetric_aggregates bestimmt, ob symmetrische Aggregate in einem bestimmten Explore angewendet werden oder nicht. Wenn symmetric_aggregates aktiviert ist, geben Aggregatfunktionen korrekte Ergebnisse zurück, auch wenn Joins zu einem Fanout führen. Symmetrische Aggregate werden auf der Best-Practices-Seite Symmetrische Aggregate verstehen ausführlicher beschrieben. Das Fanout-Problem, das sie lösen, wird im Community-Beitrag Das Problem von SQL-Fanouts erläutert.

Standardmäßig sind symmetrische Aggregate für jeden Explore in Looker aktiviert. Das bedeutet, dass Sie den Parameter symmetric_aggregates nur dann einfügen müssen, wenn Sie diese Funktion für ein Explore deaktivieren möchten, sofern Ihr SQL-Dialekt symmetrische Aggregate unterstützt.

Beispiele

Aktivieren Sie symmetrische Aggregate für den Explore product:

explore: product {
  symmetric_aggregates: yes  # the default value, could be excluded
}

Symmetrische Aggregate für den Explore customer deaktivieren:

explore: customer {
  symmetric_aggregates: no
}

Wichtige Punkte

Joins sorgfältig erstellen, wenn symmetrische Aggregate deaktiviert sind

Symmetrische Aggregate verhindern, dass bestimmte Berechnungen falsche Ergebnisse liefern, wenn ein Join zu einem Fanout führt. Wenn Ihr Dialekt symmetrische Aggregate nicht unterstützt oder Sie sie deaktivieren, müssen Sie bei der Ausführung von Joins in Looker besonders aufmerksam sein. Dieses Problem und die entsprechenden Problemumgehungen werden im Community-Beitrag The problem of SQL fanouts ausführlich beschrieben.

Nicht alle Datenbankdialekte unterstützen die Messwerttypen „Median“ und „Perzentil“ mit symmetrischen Aggregaten.

Wenn symmetrische Aggregate aktiviert sind, konvertiert Looker die Measure-Typen percentile und median automatisch in percentile_distinct und median_distinct, wenn ein Join ein Fanout beinhaltet. Nicht alle Datenbankdialekte, die symmetrische Aggregate unterstützen, unterstützen die Measure-Typen percentile_distinct und median_distinct. Auf der Dokumentationsseite Messwerttypen können Sie nachsehen, ob Ihr Datenbankdialekt diese Messwerttypen unterstützt.

Wenn Sie einen Fehler wie SQL dialect doesn't support Symmetric Aggregates with percentiles, field ignored. erhalten, bedeutet dies, dass Ihr Datenbankdialekt die Measure-Typen percentile_distinct und median_distinct nicht unterstützt. Um dieses Problem zu umgehen, ändern Sie den Messwerttyp in type: number und geben Sie dann die Aggregatfunktion mit sql: median(${dimension}) an. Dadurch werden jedoch symmetrische Aggregate deaktiviert.

Symmetrische Aggregate und Value Overflow-Fehler

Beim Versuch, Dashboards herunterzuladen oder anzusehen, kann ein Fehler wie A LookML model issue occurred. Non-unique value/primary key (or sql_distinct_key), value overflow or collision when computing sum. auftreten.

Wenn Sie eine Measure mit großen Werten aggregieren, können Hintergrundberechnungen für die symmetrische Aggregation zu Dezimalüberlauffehlern führen. Dezimalüberlauffehler werden verursacht, wenn Looker versucht, eine symmetrische Aggregation (z. B. type: sum) mit Left Joins für sehr große Werte mit mehr als 14 Ziffern (Werte größer als 10.000.000.000.000) durchzuführen.

Zur Behebung dieses Problems können Sie den Parameter precision verwenden und auf 5 oder niedriger festlegen. Beispiel:

measure: average_value {
  type: average
  precision: 5
  sql: ${value} ;;
}

Dialektunterstützung für symmetrische Aggregate

Die Möglichkeit, symmetrische Aggregate zu verwenden, hängt von dem Datenbankdialekt ab, den Ihre Looker-Verbindung verwendet. In der neuesten Version von Looker unterstützen die folgenden Dialekte die Aggregat-Awareness:

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