Questa pagina tratta un argomento avanzato e presuppone che il lettore abbia una buona conoscenza di LookML.
Estensioni è una funzionalità di LookML molto utile che consente di mantenere il codice LookML DRY (Don't Repeat Yourself, non ripeterti). In Looker, le esplorazioni, le viste e le dashboard LookML possono essere estese con il parametro extends
all'interno di un file del modello, come nell'esempio seguente:
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] }
In questo esempio, il parametro extends
viene utilizzato all'interno della definizione dell'esplorazione transactions
per estendere l'esplorazione orders
.
Questa pagina fa riferimento all'oggetto che viene esteso come oggetto base, mentre l'oggetto che esegue l'estensione è indicato come oggetto extending.
L'estensione di un oggetto LookML è un processo piuttosto semplice, come descritto in dettaglio nella pagina della documentazione Riutilizzo del codice con estensioni. Tuttavia, esistono alcuni casi d'uso avanzati che possono causare errori di riferimento LookML e duplicati indesiderati di oggetti. Questa pagina fornisce un esempio di come l'estensione di un'esplorazione in base a una vista che estende un'altra vista può comportare errori di riferimento di LookML, nonché suggerimenti che possono aiutarti a eliminare questi problemi.
Caso d'uso: estendere un'esplorazione in base a una vista estesa
Supponiamo che tu voglia estendere l'esplorazione events
e che la visualizzazione su cui si basa l'esplorazione estesa debba utilizzare i campi di una visualizzazione che espanda la visualizzazione events
di base. In questo esempio, l'esplorazione events_extended
estende l'esplorazione extends
, come mostrato nell'esempio seguente in 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 }
In questo esempio, la visualizzazione users
è unita all'esplorazione di base events
, mentre la visualizzazione orders
è unita all'esplorazione di estensione events_extended
. Tuttavia, l'unione definita in events
Esplora riferimenti events.user_id
di base, che è un campo della vista events
di base. Nel frattempo, il join definito nell'esplorazione events_extended
estesa fa riferimento al campo events_extended.test_id
, dove events_extended
è il nome di una vista estesa basata sulla vista events
. Il campo test_id
a cui viene fatto riferimento nella join nella definizione dell'esplorazione events_extended
è definito nella visualizzazione events_extended
estesa come segue:
include: "events.view.lkml" view: events_extended { extends: [events] dimension: test_id {}
Poiché la join definita nell'esplorazione events_extended
fa riferimento al nome della visualizzazione estesa, events_extended
, lo strumento di convalida di LookML mostra un errore inaccessible view
.
Per risolvere questo problema, puoi aggiungere il parametro from
al LookML per l'esplorazione in espansione e impostare il suo valore sul nome della vista estesa, events_extended
. Il parametro from
assegna l'alias al nome della tabella originale nell'SQL generato, ad esempio FROM schema.name AS alias
.
Questo è l'unico caso d'uso consigliato per applicare il parametro from
a livello di esplorazione.
Per eseguire il pull dalla vista di estensione (events_extended
) senza interrompere i riferimenti di join dall'esplorazione di base (events
), puoi aggiungere un parametro from
che viene mappato alla vista estesa:
explore: events_extended { extends: [events] from: events_extended join: orders { relationship: many_to_one sql_on: ${events.test_id} = ${orders.id} ;; } }
In questo esempio, l'applicazione del from: events_extended
LookML al LookML per l'esplorazione in estensione consente di continuare a fare riferimento alla vista di base (events
) nell'esplorazione in estensione, reindirizzando questi riferimenti al pull dalla versione di estensione di quella vista (events_extended
).
Con l'utilizzo del parametro from
, puoi continuare a fare riferimento al nome della vista di base events
nei prefissi di join, ma questi riferimenti verranno estratti dalla vista di estensione events_extended
, che contiene tutti i campi in events
, oltre al nuovo campo test_id
.