Utilizzo
join: view_name_2 { ... }
join: view_name_3 {
required_joins: [
view_name_2
, ...]}
}
Gerarchia
required_joins |
Valore predefinito
NessunaAccetta
Parentesi quadre che contengono un elenco di join separati da virgole per questa esplorazioneRegole speciali
Una vista deve essere aggiunta a un'esplorazione prima di potervi fare riferimento in required_joins
|
Definizione
required_joins
obbliga una o più joins
a essere incluse nell'SQL generato da Looker, anche se l'utente non ha selezionato un campo dalla vista unita. Questo comportamento viene attivato ogni volta che l'utente seleziona un campo da una vista correlata specificata. È possibile richiedere più join utilizzando un elenco separato da virgole come [join_name_a, join_name_b, ...]
.
Quando Looker genera SQL per una query, tenta di creare il codice SQL più pulito possibile e utilizzerà solo i join necessari per i campi selezionati dall'utente. Nell'esempio del diagramma di sintassi nella parte superiore di questa pagina:
- Se un utente scegliesse solo un campo di
view_name_2
, questa sarebbe l'unica visualizzazione collegata all'esplorazione. - Se un utente seleziona un campo da
view_name_3
, il parametrorequired_joins
di quell'unione fa partecipareview_name_2
a Explore.
I casi d'uso principali di required_joins
:
Stile di sintassi precedente con sql_on
sql_on
non ha bisogno di required_joins
quando viene utilizzato con la sintassi ${view_name.looker_dimension_name}
. Tuttavia, alcuni modelli meno recenti utilizzano ancora la sintassi view_name.native_column_name
. Ad esempio:
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]
}
}
-
In questo esempio, ogni volta che un utente seleziona un campo da customer
, anche la vista order
deve essere unita per mantenere la relazione di unione corretta. Se dimentichi di richiedere queste query, potrebbe funzionare anche se l'utente sceglie di utilizzare i campi da tutte le viste richieste. Tuttavia, altre query potrebbero causare la visualizzazione di dati non validi a causa della mancata unione.
Invece di utilizzare required_joins
, valuta la possibilità di modificare il modello per utilizzare la sintassi ${view_name.looker_dimension_name}
.
Necessità o desiderio di scrivere codice SQL non elaborato
In alcuni casi in cui non puoi o non vuoi utilizzare la sintassi di ${view_name.looker_dimension_name}
con sql_on
. In genere questo è dovuto al fatto che vuoi utilizzare i valori non elaborati nel database ed evitare trasmissioni o altre manipolazioni della sintassi ${view_name.looker_dimension_name}
. Ecco un esempio di utilizzo:
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 questo esempio, l'unione pre_sign_up_events
si basa sulle date di user
. Di conseguenza, è importante verificare che user
venga usato utilizzando required_joins
.
Anziché utilizzare required_joins
per evitare di trasmettere contenuti con campi relativi a data o ora, potresti utilizzare il tipo date_raw
ed evitare di utilizzare required_joins
.
Sfide comuni
Una vista deve essere aggiunta a un'esplorazione prima di potervi fare riferimento in required_joins
Per inserire una vista in required_joins
, devi assicurarti che sia collegata alla explore
in cui viene utilizzato required_joins
. Ad esempio, non funzionerà:
explore: order_items {
join: customer {
sql_on: order.customer_id = customer.id ;;
required_joins: [order]
}
}
-
Qui order
non fa parte di order_items
, pertanto non è disponibile per l'utilizzo in required_joins
.