chave_ estrangeira

Uso

explore: view_name_1 {
join: view_name_2 {
foreign_key: dimension_name
}
}
Hierarquia
foreign_key
Valor padrão
Nenhuma

Aceita
Um nome de dimensão do Looker

Regras especiais
  • Esse campo espera um nome de dimensão, não um nome de coluna da tabela subjacente, embora às vezes sejam idênticos.
  • foreign_key, sql_foreign_key e sql_on não podem ser usados ao mesmo tempo dentro do mesmo join
  • Exatamente uma das dimensões na visualização mesclada precisa ser definida como a chave primária usando o parâmetro primary_key

Definição

O foreign_key estabelece uma relação de mesclagem entre uma visualização e o respectivo Explore. O Looker faz a correspondência da dimensão referenciada por foreign_key com a chave primária da visualização mesclada. Para definir a chave primária da visualização mesclada, ative primary_key no campo que serve como chave primária.

Uma visualização pode ser mesclada diretamente a uma exploração ao usar foreign_key ou pode ser mesclada com uma segunda visualização que já esteja associada a ela.

Veja um exemplo do primeiro caso em que uma visualização é mesclada diretamente ao recurso Explorar:

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

Supondo que a chave primária de customer foi denominada id, o SQL gerado pelo Looker seria:

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

No segundo caso, uma visualização é mesclada a uma exploração por uma visualização intermediária que já está associada a ela. Veja um exemplo:

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

Aqui, customer não pode ser vinculado diretamente a order_items. Em vez disso, ele precisa ser mesclado por order. Supondo que as chaves primárias de order e customer foram chamadas id, o SQL gerado pelo Looker seria:

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

Para que isso funcione corretamente, é possível ver que usamos a referência de campo com escopo completo order.customer_id ao mesclar customer, em vez de apenas customer_id. Se tivéssemos usado apenas customer_id, o Looker tentaria vincular customer diretamente a order_items.customer_id em vez de order.customer_id.

Examples

Junte a visualização chamada customer ao Explorar chamado order, associando a chave primária de customer ao order.customer_id:

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

Mescle a visualização customer ao Explorar chamado order_items pela visualização chamada order. Combine a chave primária do customer com o order.customer_id e a chave primária do order com order_items.order_id:

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

Mescle as visualizações order e inventory_item ao order_items. Combine a chave primária do order com o order_items.order_id e a chave primária do inventory_item com order_items.inventory_id:

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

Desafios comuns

foreign_key precisa fazer referência a um nome de dimensão, não a um nome de coluna

O parâmetro foreign_key só recebe um nome de dimensão, não o nome da coluna no banco de dados SQL subjacente. Muitas vezes, os nomes da coluna e da dimensão são idênticos, o que pode levar à conclusão de que se pode usar nomes de colunas.

Uma chave primária precisa ser definida em visualizações mescladas com foreign_key.

Para que foreign_key funcione corretamente, uma das dimensões na visualização mesclada precisa ser definida como a chave primária dessa visualização. Uma chave primária é definida pelo parâmetro primary_key.

Como apenas uma dimensão pode ser definida como chave primária, não é possível usar foreign_key com visualizações que tenham uma chave primária de várias colunas. Nesse caso, você precisará usar o sql_on.

Informações úteis

foreign_key não é a única maneira de participar do Looker

Algumas relações de mesclagem não podem ser estabelecidas com foreign_key. Por exemplo, a mesclagem pode não usar a chave primária da visualização mesclada ou pode exigir que várias condições façam parte da mesclagem. Nessas situações, use sql_on.