Diese Seite bezieht sich auf den Parameter
type
, der Teil eines Join ist.
type
kann auch als Teil einer Dimension verwendet werden. Weitere Informationen dazu finden Sie auf der Dokumentationsseite zu Dimensionen, Filtern und Parametertypen.
type
kann auch als Teil einer Messung verwendet werden, wie auf der Dokumentationsseite zu Messtypen beschrieben.
type
kann auch als Teil eines Dashboard-Filters verwendet werden, der auf der Dokumentationsseite zu Dashboard-Parametern beschrieben wird.
type
kann auch als Teil eines Dashboard-Elements verwendet werden, das auf der Dokumentationsseite zum Parametertype
(für LookML-Dashboards) beschrieben wird.
Nutzung
join: view_name_2 {
type: inner
}
}
Hierarchie
type |
Standardwert
left_outer Akzeptiert
Ein Join-Typ (cross , full_outer , inner , left_outer )Sonderregeln
Wenn Sie eine andere type als left_outer verwenden, können Sie always_join verwenden, damit die resultierenden Zeilen Ihre Join-Einschränkungen enthalten
|
Definition
Mit type
können Sie die Art von Join beschreiben, den Sie ausführen möchten. Die möglichen Werte für den Join-Typ sind im nächsten Bild dargestellt:
Die möglichen Werte für den Join-Typ werden in den folgenden Abschnitten dieser Seite beschrieben:
left_outer
(Standardwert)
Der häufigste Join-Typ in Looker ist left_outer
(der Grund für seine häufige Verwendung wird im Abschnitt left_outer
-Join-Typen werden normalerweise bevorzugt auf dieser Seite beschrieben). Vielleicht kennen Sie es von SQL als LEFT JOIN
. Wenn Sie diese type
verwenden, werden alle Zeilen aus dem Tab „Erkunden“ einbezogen und Daten aus der verknüpften Ansicht werden eingefügt, sofern verfügbar.
full_outer
Der Join-Typ full_outer
, den Sie möglicherweise von SQL als FULL OUTER JOIN
kennen, enthält alle Zeilen aus der Ansicht „Erkunden“ und der Join-Ansicht, auch wenn keine entsprechenden Daten aus der anderen Ansicht vorhanden sind. Beachten Sie, dass vollständige Outer Joins in MySQL nicht unterstützt werden.
inner
Der Join-Typ inner
, den Sie möglicherweise von SQL als JOIN
oder INNER JOIN
kennen, enthält nur Zeilen mit übereinstimmenden Einträgen in der Ansicht „Erkunden“ und der Join-Ansicht.
cross
Der Join-Typ cross
, den Sie möglicherweise von SQL als CROSS JOIN
kennen, wird nur selten verwendet. Manchmal ist es hilfreich für die Nullfüllung oder die Matrixgenerierung. Für jede Kombination aus „Erkunden“ und „Verbundene Elemente“ wird eine Zeile erstellt. Das Konzept ist in einem Venn-Diagramm schwer zu verstehen und sollte anhand des Tabellenbeispiels besser verstanden werden:
Beispiele
Verwenden Sie einen LEFT JOIN
, um dna
-Daten zu Ihren people
-Daten hinzuzufügen, wenn dna
-Informationen verfügbar sind:
explore: person {
join: dna {
sql_on: ${person.dna_id} = ${dna.id} ;;
type: left_outer # Could be excluded since left_outer is the default
}
}
Verwenden Sie einen FULL OUTER JOIN
, um user
-Daten zu Ihren order
-Daten hinzuzufügen, auch wenn der Nutzer keine Bestellung aufgegeben hat:
explore: order {
join: user {
sql_on: ${order.user_id} = ${user.id} ;;
type: full_outer
}
}
Verwenden Sie einen INNER JOIN
, um user
-Daten zu Ihren event
-Daten hinzuzufügen und die Ergebnisse auf die von einem Nutzer generierten Ereignisse zu beschränken:
explore: event {
join: user {
sql_on: ${event.user_id} = ${user.id} ;;
type: inner
}
}
Verwenden Sie CROSS JOIN
, um alle möglichen Kombinationen von owner
und property
zu generieren:
explore: property {
join: owner {
sql_on: 1 = 1 ;; # this sql_on condition is required in some dialects,
type: cross # but causes problems in other dialects, try adding or
} # removing if you experience problems with cross joins
}
Wichtige Informationen
left_outer
Join-Typen werden normalerweise bevorzugt
Beim Lernen und Verwenden von SQL konzentrieren sich viele Menschen hauptsächlich auf JOIN
, technisch gesehen als „Inner Join“ bezeichnet. Daher kann man davon ausgehen, dass type: inner_join
in den meisten Fällen verwendet werden sollte. Looker funktioniert jedoch in der Regel am besten mit type: left_outer
, ähnlich wie mit LEFT JOIN
in SQL.
Der Grund dafür ist, dass die mit einer explorativen Datenanalyse verknüpfte Datenansicht (im Gegensatz zu den in eine explorative Datenanalyse eingebundenen Ansichten) in der Regel die „primären“ Daten sind. So könnten Sie beispielsweise die Funktion „Erkunden“ nutzen, die auf Ereignisinformationen basiert. Einige der Ereignisse können von Ihrem System und andere von Ihren Nutzern generiert werden. Wenn Sie user
über ein reguläres JOIN
in event
einbinden, sehen Sie nur die von einem Nutzer erstellten Ereignisse. Die Sichtbarkeit von Systemereignissen geht dann verloren. Wenn Sie stattdessen LEFT JOIN
verwenden, sehen Sie alle Ereignisse, unabhängig davon, ob ein Nutzer mit ihnen verknüpft ist.
Sie können always_join
verwenden, wenn die Einschränkung von Zeilen wichtig ist
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. Wenn Sie mit type
etwas anderes als LEFT JOIN
definieren, sollte immer ein bestimmter Join (oder eine Gruppe von Joins) Teil der Abfrage sein, damit die resultierenden Zeilen Ihre Join-Einschränkungen enthalten. Verwenden Sie dazu den Parameter always_join
.