Pourquoi mes mesures ne sont-elles pas renvoyées via une jointure ?

Vous avez défini des mesures dans une vue, mais lorsque vous associez cette vue à une autre, les mesures n'apparaissent plus dans une exploration. Où sont passées les mesures ?

Causes possibles et solutions

Les causes sous-jacentes possibles peuvent varier selon que les agrégations symétriques sont activées ou non. Les agrégations symétriques sont automatiquement activées, sauf si votre développeur les a désactivées avec le paramètre LookML symmetric_aggregates: no ou si votre dialecte de base de données ne les prend pas en charge.

Lorsque les agrégations symétriques sont activées

Les agrégats symétriques permettent aux mesures de tous types d'être conservées lors des jointures. Toutefois, cela n'est possible que si des clés primaires sont définies dans les vues des deux côtés d'une jointure. Pour que les mesures soient conservées dans les jointures, vous devez définir une clé primaire dans toutes les vues concernées.

Vous pouvez définir une clé primaire dans chaque vue en ajoutant primary_key: yes à la définition du champ de clé primaire, comme suit :

dimension: id {
 type: number
 primary_key: yes
}

Les clés primaires doivent comporter des valeurs non NULL entièrement uniques pour les types de mesures sum et average afin de pouvoir effectuer des jointures. Si votre clé primaire n'est pas unique, vous pouvez recevoir un message d'erreur semblable à celui-ci :

Non-Unique value/primary key (or sql_distinct_key), value overflow or collision when computing sum.

De plus, si votre vue ne contient aucun champ unique, vous pouvez créer une clé primaire composée en concaténant deux champs ou plus en SQL pour créer une combinaison unique de valeurs. Pour savoir comment résoudre cette erreur, consultez la section Clé primaire non unique de la page des bonnes pratiques Error: Non-Unique value/primary key (or sql_distinct_key), value overflow or collision when computing sum.

Lorsque les agrégations symétriques ne sont pas activées

Certains dialectes ne sont pas compatibles avec les agrégations symétriques, ou votre développeur Looker les a désactivées avec le paramètre LookML symmetric_aggregates: no. Lorsque les agrégations symétriques ne peuvent pas être utilisées, Looker ne transmet par défaut que les mesures de type count (qui deviennent des mesures de nombre de valeurs distinctes) via une jointure. Cette approche nécessite également une clé primaire, car le nombre de valeurs distinctes l'utilisera. Cela permet d'éviter les résultats et les fan-outs inexacts. Consultez le post de la communauté sur les fonctions d'agrégation qui ont mal tourné.

Une liste indique les dialectes qui prennent en charge les agrégations symétriques dans la dernière version de Looker.

Autres solutions à envisager

  • Utilisation de fields (pour les jointures) au niveau de la jointure. fields vous permet de spécifier les champs (mesures, dimensions) d'une vue jointe qui apparaissent dans une exploration.
  • Choisir le bon paramètre relationship. Le paramètre relationship indique à Looker s'il doit appliquer des agrégats symétriques lorsque la jointure est utilisée dans une requête SQL. Il est important de définir correctement le type de relation pour permettre à Looker de calculer des valeurs de mesure précises.