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.