Risoluzione dei problemi di un esempio di caso d'uso avanzato di estensione

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.