As definições de campo do LookML podem mudar com o tempo. Por exemplo, o nome de uma coluna de banco de dados pode mudar ou talvez seja necessário alterar 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. Todos os campos que fazem referência a essa dimensão podem ser corrompidos se você se 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 oferece um exemplo de uso do operador de substituição (com a sintaxe ${field_name}
) para fazer referência a uma única dimensão nas definições de vários campos do LookML.
Componentes
- Operadores de substituição
- 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 de destino apenas uma vez para uma dimensão
Defina uma coluna de tabela de banco de dados em um projeto do 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 referenciá-la em vários locais no seu projeto.
Por exemplo, você pode usar a sintaxe ${TABLE}.sale_price
para definir uma dimensão base com o nome sale_price
em uma visualização com o nome 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 sale_price
da dimensão 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
.