required_join

Utilizzo

esplora: view_name_1 {
join: view_name_2 { ... }
join: view_name_3 {
required_joins: [view_name_2, ...]
}
}
Gerarchia
required_joins
Valore predefinito
Nessuna

Accetta
Parentesi quadre che contengono un elenco di join separati da virgole per questa esplorazione

Regole 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 parametro required_joins di quell'unione fa partecipare view_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.