chiave_straniera

Utilizzo

esplora: view_name_1 {
join: view_name_2 {
foreign_key: dimension_name
}
}
Gerarchia
foreign_key
Valore predefinito
Nessuna

Accetta
Il nome di una dimensione di Looker

Regole speciali
  • Questo campo richiede un nome di dimensione, non un nome di colonna dalla tabella sottostante (anche se a volte sono identici)
  • foreign_key, sql_foreign_key e sql_on non possono essere utilizzate contemporaneamente nello stesso join
  • Esattamente una delle dimensioni nella vista unita deve essere definita come chiave principale della vista utilizzando il parametro primary_key

Definizione

foreign_key stabilisce una relazione di join tra una visualizzazione e la relativa esplorazione. Looker associa la dimensione indicata da foreign_key con la chiave principale della vista unita. Per impostare la chiave primaria della vista combinata, attiva primary_key per il campo che utilizza come chiave principale.

Una visualizzazione può essere aggiunta direttamente a un'esplorazione quando viene utilizzato foreign_key oppure può essere collegata a una seconda visualizzazione già collegata a quell'esplorazione.

Un esempio del primo caso in cui una visualizzazione viene aggiunta direttamente all'esplorazione ha il seguente aspetto:

explore: order {
  join: customer {
    foreign_key: customer_id
  }
}

Presumendo che la chiave principale di customer sia stata denominata id, l'SQL generato da Looker sarebbe:

SELECT    ...
FROM      order
LEFT JOIN customer
ON        order.customer_id = customer.id

Nel secondo caso, una vista viene collegata a un Explore attraverso una vista intermedia già associata a quell'esplorazione. Esempio:

explore: order_items {
  join: order {
    foreign_key: order_id
  }
  join: customer {
    foreign_key: order.customer_id
  }
}

In questo caso, customer non può essere aggiunto direttamente a order_items. Deve partecipare invece tramite order. Presumendo che le chiavi primarie di order e customer fossero denominate id, l'SQL generato da Looker sarebbe:

SELECT    ...
FROM      order_items
LEFT JOIN order
ON        order_items.order_id = order.id
LEFT JOIN customer
ON        order.customer_id = customer.id

Per garantirne il corretto funzionamento, puoi utilizzare il riferimento a campi completi order.customer_id durante l'unione a customer, anziché semplicemente customer_id. Se avessimo utilizzato solo customer_id, Looker avrebbe provato a unire customer direttamente a order_items.customer_id anziché tramite order.customer_id.

Esempi

Unisci la vista denominata customer all'esplorazione denominata order abbinando la chiave principale di customer a order.customer_id:

explore: order {
  join: customer {
    foreign_key: customer_id
  }
}

Partecipa alla vista denominata customer per esplorare il nome order_items attraverso la vista chiamata order. Abbina il token principale di customer con order.customer_id e quello di order con order_items.order_id:

explore: order_items {
  join: order {
    foreign_key: order_id
  }
  join: customer {
    foreign_key: order.customer_id
  }
}

Unisci le viste denominate order e inventory_item all'esplorazione denominata order_items. Abbina il token principale di order con order_items.order_id e quello di inventory_item con order_items.inventory_id:

explore: order_items {
  join: order {
    foreign_key: order_id
  }
  join: inventory_item {
    foreign_key: inventory_id
  }
}

Sfide comuni

foreign_key deve fare riferimento a un nome di dimensione, non a un nome di colonna

Il parametro foreign_key accetta solo un nome per la dimensione, non il nome della colonna nel database SQL sottostante. Spesso il nome della dimensione e quello della colonna sono identici, il che può portare alla falsa conclusione che possono essere utilizzati.

È necessario definire una chiave primaria nelle viste unite con foreign_key

Affinché foreign_key funzioni correttamente, una delle dimensioni nella vista congiunta deve essere definita come chiave principale di tale vista. Una chiave primaria viene definita tramite il parametro primary_key.

Poiché è possibile definire una sola dimensione come chiave principale, non puoi utilizzare foreign_key con viste che hanno una chiave primaria a più colonne. In una situazione del genere, dovrai utilizzare sql_on.

Aspetti da tenere presenti

foreign_key non è l'unico modo per partecipare a Looker

Impossibile stabilire alcune relazioni di unione con foreign_key. Ad esempio, è possibile che l'unione non utilizzi la chiave primaria della vista unita oppure potrebbe richiedere l'utilizzo di più condizioni. In questi casi, utilizza invece sql_on.