sempre_join

Utilizzo

Explore: Explore_name {
sempre_join: [
view_name,
view_name,

...
]
}
Gerarchia
always_join
Valore predefinito
Nessuna

Accetta
Parentesi quadre che contengono un elenco di nomi di viste separati da virgole

Regole 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.