von (für Joins)

Auf dieser Seite wird auf den Parameter from verwiesen, der Teil eines Join ist.

from kann auch als Teil eines Explores verwendet werden. Dies wird auf der Dokumentationsseite zum Parameter from (für Explores) beschrieben.

Nutzung


explore: view_name {
  join: join_name {
    from: view_name_2
  }
}
Hierarchie
from
Standardwert
Eine Ansicht, deren Name mit dem Namen des Joins übereinstimmt

Akzeptiert
Der Name einer vorhandenen Ansicht

Definition

from gibt die view an, die in einem Join verwendet werden soll. Wenn from nicht angegeben ist, geht Looker davon aus, dass der zugrunde liegende Ansichtsname mit dem Join-Namen übereinstimmt.

Normalerweise wird from nur verwendet, wenn Sie möchten, dass der Join und seine Felder einen anderen Namen als die zugrunde liegende Ansicht haben. Zur Veranschaulichung sehen Sie sich ein Beispiel an, in dem in einer Ansicht mit dem Namen underlying_view eine Dimension mit dem Namen order_value erstellt wurde:

  • Dieses Feld würde in der Explore-Benutzeroberfläche in der Regel als UNDERLYING VIEW Order Value angezeigt und in LookML mit ${underlying_view.order_value} referenziert.
  • Wenn das LookML im Abschnitt „Verwendung“ auf dieses Beispiel angewendet würde, würde das Feld stattdessen als NEUER ALIASNAME „Order Value“ angezeigt und als ${new_alias_name.order_value} referenziert.

Diese Technik ist besonders nützlich, wenn dieselbe Ansicht auf verschiedene Arten mit einem Explore verknüpft werden muss.

Beispiele

Verbinden Sie die Ansicht person mit dem Explore order, nennen Sie sie aber customer:

explore: order {
  join: customer {
    from: person
    sql_on: ${order.customer_id} = ${customer.id} ;;
  }
}

Verknüpfen Sie die Ansicht person zweimal mit dem Explore order: einmal als customer und einmal als representative:

explore: order {
  join: customer {
    from: person
    sql_on: ${order.customer_id} = ${customer.id} ;;
  }
  join: representative {
    from: person
    sql_on: ${order.representative_id} = ${representative.id} ;;
  }
}

Wichtige Punkte

from ändert die Art und Weise, wie in einem Explore auf Felder verwiesen wird.

Wie bereits erwähnt, hat die Verwendung von from wichtige Auswirkungen auf die Art und Weise, wie auf Felder verwiesen wird. Dies kann zu Problemen führen, wenn ein view an vielen verschiedenen Stellen verwendet wird. Betrachten Sie dieses Beispiel:

explore: order {
  join: customer {
    from: person
    sql_on: ${order.customer_id} = ${customer.id} ;;
  }
}

Hier wird person mit order verknüpft, aber customer genannt. Wenn Sie also in order auf ein Feld aus customer verweisen möchten, verwenden Sie ${customer.field_name}. Wenn Sie in einem zweiten Explore person noch einmal mit order verknüpfen, sie aber nicht in customer umbenennen, funktioniert der ${customer.field_name}-Verweis in diesem zweiten Explore nicht. Die allgemeine Vorgehensweise bei diesem Problem besteht darin, das problematische Feld mit fields aus dem zweiten Explore auszuschließen. Dies würde in etwa so aussehen:

explore: the_second_explore {
  fields: [ALL_FIELDS*, -person.problem_field]
  join: person {
    sql_on: ${the_second_explore.some_field} = ${person.some_field} ;;
  }
}

from wird am häufigsten verwendet, um dieselbe Tabelle mehrmals mit einem Explore zu verknüpfen.

Wenn eine einzelne Tabelle verschiedene Arten von Entitäten enthält, kann eine Ansicht mehr als einmal mit einem Explore verknüpft werden. Angenommen, Sie haben einen order-Explore und müssen ihn zweimal mit einer person-Ansicht verknüpfen – einmal für den Kunden und einmal für den Kundenservicemitarbeiter. Das könnte dann folgendermaßen aussehen:

explore: order {
  join: customer {
    from: person
    sql_on: ${order.customer_id} = ${customer.id} ;;
  }
  join: representative {
    from: person
    sql_on: ${order.representative_id} = ${representative.id} ;;
  }
}

Der SQL-Code, den Looker aus diesem LookML-Code generieren würde, lautet:

SELECT    ...
FROM      order
LEFT JOIN person AS customer
ON        customer.id = order.customer_id
LEFT JOIN person AS representative
ON        representative.id = order.representative_id