Maximizar a reutilização de código com o DRY LookML: personalizar uma única vista base para vários exemplos de utilização

Imagine que tem muitos utilizadores que partilham uma exploração, mas que têm exemplos de utilização diferentes consoante a respetiva equipa ou região. Cada utilizador quer ver apenas os campos que se aplicam aos seus exemplos de utilização únicos. Para satisfazer as diversas necessidades dos seus utilizadores, pode usar refinamentos do LookML para personalizar as vistas e as explorações existentes sem ter de modificar o LookML original. Em seguida, pode incluir estas vistas refinadas e explorações em ficheiros de modelos separados e dedicados, personalizados de acordo com as diferentes necessidades dos seus utilizadores.

Esta página oferece um exemplo de utilização de refinamentos do LookML para personalizar uma única vista base e criar explorações distintas para duas equipas diferentes na sua empresa. Também inclui exemplos de ocultação e adição de campos em conteúdo refinado.

Ingredientes

Pré-requisitos

Exemplo: criar várias explorações personalizadas a partir da mesma vista base

Suponhamos que tem uma exploração Vendas que contém dados sobre clientes, compras, envio e localização. As equipas de marketing e logística da sua empresa precisam de explorar estes dados, mas cada uma foca-se em campos diferentes no Explore Vendas.

Quer apresentar apenas os campos úteis a cada equipa no selecionador de campos da funcionalidade Explorar para facilitar a exploração. Para tal, pode definir dois refinamentos diferentes da análise detalhada Vendas e da vista sales na qual se baseia. O Explore da equipa de marketing pode mostrar campos relacionados com clientes e tendências de compra, enquanto o Explore da equipa de logística pode mostrar campos relacionados com o envio e a localização. Também pode adicionar novos campos a cada vista refinada que sejam específicos das necessidades de cada equipa.

Atualmente, o selecionador de campos do Explore Vendas apresenta todos os campos da vista Vendas:

A vista Vendas inclui campos para a data de criação, entrega, devolução e envio, bem como o ID, o lucro, o estado, o preço de venda médio e total, e a contagem.

O selecionador de campos também apresenta todos os campos da vista Utilizadores associada:

A vista Utilizadores inclui campos para idade, cidade, país, data de criação, email, nome próprio e apelido, ID, estado, código postal e contagem.

Pode refinar a vista sales para criar duas explorações separadas que contenham apenas os campos de interesse para as equipas de marketing e logística seguindo estes passos:

  1. Crie um novo ficheiro LookML, neste exemplo, um ficheiro denominado base_analysis.lkml, que contenha o LookML para a exploração Vendas, que se baseia na vista sales e na vista users associada. Uma vez que quer usar a salesexploração base e as respetivas vistas para criar uma exploração personalizada para cada equipa, pode definir todos os campos e propriedades partilhados numa única localização, como num único ficheiro.

    
    # 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 ficheiros separados para alojar os refinamentos da análise detalhada Vendas que vai definir para cada equipa. Pode atribuir os nomes marketing_analysis.lkml e logistics_analysis.lkml aos ficheiros. O código LookML, apresentado a seguir, refina a base sales Explore, conforme definido no ficheiro base_analysis.lkml, apresentado anteriormente, para adicionar a etiqueta Sales Analysis for Marketing Team num novo ficheiro denominado marketing_analysis.lkml. A declaração include: "/base/base_analysis.lkml" disponibiliza o conteúdo do ficheiro base_analysis.lkml para referência no ficheiro marketing_analysis.lkml.

    
    # marketing_analysis.lkml
    
    include: "/base/base_analysis.lkml"
    
    explore: +sales {
      label: "Sales Analysis for Marketing Team"
    }
    
    
  3. Crie um ficheiro de modelo separado para cada equipa, como ecommerce_marketing.model e ecommerce_logistics.model. Ao alojar os diferentes refinamentos em modelos dedicados separados para cada equipa, pode refinar o mesmo conjunto de vistas e explorações várias vezes sem substituir as personalizações que fez para o exemplo de utilização de uma equipa. 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 inclua logistics_analysis.lkml no modelo ecommerce_logistics.model.

  5. Adicione refinamentos adicionais aos ficheiros marketing_analysis.lkml e logistics_analysis.lkml, conforme pretendido. Por exemplo, pode ocultar campos desnecessários e adicionar novos campos às análises detalhadas refinadas para cada equipa.

Opcionalmente, pode pedir a um administrador do Looker que configure o acesso ao modelo para cada modelo dedicado, de modo a conceder às equipas específicas acesso ao nível de exploração.

Ocultar campos desnecessários das explorações refinadas

Pode refinar a vista sales da seguinte forma no ficheiro marketing_analysis.lkml para ocultar os grupos de dimensões Devolvido, Enviado, Entregue e Criado, bem como a dimensão Estado, uma vez que esses campos não são usados pela equipa 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, pode usar o seguinte LookML no ficheiro logistics_analysis.lkml para ocultar campos de que a equipa de logística não precisa (como Profit, Sale Price e Average Sale Price):


# 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
  }
}

Uma vez que a equipa de logística não precisa de ver informações pessoais sobre os clientes, como os respetivos nomes, idades ou endereços de email, também pode adicionar um refinamento para a vista users unida no ficheiro logistics_analysis.lkml para ocultar estes campos da funcionalidade Explorar:

  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 explorações refinadas

Também pode criar novos campos que sejam do interesse da equipa de marketing na vista salesrefinada. Por exemplo, pode adicionar campos para Preço de venda médio, Preço de venda total e Gasto médio por utilizador na vista sales refinada:

A vista Vendas apresenta o ID, o lucro, o preço de venda e a quantidade, além dos novos campos Preço de venda médio, Gasto médio por utilizador e Preço de venda total.

Pode usar o seguinte LookML para adicionar estes campos à vista sales refinada no ficheiro 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 exploração de marketing que criou vai conter os novos campos na vista Vendas, além dos campos na vista Utilizadores associada. Os grupos de dimensões Devolvido, Enviado, Entregue e Criado, bem como a dimensão Estado, estão ocultos, uma vez que a equipa de marketing não precisa deles.

Da mesma forma, para a equipa de logística, pode criar novos campos que sejam úteis para esta equipa, como Intervalos de tempo de envio e Tempo médio de envio:

A equipa de logística do Explore apresenta agora os novos intervalos de tempo de envio e os campos de tempo médio de envio, juntamente com outros campos de envio e de localização do utilizador.

Pode usar o seguinte LookML para adicionar estes campos à vista sales refinada no ficheiro 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 exploração de logística que criou vai conter os novos campos na vista Vendas, além dos campos na vista Utilizadores associada. Os campos Lucro, Preço de venda e Preço de venda médio da vista Vendas e os campos Idade, Email, Nome próprio, Apelido e Criado da análise detalhada Utilizadores estão ocultos, uma vez que a equipa de logística não precisa deles.

Cada equipa tem agora uma funcionalidade Explorar mais adaptada às suas necessidades específicas. Embora esta abordagem envolva alguma configuração inicial, ao manter os dados principais num único local, pode facilitar a sua localização e utilização.