Maximizar a reutilização de código com o LookML DRY: personalizar uma única visualização de base para vários casos de uso

Imagine que você tem muitos usuários que compartilham uma Análise, mas têm casos de uso diferentes, dependendo da equipe ou da região. Cada usuário quer ver apenas os campos que se aplicam aos casos de uso dele. Para atender às diversas necessidades dos usuários, use os aprimoramentos do LookML e personalize as visualizações e análises existentes sem precisar modificar o LookML original. Em seguida, inclua essas visualizações e análises detalhadas em arquivos de modelo separados e dedicados, personalizados para as diferentes necessidades dos usuários.

Esta página mostra um exemplo de como usar os refinamentos do LookML para personalizar uma única visualização de base e criar análises distintas para duas equipes diferentes da sua empresa. Também inclui exemplos de ocultação e adição de campos no conteúdo refinado.

Ingredientes

Pré-requisitos

Exemplo: criar várias análises detalhadas personalizadas com base na mesma visualização

Suponha que você tenha uma análise detalhada de Vendas que contém dados sobre clientes, compras, frete e local. As equipes de marketing e logística da sua empresa precisam analisar esses dados, mas cada uma delas se concentra em campos diferentes na Análise detalhada de Vendas.

Você quer mostrar apenas os campos que são úteis para cada equipe no seletor de campos do recurso "Analisar" para facilitar a análise. Para isso, você pode definir dois refinamentos diferentes da Análise detalhada Vendas e da visualização sales em que ela se baseia. A Análise da equipe de marketing pode mostrar campos relacionados a clientes e tendências de compra, enquanto a Análise da equipe de logística pode mostrar campos relacionados a frete e local. Também é possível adicionar novos campos a cada visualização refinada que sejam específicos para as necessidades de cada equipe.

No momento, o seletor de campos para a análise detalhada Vendas mostra todos os campos da visualização Vendas:

A visualização "Vendas" inclui campos para datas de criação, entrega, devolução e envio, além de ID, lucro, status, preço médio e total da venda e contagem.

O seletor de campos também mostra todos os campos da visualização Usuários mesclada:

A visualização "Usuários" inclui campos para idade, cidade, país, data de criação, e-mail, nome e sobrenome, ID, estado, CEP e contagem.

Para refinar a visualização sales e criar duas análises detalhadas separadas que contêm apenas os campos de interesse das equipes de marketing e logística, siga estas etapas:

  1. Crie um novo arquivo LookML, neste exemplo um arquivo chamado base_analysis.lkml, que contém o LookML para a análise detalhada Vendas, que é baseada na visualização sales e na visualização combinada users. Como você quer usar a análise detalhada sales básica e as visualizações correspondentes para criar uma análise detalhada personalizada para cada equipe, é possível definir todos os campos e propriedades compartilhados em um único local, como em um único arquivo.

    
    # base_analysis.lkml
    
    include: "views/sales.view.lkml"
    include: "views/inventory_items.view.lkml"
    include: "views/users.view.lkml"
    
    explore: sales {
      join: inventory_items {
        type: left_outer
        sql_on: ${sales.inventory_item_id} = ${inventory_items.id} ;;
        relationship: many_to_one
      }
    
      join: users {
        type: left_outer
        sql_on: ${sales.user_id} = ${users.id} ;;
        relationship: many_to_one
      }
    }
    
  2. Crie dois arquivos separados para armazenar os refinamentos da Análise Vendas que você vai definir para cada equipe. Você pode nomear os arquivos como marketing_analysis.lkml e logistics_analysis.lkml. O código do LookML, mostrado a seguir, refina a análise sales de base, conforme definida no arquivo base_analysis.lkml mostrado anteriormente, para adicionar o rótulo Análise de vendas para a equipe de marketing em um novo arquivo chamado marketing_analysis.lkml. A instrução include: "/base/base_analysis.lkml" disponibiliza o conteúdo do arquivo base_analysis.lkml para referência no arquivo marketing_analysis.lkml.

    
    # marketing_analysis.lkml
    
    include: "/base/base_analysis.lkml"
    
    explore: +sales {
      label: "Sales Analysis for Marketing Team"
    }
    
    
  3. Crie um arquivo de modelo separado para cada equipe, como ecommerce_marketing.model e ecommerce_logistics.model. Ao armazenar os diferentes refinamentos em modelos dedicados separados para cada equipe, é possível refinar o mesmo conjunto de visualizações e análises detalhadas várias vezes sem substituir as personalizações feitas para um caso de uso da equipe. Consulte a página de documentação Refinamentos do LookML para mais informações.

  4. Com o parâmetro include, inclua marketing_analysis.lkml no modelo ecommerce_marketing.model e logistics_analysis.lkml no modelo ecommerce_logistics.model.

  5. Adicione outros refinamentos aos arquivos marketing_analysis.lkml e logistics_analysis.lkml conforme necessário. Por exemplo, é possível ocultar campos desnecessários e adicionar novos campos às Análises detalhadas refinadas de cada equipe.

