Utilizzo
join: view_name_2 {
foreign_key: dimension_name
}
}
Gerarchia
foreign_key |
Valore predefinito
NessunaAccetta
Il nome di una dimensione di LookerRegole speciali
|
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
.