cancel_grouping_fields

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-Abfrage eine GROUP BY-Klausel hinzufügt. Wenn eines der von Ihnen angegebenen Felder vom Nutzer einbezogen wird, wird in Looker keine Gruppierung vorgenommen. Diese Funktion wird in der Regel verwendet, um die Abfrageleistung für sehr große Tabellen zu verbessern. Außer in seltenen und besonderen Fällen sollten Sie nur Felder einfügen, 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 im Feldpicker Bestell-ID auswählt:

explore: order {
  cancel_grouping_fields: [order.id]
}

Gruppieren Sie die Ergebnisse nicht, wenn der Nutzer in der Feldauswahl Auftrags-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 ist das nicht der Fall. Hier müssen Sie sowohl den Ansichtsnamen als auch den Feldnamen angeben.

Sie könnten beispielsweise annehmen, 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. Sie dient zur Verbesserung von Abfragen in großen 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 (mit dem Parameter primary_key) des verwendeten Explores definiert wurde, 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 und schnell angezeigt.

Bei sehr großen Tabellen können unnötige GROUP BY-Klauseln jedoch die Abfragezeiten verlängern. Dies ist die ideale Situation für die Verwendung von cancel_grouping_fields.