Resolução de problemas de um exemplo de utilização avançado de extensões

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 eventsexploraçã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 eventsbase. 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 eventsexploração de baseevents.user_id faz referência a um campo da eventsvistaevents.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.