As definições de campos LookML podem mudar ao longo do tempo. Por exemplo, o nome de uma coluna da base de dados pode mudar ou pode ter de alterar a definição de um campo LookML por outros motivos.
Se usar a sintaxe {TABLE}.field_name
para fazer referência a uma coluna da base de dados diretamente em vários locais, tem de atualizar cada referência manualmente. Todos os campos que façam referência a essa dimensão podem falhar se se esquecer de os atualizar, e o Looker apresenta um erro:
Para tornar os seus projetos LookML mais eficientes e fáceis de manter, pode definir campos num único local e usar o operador de substituição ($
) para fazer referência a esses campos em qualquer outro lugar.
Esta página fornece um exemplo de utilização 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
- O parâmetro
dimension
do LookML - O parâmetro
sql
do LookML - O parâmetro
sql_table_name
do LookML
Pré-requisitos
Exemplo: fazer referência à coluna da base de dados subjacente apenas uma vez para uma dimensão
Defina uma coluna de tabela da base de dados num projeto LookML uma vez usando a sintaxe ${TABLE}.field_name
no parâmetro sql
da dimensão. Em seguida, faça referência à dimensão através da sintaxe ${field_name}
ou ${view_name.field_name}
noutras partes do projeto. Isto permite-lhe manter a definição do LookML da coluna da base de dados num único local (a dimensão ${TABLE}.field_name
original), o que é útil se precisar de fazer referência a ela em vários locais no seu projeto.
Por exemplo, pode usar a sintaxe ${TABLE}.sale_price
para definir uma dimensão base denominada sale_price
numa visualização denominada 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."
}
Quando define outros campos que fazem referência à dimensão sale_price
, pode usar a sintaxe ${sale_price}
na vista order_items
(ou usar a sintaxe ${order_items.sale_price}
para fazer referência à dimensão sale_price
noutras vistas).
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, só tem de atualizar a referência ${TABLE}.sale_price
uma vez, na definição da dimensão base sale_price
. Esta alteração é, em seguida, propagada automaticamente para os campos profit
, item_gross_margin
e total_sale_price
, bem como para todos os outros campos que referenciam a dimensão sale_price
.