Nutzung
explore: explore_name {
cancel_grouping_fields: [
fully_scoped_field,
fully_scoped_field,
...
]
}
|
Hierarchie
cancel_grouping_fields |
Standardwert
Keine
Akzeptiert
Eckige Klammern mit einer durch Kommas getrennten Liste vollständig qualifizierter Feldnamen
Besondere Regeln
|
Definition
Mit cancel_grouping_fields können Sie verhindern, dass Looker der generierten SQL-Anweisung eine GROUP BY-Klausel hinzufügt. Wenn der Nutzer eines der von Ihnen angegebenen Felder einbezieht, wird die Gruppierung nicht durchgeführt. Diese Funktion wird in der Regel verwendet, um die Abfrageleistung bei sehr großen Tabellen zu verbessern. Außer in seltenen und besonderen Fällen sollten Sie nur Felder einbeziehen, die für jede Zeile in der Tabelle eindeutig sind, z. B. den Primärschlüssel.
Da Looker-Messwerte SQL-Aggregatfunktionen darstellen, für die eine GROUP BY-Klausel erforderlich ist, funktioniert cancel_grouping_fields nicht mit Abfragen, die Messwerte enthalten. Außerdem funktioniert cancel_grouping_fields nicht, wenn relationship: one_to_many oder relationship: many_to_many verwendet wird.
Die von Ihnen aufgeführten Felder müssen vollständig definiert sein. Sie sollten also als view_name.field_name und nicht einfach als field_name geschrieben werden.
Beispiele
Gruppieren Sie die Ergebnisse nicht, wenn der Nutzer in der Feldauswahl Bestell-ID auswählt:
explore: order {
cancel_grouping_fields: [order.id]
}
Gruppieren Sie die Ergebnisse nicht, wenn der Nutzer in der Feldauswahl Bestell-ID oder Auftragshash auswählt:
explore: order {
cancel_grouping_fields: [order.id, order.hash]
}
Gruppieren Sie die Ergebnisse nicht, wenn der Nutzer in der Feldauswahl Personen-ID oder DNA-ID auswählt:
explore: person {
cancel_grouping_fields: [person.id, dna.id]
join: dna {
sql_on: ${person.dna_id} = ${dna.id} ;;
relationship: one_to_one
}
}
Häufige Herausforderungen
Für cancel_grouping_fields sind vollständig qualifizierte Feldnamen erforderlich
Bei den meisten Parametern in Looker wird ein View-Name angenommen, wenn Sie nur einen Feldnamen angeben. Bei cancel_grouping_fields müssen Sie sowohl den Ansichtsnamen als auch den Feldnamen angeben.
Sie könnten beispielsweise denken, dass dies funktioniert und id als die Bestell-ID interpretiert wird, die in der Feldauswahl angezeigt wird:
explore: order {
cancel_grouping_fields: [id]
}
Das ist jedoch nicht der Fall und Sie erhalten eine Fehlermeldung. Stattdessen müssen Sie Folgendes schreiben:
explore: order {
cancel_grouping_fields: [order.id]
}
cancel_grouping_fields wird ausgelöst, wenn ein beliebiges angegebenes Feld ausgewählt wird. Es ist nicht erforderlich, dass alle Felder ausgewählt werden.
Wenn Sie mehr als ein Feld in cancel_grouping_fields angeben, wird die Gruppierung abgebrochen, wenn ein Nutzer ein beliebiges Feld in der Liste auswählt. Der Nutzer muss nicht alle Felder in der Liste auswählen. Aus diesem Grund funktionieren Primärschlüssel mit mehreren Spalten nicht mit cancel_grouping_fields.
Wichtige Punkte
cancel_grouping_fields ist nicht erforderlich, damit Looker richtig funktioniert. Es dient zur Verbesserung von Abfragen für große Tabellen.
Wenn Sie SQL-Code manuell schreiben, fügen die meisten Nutzer keine GROUP BY-Klausel ein, es sei denn, sie ist unbedingt erforderlich. In einigen Fällen werden auch unnötige GROUP BY-Klauseln vermieden. Wenn eine der Dimensionen in Ihrer Abfrage als Primärschlüssel des verwendeten Explores definiert wurde (mit dem Parameter primary_key), wird die GROUP BY-Klausel entfernt.
Es gibt jedoch einige Fälle, in denen eine andere Dimension, die nicht der Primärschlüssel ist, trotzdem eine eindeutige Zeile definiert. In diesen Fällen kann es sein, dass Looker ein unnötiges GROUP BY generiert, da die Gruppierung nach Dimensionen ein grundlegender Bestandteil der Funktionsweise von Looker ist. In den meisten Fällen führt dies zu keinen Problemen. Die Ergebnisse werden wie erwartet angezeigt und sind schnell verfügbar.
Bei sehr großen Tabellen können unnötige GROUP BY-Klauseln jedoch die Abfragezeiten verlängern. In diesem Fall ist es ideal, cancel_grouping_fields zu verwenden.