Maximizar a reutilização de código com o DRY LookML: definir listas de campos reutilizáveis com o parâmetro set

Uma forma de tornar os seus projetos do LookML mais eficientes e fáceis de manter é com o parâmetro set do LookML. O parâmetro set permite agrupar campos que podem ser repetidos frequentemente ao longo do seu projeto no parâmetro fields ou nos campos de detalhe. Se usar um conjunto para agrupar campos repetidos, cria um único local no modelo onde esse grupo de campos pode ser mantido.

Esta página inclui os seguintes exemplos de utilização de conjuntos do LookML para tornar os seus projetos do LookML mais eficientes e fáceis de manter:

Ingredientes

Pré-requisitos

Exemplo: adicionar os mesmos campos de detalhe a várias medidas

Suponhamos que quer que os utilizadores possam analisar detalhadamente os dados para ver detalhes mais específicos dos utilizadores sempre que virem métricas de vendas em Explorações, Looks ou painéis de controlo. Assim, quando selecionarem um valor para a medida Contagem na IU de exploração, é aberta uma consulta nos campos ID, Cidade, Estado e País:

Selecionar um valor para a medida Count abre uma consulta nos campos ID, Cidade, Distrito e País.

Pode criar um conjunto denominado user_details que inclua os campos id, city, state e country e, em seguida, referenciá-los em várias métricas para os seus utilizadores explorarem detalhadamente:


set: user_details {
  fields: [id, city, state, country]
}

O conjunto user_details pode ser usado para definir um campo de detalhe para a medida count:


measure: count {
  type: count
  drill_fields: [user_details*]
}

Neste exemplo, a sintaxe [set_name*] é usada para especificar que os campos no user_details vão aparecer nos resultados da consulta quando detalhar a medida Count.

Em seguida, pode reutilizar este conjunto para criar campos de detalhe adicionais. Por exemplo, pode adicionar o código LookML drill_fields: [user_details*] às medidas order_count, total_sale_price e average_sale_price:


measure: order_count {
  view_label: "Orders"
  type: count_distinct
  description: "Number of orders"
  sql: ${order_id} ;;
  drill_fields: [user_details*]

}

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

measure: average_sale_price {
  type: average
  value_format_name: usd
  sql: ${sale_price} ;;
  drill_fields: [user_details*]
}

Tal como acontece com a medida Count, quando um utilizador seleciona um valor para Order Count, Total Sale Price ou Average Sale Price na IU de exploração, o Looker abre uma janela que contém uma consulta nos campos ID, City, State e Country.

Se quiser alterar algo nos campos de detalhe, como adicionar ou remover um campo, só tem de atualizar o conjunto user_details.

Também pode fazer referência a um conjunto no parâmetro drill_fields de uma vista para definir campos de detalhe para todas as medidas nessa vista que ainda não tenham campos de detalhe especificados ao nível do campo.

Exemplo: incluir ou omitir um conjunto de campos de uma exploração

Suponhamos que quer simplificar o seletor de campos da funcionalidade Explorar para os utilizadores excluindo campos que não são essenciais para esses utilizadores.

Por exemplo, suponhamos que tem uma usersvista que contém informações sobre os seus clientes, incluindo campos para ID, Nome, Apelido, Email e Idade, bem como campos de localização, como Cidade, Estado, País e Código postal. A vista users está associada ao Explorar orders:

O seletor de campos da vista Encomendas inclui todos os campos da vista Encomendas e utilizadores, incluindo os campos que quer omitir.

E se quiser excluir os campos Nome, Apelido, Email, Idade e Género da funcionalidade Explorar para os seus utilizadores? Pode criar um conjunto denominado user_info que liste os campos que quer excluir da análise detalhada Encomendas:

A análise detalhada Encomendas sem dados do utilizador exclui os campos Nome próprio, Apelido, Email, Idade e Género do selecionador de campos da análise detalhada.

O LookML para o conjunto user_info teria o seguinte aspeto:


set: user_info {
  fields: [first_name, last_name, email, age, gender]
}

Para definir uma exploração Encomendas com a etiqueta Encomendas sem dados do utilizador, associe a vista users à exploração orders. Adicione o código LookML fields: [ALL_FIELDS*, -users.user_info*] à exploração orders para incluir todos os campos, exceto os campos no conjunto user_info da vista users:


explore: orders {
  fields: [ALL_FIELDS*, -users.user_info*]
  label: "Orders Without User Data"
  join: users {
    type: left_outer
    sql_on: ${orders.user_id} = ${users.id} ;;
    relationship: many_to_one
  }
}

Uma vez que o conjunto user_details está excluído da exploração com a sintaxe -users.user_details* no parâmetro fields da orders exploração, a vista Encomendas na exploração Encomendas sem dados do utilizador omite os campos listados no conjunto users_user.info do selecionador de campos da exploração.

Pode reutilizar o conjunto user_info para omitir estes campos da IU de exploração para quaisquer outras explorações às quais a visualização de propriedade users esteja associada. Se quiser alterar algo no conjunto user_info, como adicionar ou remover um campo, só tem de atualizar o conjunto user_info.