required_joins

Utilizzo

explore: view_name_1 {
  join: view_name_2 { ... }
  join: view_name_3 {
    required_joins: [view_name_2, ...]
  }
}
Gerarchia
required_joins
Valore predefinito
Nessuno

Accetta
Parentesi quadre contenenti un elenco separato da virgole di join per questa esplorazione

Regole speciali
Una vista deve essere unita a un'esplorazione prima di poter essere referenziata in required_joins

Definizione

required_joins impone l'inclusione di uno o più joins nell'SQL generato da Looker, anche se l'utente non ha selezionato un campo da quella vista unita. Questo comportamento viene attivato ogni volta che l'utente seleziona un campo da una visualizzazione correlata specificata. Potrebbero essere necessari 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 l'SQL più pulito possibile e utilizza solo i join necessari per i campi selezionati da un utente. Nell'esempio di diagramma della sintassi nella parte superiore di questa pagina:

  • Se un utente ha scelto solo un campo da view_name_2, questa sarà l'unica vista unita all'Explore.
  • Se un utente seleziona un campo da view_name_3, il parametro required_joins del join fa sì che view_name_2 venga unito all'esplorazione.

I casi d'uso principali per required_joins:

Vecchio stile di sintassi con sql_on

sql_on non richiede required_joins quando viene utilizzato con la sintassi ${view_name.looker_dimension_name}. Tuttavia, alcuni modelli precedenti 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, è necessario unire anche la visualizzazione order per mantenere la relazione di unione corretta. Se dimentichi di richiedere queste query, potrebbero comunque funzionare se l'utente sceglie campi da tutte le visualizzazioni richieste. Tuttavia, altre query potrebbero generare dati errati a causa dell'unione errata.

Anziché utilizzare required_joins, valuta la possibilità di modificare il modello in modo che utilizzi la sintassi ${view_name.looker_dimension_name}.

Necessità o desiderio di scrivere SQL non elaborato

In alcuni casi non puoi o non vuoi utilizzare la sintassi ${view_name.looker_dimension_name} con sql_on. In genere, questo accade perché vuoi utilizzare i valori non elaborati nel tuo database ed evitare qualsiasi conversione o altra manipolazione che si verifica con la 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 assicurarsi che user venga unito utilizzando required_joins.

Anziché utilizzare required_joins per evitare il casting con campi di ora o data, valuta la possibilità di utilizzare il tipo date_raw ed evita di utilizzare required_joins.

Sfide comuni

Una vista deve essere unita a un'esplorazione prima di poter essere referenziata in required_joins

Per inserire una vista in required_joins, devi assicurarti che sia unita al explore in cui viene utilizzato required_joins. Ad esempio, questo non funzionerà:

explore: order_items {
  join: customer {
    sql_on: order.customer_id = customer.id ;;
    required_joins: [order]
  }
}

Qui order non è stato unito a order_items, quindi non è disponibile per l'utilizzo in required_joins.