Utilizzo
sempre_join: [
view_name,
view_name,
...
]
}
Gerarchia
always_join |
Valore predefinito
NessunaAccetta
Parentesi quadre che contengono un elenco di nomi di viste separati da virgoleRegole speciali
Devi entrare in una vista explore prima di utilizzarla in always_join
|
Definizione
always_join
impone una o più join nell'SQL generato da Looker, anche se l'utente non ha selezionato un campo dalla vista unita. È possibile richiedere più join utilizzando un elenco separato da virgole come [view_name_a, view_name_b, etc]
.
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. Utilizzando always_join
, puoi forzare l'esecuzione degli join a prescindere da tutto.
always_join
può essere utile quando un join viene eseguito con il parametro type
e non è un LEFT JOIN
. In una situazione del genere, l'unione potrebbe essere fondamentale per limitare correttamente le righe restituite.
Esempi
Assicurati che member
sia sempre associato a event
, anche se l'utente non sceglie un campo a partire da member
. I risultati saranno limitati solo agli eventi generati dagli abbonati:
explore: event {
always_join: [member]
join: member {
sql_on: ${event.member_id} = ${member.id} ;;
type: inner
}
}
Assicurati che member
e payment
siano sempre associati a event
, anche se l'utente non sceglie un campo da nessuna di queste viste. Questo limita i risultati alla visualizzazione solo degli eventi generati dagli abbonati in cui l'utente ha già pagato:
explore: event {
always_join: [member, payment]
join: member {
sql_on: ${event.member_id} = ${member.id} ;;
type: inner
}
join: payment {
sql_on: ${member.payment_id} = ${payment.id} ;;
type: inner
}
}
Sfide comuni
Una vista deve essere aggiunta a un'esplorazione prima di potervi fare riferimento in always_join
Per inserire una vista in always_join
, assicurati che sia collegata a Esplora in cui viene utilizzato always_join
. Ad esempio, non funzionerà:
explore: event {
always_join: [member]
}
Qui la visualizzazione member
non fa parte di event
, perciò non è disponibile per l'utilizzo in always_join
.
Aspetti da tenere presenti
Se possibile, non applicare la logica di business nelle join
Quando possibile, l'approccio standard di Looker è di utilizzare LEFT JOIN
. Negli esempi precedenti, evitiamo un LEFT JOIN
in modo che la logica di business possa essere applicata all'interno del join stesso. In uno degli esempi abbiamo creato un'esplorazione contenente solo gli eventi associati agli abbonati:
explore: event {
always_join: [member]
join: member {
sql_on: ${event.member_id} = ${member.id} ;;
type: inner
}
}
Il modo migliore per farlo in Looker è utilizzare un LEFT JOIN
per ottenere insieme i dati degli eventi e quelli dei membri:
explore: event {
join: member {
sql_on: ${event.member_id} = ${member.id} ;;
}
}
Quindi, puoi creare una dimensione che puoi impostare su sì o no, in modo da esaminare solo gli eventi dei membri:
dimension: is_member_event {
type: yesno
sql: ${member.id} IS NOT NULL ;;
}
Questo approccio offre agli utenti la flessibilità di guardare tutti gli eventi o solo quelli degli abbonati. Non hai obbligato gli utenti a guardare solo gli eventi dei membri tramite l'abbonamento.