foreign_key

Uso

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

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 no mesmo join.
  • Exatamente uma das dimensões na visualização mesclada precisa ser definida como a chave primária da visualização usando o parâmetro primary_key.

Definição

foreign_key estabelece uma relação de junção entre uma visualização e a Análise dela. O Looker corresponde à dimensão referenciada por foreign_key com a chave primária da visualização unida. Para definir a chave primária da visualização unida, ative primary_key no campo que serve como chave primária.

Uma visualização pode ser combinada diretamente com uma Análise ao usar foreign_key ou por uma segunda visualização que já está combinada com essa Análise.

Um exemplo do primeiro caso, em que uma visualização é unida diretamente à análise detalhada, tem esta aparência:

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

Supondo que a chave primária de customer tenha sido chamada de 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 é unida a uma Análise por uma visualização intermediária que já está unida a essa Análise. Por exemplo:

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

Aqui, customer não pode ser unido diretamente a order_items. Em vez disso, ele precisa ser unido por order. Supondo que as chaves primárias de order e customer tenham sido chamadas de 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, usamos a referência de campo totalmente qualificada order.customer_id ao unir customer, em vez de apenas customer_id. Se tivéssemos usado apenas customer_id, o Looker teria tentado unir customer diretamente a order_items.customer_id em vez de usar order.customer_id.

Exemplos

Faça a junção da visualização chamada customer à análise detalhada chamada order combinando a chave primária de customer com order.customer_id:

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

Faça a junção da visualização chamada customer à Análise chamada order_items usando a visualização order. Faça a correspondência da chave primária de customer com order.customer_id e da chave primária de order com order_items.order_id:

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

Junte as visualizações chamadas order e inventory_item à Análise chamada order_items. Faça a correspondência da chave primária de order com order_items.order_id e da chave primária de 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 usa apenas um nome de dimensão, não o nome da coluna no banco de dados SQL subjacente. Muitas vezes, o nome da dimensão e o nome da coluna são idênticos, o que pode levar à conclusão errada de que os nomes das colunas podem ser usados.

Uma chave primária precisa ser definida nas visualizações unidas com foreign_key

Para que foreign_key funcione corretamente, uma das dimensões na visualização unida 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 têm uma chave primária de várias colunas. Nesse caso, use sql_on.

Informações importantes

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

Não é possível estabelecer algumas relações de junção com foreign_key. Por exemplo, a junção pode não usar a chave primária da visualização unida ou exigir que várias condições façam parte dela. Nesses casos, use sql_on.