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

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

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 detalhadas, as visualizações e os painéis do LookML 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 está fazendo a extensão é referido como o objeto extending.

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

Caso de uso: estender uma Análise com base em uma visualização estendida

Suponha que você queira estender a Análise events e queira a visualização em que ela se baseia para usar campos de uma visualização que estende a events básica. Neste exemplo, a Análise events_extended estende a extends, como mostrado no LookML de exemplo 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 à Análise básica events, enquanto a visualização orders é unida à Análise estendida, events_extended. No entanto, a junção definida na Análise básica events faz referência a events.user_id, que é um campo da visualização events básica. 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 isso, adicione o parâmetro from ao LookML para a Análise estendida e defina o valor dele como o nome da visualização estendida, events_extended. O parâmetro from cria um alias para 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 quebrar as referências de mesclagem da Análise básica (events), você pode adicionar um parâmetro from que mapeia 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, aplicar o from: events_extended do LookML ao LookML para a extensão de uma Análise permite que você continue 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 da visualização de 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.