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

Vous avez défini des mesures dans une vue, mais lorsque vous la joignez à une autre vue, vous ne voyez plus les mesures dans une exploration. Où sont passées les mesures ?

Causes et solutions possibles

Les causes sous-jacentes possibles peuvent dépendre de l'activation des agrégations symétriques. 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 n'est pas compatible avec les agrégations symétriques.

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

Les agrégations symétriques permettent de transmettre des mesures de tous types via 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 permettre aux mesures de s'appliquer aux jointures, vous devez définir une clé primaire dans toutes les vues impliqué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 avoir des valeurs complètement uniques, autres que NULL, pour les types de mesure sum et average afin de réaliser des jointures. Si votre clé primaire n'est pas unique, un message d'erreur semblable à celui-ci peut s'afficher:

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

De plus, si votre vue ne comporte pas de champ unique, vous pouvez créer une clé primaire composée en concatenant 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 a désactivé les agrégations symétriques 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 des mesures de type count (qui deviennent des mesures de nombre distinct) via une jointure. Cette approche nécessite également une clé primaire, car le nombre distinct utilisera la clé primaire. Cela évite d'obtenir des résultats inexacts et des fanouts. Consultez le post de la communauté sur les fonctions d'agrégation défectueuses.

Une liste indique les dialectes compatibles avec les agrégations symétriques dans la version la plus récente 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égations 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.