Solução de problemas de um exemplo de caso de uso de extensão avançada

Esta página aborda um tópico avançado e pressupõe um conhecimento sólido de LookML por parte do leitor.

Extends são um recurso valioso do LookML que permite manter o código LookML DRY (não se repita). No Looker, Análises, visualizações e painéis do LookerML podem ser estendidos 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 faz a extensão é chamado de objeto estendendo.

Estender um objeto LookML é um processo bastante simples, conforme detalhado na página de documentação Como reutilizar códigos com extensões. No entanto, há alguns casos de uso avançados que podem causar erros de referência do LookML e duplicação indesejada de objetos. Nesta página, mostramos um exemplo de como a extensão de uma Análise com base em uma visualização que estende outra visualização pode resultar em erros de referência do LookML, além de dicas que podem ajudar a eliminar esses problemas.

Caso de uso: ampliar um Explore com base em uma visualização estendida

Suponha que você queira estender a Análise events e que a visualização em que a Análise se baseia use campos de uma visualização que estenda a visualização de base events. Neste exemplo, a Análise events_extended estende a Análise extends, conforme mostrado no exemplo do 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
  }

Nesse exemplo, a visualização users é unida à exploração events base, enquanto a visualização orders é unida à Explore, events_extended. No entanto, a mesclagem definida na Análise de base events referencia events.user_id, que é um campo da visualização events de base. Enquanto isso, a mesclagem definida na Análise de extensão events_extended faz referência ao campo events_extended.test_id, em que events_extended é o nome de uma visualização ampliada com base na visualização events. O campo test_id referenciado na mesclagem na definição do Explore 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 LookerML exibe um erro inaccessible view.

Para resolver isso, adicione o parâmetro from ao LookML do Explore e defina o valor como o nome da visualização estendida, events_extended. O parâmetro from tem como alias o nome da tabela original no SQL gerado, como FROM schema.name AS alias.

Esse é o único caso de uso recomendado para aplicar o parâmetro from no nível da Análise.

Para extrair da visualização estendida (events_extended) sem corromper as referências de mesclagem do Explore base (events), adicione um parâmetro from que é mapeado para a visualização estendida:

explore: events_extended {
  extends: [events]
  from: events_extended
  join: orders {
    relationship: many_to_one
    sql_on: ${events.test_id} = ${orders.id} ;;
  }
}

Neste exemplo, ao aplicar o from: events_extended do LookML ao LookML para a exploração estendida, é possível continuar referenciando a visualização base (events) na Análise estendida, redirecionando essas referências para extrair da versão estendida dessa visualização (events_extended).

Com o uso do parâmetro from, é possível continuar referenciando o nome de visualização base events nos prefixos de mesclagem, mas essas referências vão ser extraídas da visualização estendida events_extended, que contém todos os campos em events, além do novo campo test_id.