symmetric_aggregates

Uso

explore: explore_name {
  symmetric_aggregates: yes
}
Jerarquía
symmetric_aggregates
Valor predeterminado
yes

Acepta
Un valor booleano (yes o no)

Definición

El parámetro symmetric_aggregates determina si se aplicarán o no agregaciones simétricas en una exploración determinada. Cuando symmetric_aggregates está activado, las funciones de agregación devuelven resultados correctos, incluso cuando las uniones generan una distribución ramificada. Las agregaciones simétricas se describen con más detalle en la página de prácticas recomendadas Información sobre las agregaciones simétricas, y el problema de fanout que resuelven se explica en la publicación de Comunidad El problema de los fanouts de SQL.

De forma predeterminada, las agregaciones simétricas están activadas para cada exploración en Looker. Esto significa que, si tu dialecto de SQL admite agregaciones simétricas, solo debes incluir el parámetro symmetric_aggregates si quieres inhabilitar esa funcionalidad para una exploración.

Ejemplos

Activa las agregaciones simétricas para la exploración product:

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

Desactiva las agregaciones simétricas para la exploración customer:

explore: customer {
  symmetric_aggregates: no
}

Aspectos para tener en cuenta

Crea uniones con cuidado cuando las agregaciones simétricas estén desactivadas

Las agregaciones simétricas protegen ciertos cálculos para que no den resultados incorrectos cuando una unión genera un fanout. Por lo tanto, si tu dialecto no admite agregaciones simétricas o si decides desactivarlas, deberás tener cuidado cuando ejecutes uniones en Looker. Este problema y las soluciones alternativas se describen en detalle en la publicación de Comunidad The problem of SQL fanouts.

No todos los dialectos de bases de datos admiten tipos de medidas de mediana y percentil con agregaciones simétricas

Cuando se habilitan los agregados simétricos, Looker convierte automáticamente los tipos de medición percentile y median en percentile_distinct y median_distinct cuando una unión implica una distribución ramificada. No todos los dialectos de bases de datos que admiten agregaciones simétricas admiten los tipos de medición percentile_distinct y median_distinct. Puedes ver si el dialecto de tu base de datos admite estos tipos de mediciones en la página de documentación Tipos de mediciones.

Si recibes un error similar a SQL dialect doesn't support Symmetric Aggregates with percentiles, field ignored., esto indica que el dialecto de tu base de datos no admite los tipos de medición percentile_distinct y median_distinct. Para solucionar este problema, cambia el tipo de medición a type: number y, luego, especifica la función de agregación con sql: median(${dimension}). Sin embargo, esto inhabilita los agregados simétricos.

Agregaciones simétricas y errores de Value Overflow

Cuando intentes descargar o ver paneles, es posible que encuentres un error como A LookML model issue occurred. Non-unique value/primary key (or sql_distinct_key), value overflow or collision when computing sum.

Cuando se agrega una medición con valores grandes, los cálculos en segundo plano para la agregación simétrica pueden causar errores de desbordamiento decimal. Los errores de desbordamiento decimal se producen cuando Looker intenta realizar una agregación simétrica (por ejemplo, type: sum) con uniones izquierdas para valores muy grandes que superan los 14 dígitos (valores superiores a 10,000,000,000,000).

Para resolver este problema, puedes usar el parámetro precision y establecerlo en 5 o un valor inferior. Por ejemplo:

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

Compatibilidad de dialectos con agregaciones simétricas

La capacidad de usar agregaciones simétricas depende del dialecto de la base de datos que use tu conexión de Looker. En la versión más reciente de Looker, los siguientes dialectos admiten el reconocimiento de agregación:

Dialecto ¿Es compatible?
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