La risoluzione dei problemi relativi a un esempio di tecnologia avanzata estende il caso d'uso

Questa pagina tratta un argomento avanzato e presuppone che il lettore abbia una solida conoscenza di LookML.

Extends è una preziosa funzionalità LookML che ti consente di mantenere il codice LookML DRY (senza ripetizioni). In Looker, le dashboard di Esplorazioni, viste e 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 e l'oggetto che esegue l'estensione è indicato come oggetto extending.

L'estensione di un oggetto LookML è un processo abbastanza semplice, come descritto nella pagina della documentazione Riutilizzare il codice con estensioni. Tuttavia, esistono alcuni casi d'uso avanzati che possono causare errori di riferimento a LookML e una duplicazione indesiderata di oggetti. Questa pagina fornisce un esempio di come l'estensione di un'esplorazione in base a una vista che estende un'altra visualizzazione può causare errori di riferimento di LookML, nonché suggerimenti che possono aiutare a eliminare questi problemi.

Caso d'uso: estendere un'esplorazione in base a una vista estesa

Supponi di voler estendere l'esplorazione events e di volere la visualizzazione su cui si basa l'esplorazione estesa per utilizzare i campi da una visualizzazione che estende la visualizzazione di base events. 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 vista users è unita all'esplorazione events di base, mentre la vista orders è unita all'esplorazione estesa, events_extended. Tuttavia, il join definito nell'esplorazione events di base fa riferimento a events.user_id, che è un campo della visualizzazione di base events. 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 nel join nella definizione dell'esplorazione events_extended viene definito nella vista events_extended estesa come segue:

include: "events.view.lkml"
view: events_extended {
  extends: [events]

  dimension: test_id {}

Poiché il join definito nell'esplorazione di events_extended fa riferimento al nome della vista estesa, events_extended, lo strumento di convalida LookML mostra un errore inaccessible view.

Per risolvere questo problema, puoi aggiungere il parametro from al LookML per l'esplorazione dell'esplorazione e impostarne il valore sul nome della vista estensione, events_extended. Il parametro from alias il nome della tabella originale nell'SQL generato, come FROM schema.name AS alias.

Questo è l'unico caso d'uso consigliato per applicare il parametro from a livello di esplorazione.

Per estrarre dalla visualizzazione estesa (events_extended) senza interrompere i riferimenti di unione dall'esplorazione di base (events), puoi aggiungere un parametro from che mappa 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 dell'from: events_extended di LookML al LookML per l'esplorazione dell'esplorazione ti consente di continuare a fare riferimento alla vista di base (events) nell'esplorazione estesa, reindirizzando al contempo i riferimenti per il pull dalla versione estesa di quella vista (events_extended).

Con l'uso del parametro from, puoi continuare a fare riferimento al nome della visualizzazione di base events nei prefissi join, ma questi riferimenti verranno estratti dalla vista estesa events_extended, che contiene tutti i campi in events, oltre al nuovo campo test_id.