foreign_key

Utilizzo

explore: view_name_1 {
  join: view_name_2 {
    foreign_key: dimension_name
  }
}
Gerarchia
foreign_key
Valore predefinito
Nessuno

Accetta
Un nome di dimensione di Looker

Regole speciali
  • Questo campo prevede un nome dimensione, non un nome colonna della tabella sottostante (anche se a volte sono identici).
  • foreign_key, sql_foreign_key e sql_on non possono essere utilizzati contemporaneamente all'interno dello stesso join
  • Esattamente una delle dimensioni nella visualizzazione unita deve essere definita come chiave primaria della visualizzazione utilizzando il parametro primary_key.

Definizione

foreign_key stabilisce una relazione di join tra una vista e la relativa esplorazione. Looker confronta la dimensione a cui fa riferimento foreign_key con la chiave primaria della vista unita. Imposta la chiave primaria della vista unita attivando primary_key per il campo che funge da chiave primaria.

Una visualizzazione può essere unita direttamente a un'esplorazione quando si utilizza foreign_key oppure può essere unita tramite una seconda visualizzazione già unita all'esplorazione.

Un esempio del primo caso, in cui una vista viene unita direttamente all'Explore, è il seguente:

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

Supponendo che la chiave primaria di customer sia stata denominata id, l'SQL generato da Looker sarà:

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

Nel secondo caso, una vista viene unita a un'esplorazione tramite una vista intermedia già unita a quell'esplorazione. Un esempio potrebbe essere:

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

Qui, customer non può essere unito direttamente a order_items. Deve invece essere unito tramite order. Supponendo che le chiavi primarie di order e customer siano state 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 far funzionare correttamente questa operazione, puoi notare che abbiamo utilizzato il riferimento al campo con ambito completo order.customer_id quando abbiamo unito customer, anziché semplicemente customer_id. Se avessimo utilizzato solo customer_id, Looker avrebbe tentato di 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 primaria di customer a order.customer_id:

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

Unisci la visualizzazione denominata customer all'esplorazione denominata order_items tramite la visualizzazione denominata order. Abbina la chiave primaria di customer a order.customer_id e la chiave primaria di order a 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 la chiave primaria di order a order_items.order_id e la chiave primaria di inventory_item a 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 di dimensione, non il nome della colonna nel database SQL sottostante. Spesso il nome della dimensione e il nome della colonna sono identici, il che può portare alla falsa conclusione che i nomi delle colonne possono essere utilizzati.

È necessario definire una chiave primaria nelle viste unite con foreign_key

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

Poiché è possibile definire una sola dimensione come chiave primaria, non puoi utilizzare foreign_key con le visualizzazioni che hanno una chiave primaria composta da più colonne. In una situazione di questo tipo, dovrai utilizzare sql_on.

Cose da sapere

foreign_key non è l'unico modo per partecipare in Looker

Non è possibile stabilire alcune relazioni di unione con foreign_key. Ad esempio, il join potrebbe non utilizzare la chiave primaria della visualizzazione unita oppure potrebbe richiedere che più condizioni facciano parte del join. In queste situazioni, utilizza invece sql_on.