Joins erforderlich

Nutzung

Explore: view_name_1 {
join: view_name_2 { ... }
join: view_name_3 {
required_joins: [view_name_2, ...]
}
}
Hierarchie
required_joins
Standardwert
Keine

Akzeptiert
Eckige Klammern mit einer durch Kommas getrennten Liste von Joins für die Funktion „Entdecken“

Sonderregeln
Eine Ansicht muss mit einem explorativen Analysetool verknüpft werden, bevor darauf in required_joins verwiesen werden kann

Definition

required_joins erzwingt, dass mindestens ein joins in den von Looker generierten SQL-Code aufgenommen wird, auch wenn der Nutzer kein Feld aus dieser verknüpften Ansicht ausgewählt hat. Dieses Verhalten wird ausgelöst, wenn der Nutzer ein Feld aus einer von Ihnen angegebenen ähnlichen Ansicht auswählt. Mehrere Joins können mithilfe einer durch Kommas getrennten Liste wie [join_name_a, join_name_b, ...] erforderlich sein.

Wenn Looker SQL für eine Abfrage generiert, wird versucht, einen möglichst klaren SQL-Code zu erstellen. Dabei werden nur Joins verwendet, die für die vom Nutzer ausgewählten Felder erforderlich sind. Beispiel für das Syntaxdiagramm oben auf dieser Seite:

  • Wenn ein Nutzer nur ein Feld aus view_name_2 auswählt, ist dies die einzige Datenansicht, die mit „Erkunden“ verknüpft wird.
  • Wenn ein Nutzer ein Feld aus view_name_3 auswählt, bewirkt der Parameter required_joins dieses Joins, dass view_name_2 mit dem Tab „Erkunden“ verknüpft wird.

Die primären Anwendungsfälle für required_joins:

Alter Syntaxstil mit sql_on

sql_on benötigt required_joins nicht, wenn es mit der ${view_name.looker_dimension_name}-Syntax verwendet wird. Einige ältere Modelle verwenden jedoch weiterhin die Syntax view_name.native_column_name. Beispiel:

explore: order_items {
  join: order {
    sql_on: order_items.order_id = order.id ;;
  }
  join: customer {
    sql_on: order.customer_id = customer.id ;;
    required_joins: [order]
  }
}

-

Wenn ein Nutzer in diesem Beispiel ein Feld aus customer auswählt, muss auch die Ansicht order verknüpft werden, damit die Join-Beziehung aufrecht erhalten wird. Wenn Sie vergessen, dass diese Abfragen erforderlich sind, funktioniert es möglicherweise weiterhin, wenn der Nutzer Felder aus allen erforderlichen Ansichten auswählt. Andere Abfragen können jedoch aufgrund des falschen Joins zu falschen Daten führen.

Statt required_joins zu verwenden, können Sie das Modell so ändern, dass die Syntax ${view_name.looker_dimension_name} verwendet wird.

Bedarf an oder unstrukturiertes SQL schreiben

Es gibt Fälle, in denen Sie die ${view_name.looker_dimension_name}-Syntax nicht mit sql_on verwenden können oder wollen. In der Regel liegt das daran, dass Sie die unverarbeiteten Werte in Ihrer Datenbank verwenden und das Umwandeln oder andere Änderungen durch die ${view_name.looker_dimension_name}-Syntax vermeiden möchten. Hier ein Anwendungsbeispiel:

explore: order {
  join: user {
    sql_on: ${order.user_id} = ${user.id} ;;
  }
  join: pre_sign_up_events {
    from: event
    sql_on:
      ${event.user_id} = ${user.id} AND
      event.date BETWEEN user.creation_date AND user.sign_up_date ;;
    required_joins: [user]
    relationship: one_to_many
  }
}

-

In diesem Beispiel beruht der Join pre_sign_up_events auf Datumsangaben aus user. Daher muss user mit required_joins verknüpft werden.

Verwenden Sie anstelle von required_joins das Umwandeln mit Zeit- oder Datumsfeldern. Verwenden Sie stattdessen den Typ date_raw und nicht required_joins.

Häufige Herausforderungen

Eine Ansicht muss mit einem explorativen Analysetool verknüpft werden, bevor darauf in required_joins verwiesen werden kann

Damit Sie eine Ansicht in required_joins platzieren können, muss sie mit dem explore verknüpft sein, an dem die required_joins verwendet wird. Das funktioniert beispielsweise nicht:

explore: order_items {
  join: customer {
    sql_on: order.customer_id = customer.id ;;
    required_joins: [order]
  }
}

-

order wurde nicht mit order_items verknüpft und kann daher in required_joins nicht verwendet werden.