As definições de campo do LookML podem mudar com o tempo. Por exemplo, o nome de uma coluna do banco de dados pode mudar, ou talvez você precise mudar a definição de um campo do LookML por outros motivos.
Se você usar a sintaxe {TABLE}.field_name
para fazer referência a uma coluna do banco de dados diretamente em vários lugares, será necessário atualizar cada referência manualmente. Os campos que fazem referência a essa dimensão podem ser corrompidos se você esquecer de atualizá-los, e o Looker vai mostrar um erro:
Para tornar seus projetos do LookML mais eficientes e fáceis de manter, defina campos em um só lugar e use o operador de substituição ($
) para fazer referência a esses campos em todos os outros.
Esta página mostra um exemplo de uso do operador de substituição (com a sintaxe ${field_name}
) para referenciar uma única dimensão nas definições de vários campos do LookML.
Ingredientes
- Operadores de substituição
- Parâmetro
dimension
do LookML - Parâmetro
sql
do LookML - Parâmetro
sql_table_name
do LookML
Pré-requisitos
Exemplo: fazer referência à coluna do banco de dados subjacente apenas uma vez para uma dimensão
Defina uma coluna de tabela de banco de dados em um projeto da LookML usando a sintaxe ${TABLE}.field_name
no parâmetro sql
da dimensão. Em seguida, faça referência à dimensão usando a sintaxe ${field_name}
ou ${view_name.field_name}
em outro lugar do projeto. Isso permite manter a definição do LookML da coluna do banco de dados em um só lugar (a dimensão ${TABLE}.field_name
original), o que é útil se você precisar fazer referência a ela em vários lugares do projeto.
Por exemplo, use a sintaxe ${TABLE}.sale_price
para definir uma dimensão base chamada sale_price
em uma visualização chamada order_items
:
dimension: sale_price {
type: number
value_format_name: usd
sql: ${TABLE}.sale_price ;;
description: "The price at which an item is set to sell."
}
Ao definir outros campos que fazem referência à dimensão sale_price
, você pode usar a sintaxe ${sale_price}
na visualização order_items
ou a sintaxe ${order_items.sale_price}
para fazer referência à dimensão sale_price
em outras visualizações.
dimension: profit {
type: number
value_format_name: usd
sql: ${sale_price} - ${inventory_items.cost} ;;
description: "The difference between an item's sale price and an item's cost."
}
dimension: item_gross_margin {
type: number
value_format_name: percent_2
sql: 1.0 * ${profit}/NULLIF(${sale_price},0) ;;
}
measure: total_sale_price {
type: sum
value_format_name: usd
sql: ${sale_price} ;;
}
Neste exemplo, se o nome da coluna da dimensão sale_price
mudar, você só vai precisar atualizar a referência ${TABLE}.sale_price
uma vez, na definição da dimensão sale_price
de base. Essa mudança será propagada automaticamente para os campos profit
, item_gross_margin
e total_sale_price
, bem como para todos os outros campos que fazem referência à dimensão sale_price
.