Las definiciones de los campos de LookML pueden cambiar con el tiempo. Por ejemplo, es posible que cambie el nombre de una columna de la base de datos o que debas cambiar la definición de un campo de LookML por otros motivos.
Si usas la sintaxis {TABLE}.field_name
para hacer referencia a una columna de una base de datos directamente en varios lugares, debes actualizar cada referencia de forma manual. Cualquier campo que haga referencia a esa dimensión puede fallar si te olvidas de actualizarlo, y Looker mostrará un error:
Para que tus proyectos de LookML sean más eficientes y fáciles de mantener, puedes definir campos en un solo lugar y usar el operador de sustitución ($
) para hacer referencia a esos campos en cualquier otro lugar.
En esta página, se proporciona un ejemplo del uso del operador de sustitución (con la sintaxis ${field_name}
) para hacer referencia a una sola dimensión en las definiciones de varios campos de LookML.
Componentes
- Operadores de sustitución
- El parámetro
dimension
de LookML - El parámetro
sql
de LookML - El parámetro
sql_table_name
de LookML
Requisitos previos
Ejemplo: Cómo hacer referencia a la columna de base de datos subyacente solo una vez para una dimensión
Define una columna de tabla de base de datos en un proyecto de LookML una vez con la sintaxis ${TABLE}.field_name
en el parámetro sql
de la dimensión. Luego, haz referencia a la dimensión con la sintaxis ${field_name}
o ${view_name.field_name}
en otra parte del proyecto. Esto te permite mantener la definición de LookML de la columna de la base de datos en un solo lugar (la dimensión original ${TABLE}.field_name
), lo que es útil si necesitas hacer referencia a ella en varios lugares de tu proyecto.
Como ejemplo, puedes usar la sintaxis ${TABLE}.sale_price
para definir una dimensión base llamada sale_price
en una vista llamada 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."
}
Cuando definas otros campos que hagan referencia a la dimensión sale_price
, puedes usar la sintaxis ${sale_price}
dentro de la vista order_items
(o usar la sintaxis ${order_items.sale_price}
para hacer referencia a la dimensión sale_price
en otras 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} ;;
}
En este ejemplo, si cambia el nombre de la columna de la dimensión sale_price
, solo deberás actualizar la referencia ${TABLE}.sale_price
una vez, en la definición de la dimensión sale_price
base. Este cambio se propagará automáticamente a los campos profit
, item_gross_margin
y total_sale_price
, así como a todos los demás campos que hagan referencia a la dimensión sale_price
.