Se quiser, um administrador do Looker pode configurar o acesso ao modelo para cada modelo dedicado e fornecer acesso ao nível da Análise a equipes específicas.

Ocultar campos desnecessários das análises detalhadas

Você pode refinar a visualização sales conforme mostrado a seguir no arquivo marketing_analysis.lkml para ocultar os grupos de dimensões Devolvido, Enviado, Entregue e Criado, bem como a dimensão Status, já que esses campos não são usados pela equipe de marketing:


# marketing_analysis.lkml

include: "/base/base_analysis.lkml"

explore: +sales {
  label: "Sales Analysis for Marketing Team"
}

view: +sales
  dimension_group: returned {
    hidden: yes
  }

  dimension_group: shipped {
    hidden: yes
  }

  dimension_group: delivered {
    hidden: yes
  }

  dimension_group: created {
    hidden: yes
  }

  dimension: status {
    hidden: yes
  }
}

Da mesma forma, você pode usar o seguinte LookML no arquivo logistics_analysis.lkml para ocultar campos que a equipe de logística não precisa, como Lucro, Preço de venda e Preço de venda médio:


# logistics_analysis.lkml

include: "/base/base_analysis.lkml"

explore: +sales {
  label: "Sales Analysis for Logistics Team"
}

view: +sales {
  dimension: profit {
    hidden: yes
  }

  dimension: sale_price {
    hidden: yes
  }

  measure: average_sale_price {
    hidden: yes
  }
}

Como a equipe de logística não precisa acessar informações pessoais dos clientes, como nomes, idades ou endereços de e-mail, você também pode adicionar um refinamento para a visualização users combinada no arquivo logistics_analysis.lkml para ocultar esses campos da Análise detalhada:

  view: +users {
    dimension: age {
    hidden: yes
  }

  dimension: email {
    hidden: yes
  }

  dimension: first_name {
    hidden: yes
  }

  dimension: last_name {
    hidden: yes
  }

  dimension_group: created {
    hidden: yes
  }
}

Adicionar novos campos às análises detalhadas refinadas

Também é possível criar novos campos que sejam de interesse para a equipe de marketing na visualização sales refinada. Por exemplo, você pode adicionar campos para Preço médio de venda, Preço total de venda e Gasto médio por usuário na visualização sales refinada:

A visualização "Vendas" lista o ID, o lucro, o preço de venda e a contagem, além dos novos campos "Preço de venda médio", "Gasto médio por usuário" e "Preço de venda total".

Use o seguinte LookML para adicionar esses campos à visualização sales refinada no arquivo marketing_analysis.lkml:


# marketing_analysis.lkml

view: +sales {
  measure: average_sale_price {
    type: average
    value_format_name: usd
    sql: ${sale_price} ;;
    drill_fields: [detail*]
  }

  measure: total_sale_price {
    type: sum
    value_format_name: usd
    sql: ${sale_price} ;;
    drill_fields: [detail*]
  }

  measure: average_spend_per_user {
    type: number
    value_format_name: usd
    sql: 1.0 * ${total_sale_price} / NULLIF(${users.count},0) ;;
    drill_fields: [detail*]
  }
}

A Análise detalhada de marketing que você criou vai conter os novos campos na visualização Vendas, além dos campos na visualização Usuários mesclada. Os grupos de dimensão Devolvidos, Enviados, Entregues e Criados e a dimensão Status estão ocultas, porque a equipe de marketing não precisa delas.

Da mesma forma, para a equipe de logística, você pode criar novos campos que serão úteis, como Intervalos de tempo de frete e Tempo médio de frete:

A Análise da equipe de logística agora lista os novos campos de Intervalos de tempo de envio e Tempo médio de envio, além de outros campos de local de envio e do usuário.

Use o seguinte LookML para adicionar esses campos à visualização sales refinada no arquivo logistics_analysis.lkml:


# logistics_analysis.lkml

view: +sales {
  dimension: shipping_time_buckets {
    case: {
      when: {
        sql: ${shipping_time} <= 7 ;;
        label: "One Week"
      }
      when: {
        sql: ${shipping_time} > 7 AND ${shipping_time} <= 14 ;;
        label: "Two Weeks"
      }
      when: {
        sql:  ${shipping_time} > 14 ;;
        label: "Over Two Weeks"
      }
      else: "Note Shipped"
    }
  }

  measure: average_shipping_time {
    type: average
    value_format_name: decimal_4
    sql: ${shipping_time} ;;
  }
}

A Análise de logística que você criou vai conter os novos campos na visualização Vendas, além dos campos na visualização Usuários mesclada. Os campos Lucro, Preço de venda e Preço de venda médio da visualização Vendas e os campos Idade, E-mail, Nome, Sobrenome e Criado da análise detalhada Usuários estão ocultos, porque a equipe de logística não precisa deles.

Agora, cada equipe tem uma seção "Explorar" mais personalizada para as necessidades específicas. Embora essa abordagem exija um pouco mais de configuração inicial, ao manter os dados principais em um só lugar, fica mais fácil encontrá-los e usá-los.