sql_distinct_key

Utilisation

view: view_name {
  measure: field_name {
    type: sum_distinct
    sql_distinct_key: ${my_field_name} ;;
  }
}
Hiérarchie
sql_distinct_key
Types de champs possibles
Mesurer

Acceptation
Expression SQL

Définition

Le paramètre sql_distinct_key est utilisé avec des types de mesures qui effectuent des agrégations sur des valeurs non répétées, en particulier des mesures de type average_distinct, median_distinct, percentile_distinct et sum_distinct. sql_distinct_key indique à Looker le champ à utiliser comme base pour déterminer les valeurs uniques, ce qui évite les erreurs de calcul en cas de fanout.

Par exemple, type: sum_distinct additionne les valeurs non répétées dans un champ donné, en fonction des valeurs uniques définies par le sql_distinct_key paramètre.

Prenons l'exemple d'un tableau comme celui-ci :

ID de l'article de la commande ID de la commande Livraison de la commande
1 1 10.00
2 1 10.00
3 2 20.00
4 2 20.00
5 2 20.00

Dans ce cas, plusieurs lignes correspondent à chaque commande. Si vous ajoutez une mesure de base de type: sum pour la colonne order_shipping, vous obtenez un total de 80.00, alors que le montant total des frais de port collectés est en réalité de 30.00.

 # Will NOT calculate the correct shipping amount
measure: total_shipping {
  type: sum
  sql: ${order_shipping} ;;
}

Pour obtenir un résultat précis, vous pouvez expliquer à Looker comment identifier chaque entité unique (dans ce cas, chaque commande unique) à l'aide du paramètre sql_distinct_key. Cela calculera le montant correct de 30.00 :

 # Will calculate the correct shipping amount
measure: total_shipping {
  type: sum_distinct
  sql_distinct_key: ${order_id} ;;
  sql: ${order_shipping} ;;
}

Chaque valeur unique de sql_distinct_key ne doit avoir qu'une seule valeur correspondante dans sql. Cet exemple fonctionne, car chaque ligne avec un order_id de 1 a le même order_shipping de 10.00, chaque ligne avec un order_id de 2 a le même order_shipping de 20.00, etc.