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

Uma maneira de tornar 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 com frequência no projeto dentro do parâmetro fields ou em campos de detalhamento. Se você usar um conjunto para agrupar campos repetidos, vai criar um único lugar no modelo em que esse grupo de campos pode ser mantido.

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

Componentes

Pré-requisitos

Exemplo: adicionar os mesmos campos de detalhamento a várias métricas

Suponha que você queira que seus usuários possam detalhar para ver detalhes mais granulares do usuário sempre que virem métricas de vendas em análises detalhadas, Looks ou painéis. Assim, selecionar um valor para a métrica Contagem na interface do usuário de análise detalhada abre uma consulta nos campos ID, Cidade, Estado e País:

Ao selecionar um valor para a métrica "Contagem", uma consulta é aberta nos campos "ID", "Cidade", "Estado" e "País".

Você pode criar um conjunto chamado user_details que inclui os campos id, city, state e country e, em seguida, referenciá-los em várias métricas para que os usuários possam detalhar:


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

O conjunto user_details pode ser usado para definir um campo de detalhamento para a métrica count:


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

Neste exemplo, a sintaxe [set_name*] é usada para especificar que os campos em user_details vão aparecer nos resultados da consulta quando você detalhar a métrica Contagem.

Em seguida, você pode reutilizar esse conjunto para criar outros campos de detalhamento. Por exemplo, você pode adicionar o código do 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*]
}

Assim como acontece com a métrica Contagem, quando um usuário seleciona um valor para Contagem de pedidos, Preço total de venda ou Preço médio de venda na interface de análise detalhada, o Looker abre uma janela com uma consulta nos campos ID, Cidade, Estado e País.

Se você quiser mudar algo nos campos de detalhamento, como adicionar ou remover um campo, basta atualizar o conjunto user_details.

Também é possível fazer referência a um conjunto no parâmetro drill_fields de uma visualização para definir campos de detalhamento para todas as métricas dessa visualização que ainda não têm campos de detalhamento especificados no nível do campo.

Exemplo: incluir ou omitir um conjunto de campos de uma análise

Suponha que você queira simplificar o seletor de campos do recurso "Explorar" para os usuários, excluindo campos que não são essenciais para eles.

Por exemplo, suponha que você tenha uma visualização users com informações sobre seus clientes, incluindo campos para ID, Nome, Sobrenome, E-mail e Idade, além de campos de local como Cidade, Estado, País e CEP. A visualização users é unida à análise detalhada orders:

O seletor de campos da visualização "Pedidos" inclui todos os campos das visualizações "Pedidos" e "Usuários", incluindo os que você quer omitir.

E se você quiser excluir os campos Nome, Sobrenome, E-mail, Idade e Gênero da análise detalhada para seus usuários? Você pode criar um conjunto chamado user_info que lista os campos que você quer excluir da Análise Pedidos:

A análise detalhada "Pedidos sem dados do usuário" exclui os campos "Nome", "Sobrenome", "E-mail", "Idade" e "Gênero" do seletor de campos da análise detalhada.

O LookML para o conjunto user_info ficaria assim:


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

Para definir uma análise Pedidos com o rótulo Pedidos sem dados do usuário, mescle a visualização users à análise orders. Adicione o código LookML fields: [ALL_FIELDS*, -users.user_info*] à análise orders para incluir todos os campos, exceto os do conjunto user_info da visualização 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
  }
}

Como o conjunto user_details é excluído da análise detalhada com a sintaxe -users.user_details* no parâmetro fields da análise orders, a visualização Pedidos na análise Pedidos sem dados do usuário omite os campos listados no conjunto users_user.info do seletor de campos da análise.

Você pode reutilizar o user_info definido para omitir esses campos da interface da Análise detalhada em qualquer outra análise a que a visualização users esteja associada. Se você quiser mudar algo no conjunto user_info, como adicionar ou remover um campo, basta atualizar o conjunto user_info.