sql_distinct_key

Nutzung

view: view_name {
  measure: field_name {
    type: sum_distinct
    sql_distinct_key: ${my_field_name} ;;
  }
}
Hierarchie
sql_distinct_key
Mögliche Feldtypen
Messung

Akzeptiert
Ein SQL-Ausdruck

Definition

Der Parameter sql_distinct_key wird mit Messwerttypen verwendet, bei denen Aggregationen für nicht wiederholte Werte ausgeführt werden, insbesondere Messwerte vom Typ average_distinct, median_distinct, percentile_distinct und sum_distinct. Mit sql_distinct_key wird Looker mitgeteilt, welches Feld als Grundlage für die Bestimmung eindeutiger Werte verwendet werden soll. So werden Fehlberechnungen im Fall eines Fanout vermieden.

Mit type: sum_distinct werden beispielsweise die nicht wiederholten Werte in einem bestimmten Feld auf Grundlage der eindeutigen Werte addiert, die durch den Parameter sql_distinct_key definiert werden.

Nehmen wir an, Sie haben eine Tabelle wie diese:

Bestellpositions-ID Bestell-ID Versand von Bestellungen
1 1 10,00
2 1 10,00
3 2 20,00
4 2 20,00
5 2 20,00

In diesem Fall gibt es mehrere Zeilen für jeden Auftrag. Wenn Sie der Spalte order_shipping den einfachen Messwert type: sum hinzufügen, erhalten Sie insgesamt 80,00, obwohl die tatsächlich erhobenen Versandkosten 30,00 betragen.

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

Damit Sie ein genaues Ergebnis erhalten, können Sie Looker mithilfe des Parameters sql_distinct_key erklären, wie die einzelnen eindeutigen Einheiten (in diesem Fall die einzelnen eindeutigen Bestellungen) identifiziert werden sollen. Damit wird der richtige Betrag von 30,00 € berechnet:

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

Jeder eindeutige Wert von sql_distinct_key muss genau einen entsprechenden Wert in sql haben. Dieses Beispiel funktioniert, weil jede Zeile mit einem order_id von 1 denselben order_shipping von 10,00 hat, jede Zeile mit einem order_id von 2 denselben order_shipping von 20,00 usw.