En esta página, se aborda un tema avanzado y se da por sentado que el lector tiene un conocimiento sólido de LookML.
Extiende es una función valiosa de LookML que te permite mantener el código de LookML DRY (no te repitas). En Looker, Exploraciones, vistas y paneles de LookML se pueden extender con el parámetro extends
dentro de un archivo de modelo, como en el siguiente ejemplo:
explore: orders { view_name: orders join: users { type: left_outer sql_on: %{orders.user_id} = ${users.id} ;; relationship: many_to_one } } explore: transactions { extends: [orders] }
En este ejemplo, se usa el parámetro extends
dentro de la definición de la exploración transactions
para extender la exploración orders
.
En esta página, se hace referencia al objeto que se extiende como base, mientras que el objeto que hace la extensión se conoce como extending.
Extender un objeto LookML es un proceso bastante sencillo, como se detalla en la página de documentación Reutiliza el código con extensiones. Sin embargo, hay algunos casos de uso avanzados que pueden causar errores de referencia de LookML y duplicación no deseada de objetos. En esta página, se proporciona un ejemplo de cómo extender una exploración en función de una vista que extiende otra vista puede generar errores de referencia de LookML, además de sugerencias que pueden ayudar a eliminar esos problemas.
Caso de uso: Cómo extender una exploración en función de una vista extendida
Supongamos que deseas extender la exploración events
y quieres que la vista en la que se basa la exploración extendida use campos de una vista que extiende la vista base events
. En este ejemplo, la exploración events_extended
extiende la exploración extends
, como se muestra en el siguiente ejemplo de LookML:
explore: events { view_name: events join: users { type: left_outer sql_on: ${events.user_id} = ${users.id} ;; relationship: many_to_one } } explore: events_extended { extends: [events] join: orders { sql_on: ${events_extended.test_id} = ${orders.id} ;; relationship: many_to_one }
En este ejemplo, la vista users
se une a la exploración events
base, mientras que la vista orders
se une a la exploración extendida, events_extended
. Sin embargo, la unión definida en la exploración events
base hace referencia a events.user_id
, que es un campo de la vista events
base. Mientras tanto, la unión definida en la exploración events_extended
extendida hace referencia al campo events_extended.test_id
, en el que events_extended
es el nombre de una vista extendida basada en la vista events
. El campo test_id
al que se hace referencia en la combinación en la definición de exploración events_extended
se define en la vista events_extended
extendida de la siguiente manera:
include: "events.view.lkml" view: events_extended { extends: [events] dimension: test_id {}
Debido a que la unión definida en la exploración events_extended
hace referencia al nombre de la vista extendida, events_extended
, el validador de Looker muestra un error inaccessible view
.
Para abordar esto, puedes agregar el parámetro from
a LookML para la exploración extendida y establecer su valor como el nombre de la vista extendida, events_extended
. El parámetro from
alias el nombre de la tabla original en el SQL generado, como FROM schema.name AS alias
.
Este es el único caso de uso recomendado para aplicar el parámetro from
a nivel de la exploración.
Para extraer desde la vista extendida (events_extended
) sin romper las referencias de unión de la exploración base (events
), puedes agregar un parámetro from
que se asigne a la vista extendida:
explore: events_extended { extends: [events] from: events_extended join: orders { relationship: many_to_one sql_on: ${events.test_id} = ${orders.id} ;; } }
En este ejemplo, aplicar from: events_extended
de LookML a LookML para la exploración extendida te permite seguir haciendo referencia a la vista base (events
) en la exploración extendida y redireccionar esas referencias para extraer desde la versión extendida de esa vista (events_extended
).
Con el parámetro from
, puedes continuar haciendo referencia al nombre de la vista base events
en los prefijos de unión, pero estas referencias se extraerán de la vista extendida events_extended
, que contiene todos los campos en events
, además del nuevo campo test_id
.