Esta página aborda um tópico avançado e pressupõe que o leitor tenha um conhecimento sólido do LookML.
Extends é um recurso útil do LookML que permite manter o código do LookML com DRY (não se repita). No Looker, as análises, visualizações e painéis do LookML podem ser estendidas com o parâmetro extends em um arquivo de modelo, como no exemplo a seguir:
explore: orders {
view_name: orders
join: users {
type: left_outer
sql_on: %{orders.user_id} = ${users.id} ;;
relationship: many_to_one
}
}
explore: transactions {
extends: [orders]
}
Neste exemplo, o parâmetro extends é usado na definição da Análise transactions para estender a Análise orders.
Esta página se refere ao objeto que está sendo estendido como o objeto base, e o objeto que está fazendo a extensão é chamado de extensão.
Este é um processo bastante simples, conforme detalhado na página de documentação Como reutilizar código com extends. No entanto, há alguns casos de uso avançados que podem causar erros de referência do LookML e duplicação indesejada de objetos. Esta página mostra um exemplo de como a extensão de uma Análise com base em uma visualização que estende outra pode resultar em erros de referência do LookML, além de dicas que podem ajudar a eliminar esses problemas.
Caso de uso: estender uma Análise com base em uma visualização
Suponha que você queira estender a Análise events e que a visualização em que a Análise estendida se baseia use campos de uma visualização que estende a visualização events de base. Neste exemplo, a análise events_extended estende a análise extends, conforme mostrado no exemplo de LookML a seguir:
explore: events {
view_name: events
join: users {
type: left_outer
sql_on: ${events.user_id} = ${users.id} ;;
relationship: many_to_one
}
}
explore: events_extended {
extends: [events]
join: orders {
sql_on: ${events_extended.test_id} = ${orders.id} ;;
relationship: many_to_one
}
Neste exemplo, a visualização users é combinada à Análise events de base, e a visualização orders é combinada à Análise events_extended de extensão. No entanto, a mesclagem definida na Análise detalhada events de referência events.user_id, que é um campo da visualização events de referência. Enquanto isso, a mesclagem definida na análise events_extended de extensão faz referência ao campo events_extended.test_id, em que events_extended é o nome de uma visualização de extensão com base na visualização events. O campo test_id referenciado na mesclagem na definição de análise detalhada events_extended é definido na visualização events_extended estendida da seguinte maneira:
include: "events.view.lkml"
view: events_extended {
extends: [events]
dimension: test_id {}
Como a mesclagem definida na análise events_extended faz referência ao nome da visualização estendida, events_extended, o Validador do LookML mostra um erro inaccessible view.
Para resolver esse problema, adicione o parâmetro from ao LookML para a Análise detalhada e defina o valor como o nome da visualização, events_extended. O parâmetro from cria um alias para o nome da tabela original no SQL gerado, como FROM schema.name AS alias.
Este é o único caso de uso recomendado para aplicar o parâmetro from no nível "Explorar".
Para extrair da visualização estendida (events_extended) sem interromper as referências de mesclagem da Análise básica (events), adicione um parâmetro from que seja associado à visualização estendida:
explore: events_extended {
extends: [events]
from: events_extended
join: orders {
relationship: many_to_one
sql_on: ${events.test_id} = ${orders.id} ;;
}
}
Nesse exemplo, a aplicação do from: events_extended do LookML à Análise de dados estendida permite que você continue a referenciar a visualização base (events) na Análise de dados estendida, enquanto redireciona essas referências para extrair da versão estendida dessa visualização (events_extended).
Com o uso do parâmetro from, você pode continuar a fazer referência ao nome da visualização de base events nos prefixos de mesclagem, mas essas referências serão extraídas da visualização estendida events_extended, que contém todos os campos em events, além do novo campo test_id.