Esta página aborda um tópico avançado e pressupõe que o leitor tem um conhecimento sólido do LookML.
Extends é uma funcionalidade valiosa do LookML que lhe permite manter o código LookML DRY (não se repita). No Looker, os Explores, as vistas e os painéis de controlo do LookML podem ser expandidos com o parâmetro extends
num ficheiro de modelo, como no exemplo seguinte:
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 funcionalidade transactions
Explorar para estender a funcionalidade orders
Explorar.
Esta página refere-se ao objeto que está a ser estendido como o objeto base e ao objeto que está a fazer a extensão como o objeto de extensão.
A extensão de um objeto LookML é um processo relativamente simples, conforme detalhado na página de documentação Reutilizar código com extends. No entanto, existem alguns exemplos de utilização avançados que podem causar erros de referência do LookML e duplicação de objetos indesejados. Esta página oferece um exemplo de como a extensão de uma exploração baseada numa vista que estende outra vista pode resultar em erros de referência do LookML, bem como sugestões que podem ajudar a eliminar esses problemas.
Exemplo de utilização: expandir uma exploração com base numa vista de expansão
Suponhamos que quer expandir a events
exploração e que quer que a vista na qual a expansão da exploração se baseia use campos de uma vista que expanda a vista de events
base. Neste exemplo, o events_extended
Explore expande o extends
Explore, conforme mostrado no seguinte exemplo de LookML:
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 vista users
está associada à opção Explorar events
base, enquanto a vista orders
está associada à opção Explorar de extensão events_extended
. No entanto, a junção definida na events
exploração de baseevents.user_id
faz referência a um campo da events
vistaevents.user_id
de base. Entretanto, a junção definida na extensão do events_extended
Explorar faz referência ao campo events_extended.test_id
, em que events_extended
é o nome de uma vista de extensão baseada na vista events
. O campo test_id
referenciado na junção na definição do Explore events_extended
é definido na vista de extensão events_extended
da seguinte forma:
include: "events.view.lkml" view: events_extended { extends: [events] dimension: test_id {}
Uma vez que a junção definida na exploração events_extended
faz referência ao nome da vista de extensão, events_extended
, o validador de LookML apresenta um erro inaccessible view
.
Para resolver este problema, pode adicionar o parâmetro from
ao LookML da análise detalhada de extensão e definir o respetivo valor para o nome da vista de extensão, events_extended
. O parâmetro from
atribui um alias ao nome da tabela original no SQL gerado, como FROM schema.name AS alias
.
Este é o único exemplo de utilização recomendado para aplicar o parâmetro from
ao nível da análise detalhada.
Para extrair da vista de extensão (events_extended
) sem interromper as referências de junção da exploração base (events
), pode adicionar um parâmetro from
que seja mapeado para a vista de extensão:
explore: events_extended { extends: [events] from: events_extended join: orders { relationship: many_to_one sql_on: ${events.test_id} = ${orders.id} ;; } }
Neste exemplo, a aplicação do from: events_extended
do LookML ao LookML da análise detalhada de extensão permite-lhe continuar a fazer referência à vista base (events
) na análise detalhada de extensão, ao mesmo tempo que redireciona essas referências para extrair dados da versão de extensão dessa vista (events_extended
).
Com a utilização do parâmetro from
, pode continuar a fazer referência ao nome da visualização base events
nos prefixos de junção, mas estas referências vão ser extraídas da visualização de extensão events_extended
, que contém todos os campos em events
, além do novo campo test_id
.