Importazione di file da altri progetti

Puoi importare file da altri progetti LookML e repository esterni nel progetto attuale. In questo modo puoi utilizzare file del modello, visualizzare file e altri file in più progetti.

Esistono diversi casi d'uso per farlo. Alcuni esempi:

  • Creazione su un blocco Looker installato senza dover apportare modifiche dirette. Se Looker apporta modifiche al blocco, puoi facilmente eseguirne il pull, perché tutto il codice LookML che hai aggiunto viene conservato in un repository separato.

  • Gestire un progetto di base generato automaticamente in base allo schema del database. Puoi inserire tutte le dimensioni personalizzate, le misure e così via in un progetto separato in cui viene importato tutto il codice LookML dal progetto generato automaticamente. Puoi rigenerare regolarmente il progetto di base quando lo schema del database cambia senza sovrascrivere tutto il codice LookML personalizzato.

  • Incapsulamento di oggetti condivisi in un singolo progetto e successiva importazione in più altri progetti. Ad esempio, se hai una tabella comune a più database, potresti inserire la vista corrispondente in un progetto e mantenerla in quel punto. Quindi, puoi fare in modo che altri progetti lo utilizzino importando la tabella in quei progetti.

Per importare file da un altro progetto, esegui queste attività:

  1. Crea un file manifest di progetto.
  2. Specifica i progetti locali o remoti che vuoi importare.
  3. Visualizzare i file da un progetto importato.
  4. Includi i file di un progetto importato.

Quindi potrai fare riferimento ai campi dai file del progetto importato e sostituire i valori delle costanti definite nel progetto importato, se le costanti allow override.

Creazione di un file manifest di progetto

Tutti i progetti che importano file da altri progetti devono avere un file manifest di progetto. Se il tuo progetto non dispone ancora di un file manifest, puoi crearne uno dall'icona + nella parte superiore del browser file nell'IDE di Looker.

Per importare i progetti, specificali nel manifest. Puoi specificare progetti locali o remoti, come descritto nelle sezioni seguenti.

Importazione di progetti locali

L'importazione locale dei progetti può essere utilizzata solo se il progetto importato è presente sulla stessa istanza di Looker. È inoltre consigliabile che gli sviluppatori dispongano delle autorizzazioni per i modelli del progetto importato. Se i tuoi sviluppatori dispongono delle autorizzazioni del modello nel progetto importato, il controllo delle versioni sarà dinamico, il che significa che le modifiche nel progetto importato avranno effetto immediato sul progetto che lo importa. In questo modo, gli sviluppatori possono convalidare le modifiche apportate a entrambi i progetti prima di trasferirli in produzione. Inoltre, per gli sviluppatori con autorizzazioni di modello in entrambi i progetti, i file di progetto importati rifletteranno lo stato della modalità di sviluppo. Quindi, se lo sviluppatore è in modalità di sviluppo, l'IDE di Looker mostrerà questa modalità dei file del progetto importato. Se lo sviluppatore è in modalità di produzione, nell'IDE di Looker viene visualizzata la modalità di produzione del progetto importato.

Per eseguire l'importazione localmente, utilizza il parametro project_name per specificare il progetto attuale. Utilizza uno o più parametri local_dependency per specificare il progetto o i progetti da importare:

# This project
project_name: "my_project"

# The project to import
local_dependency: {
  project: "my_other_project"
}

Nei seguenti scenari, devi utilizzare l'importazione remota dei progetti anziché l'importazione locale dei progetti:

  • Gli sviluppatori non dispongono delle autorizzazioni per i modelli del progetto importato. In questo caso, Looker crea un clone della modalità di produzione del progetto importato e visualizza la versione statica dei file nell'IDE. Questa versione statica non mostrerà mai la versione dei file in modalità di sviluppo e potrebbe anche non essere aggiornata con l'attuale modalità di produzione senza avvisare lo sviluppatore. Sarebbe preferibile utilizzare l'importazione remota del progetto e fornire un ref che specifichi un ramo Git o una release Git nel progetto remoto. Se lo fai, Looker rileverà automaticamente i nuovi commit nel progetto remoto in modo che i tuoi sviluppatori vengano avvisati e possano quindi utilizzare la versione più recente dei file di progetto remoti.
  • Gli sviluppatori devono lavorare sempre con la versione di produzione di un progetto importato.
  • I tuoi sviluppatori devono utilizzare una versione statica dei file del progetto importato.

Importazione di progetti remoti

In un'importazione remota, non è necessario che il progetto importato si trovi sulla stessa istanza. Il progetto viene invece importato tramite il suo repository Git remoto.

Per importare un repository remoto, utilizza il parametro remote_dependency per fornire le informazioni relative al repository remoto. Il parametro remote_dependency accetta le seguenti informazioni e i seguenti sottoparametri:

  • Il nome del progetto importato, che può avere il nome che preferisci. Nell'esempio seguente, il nome del progetto è ga_360_block. Utilizza questo nome nelle istruzioni include per fare riferimento ai file importati nei progetti LookML. Questo nome viene utilizzato anche come nome della cartella nella cartella imported_projects dell'IDE di Looker.
  • Il sottoparametro url, in cui specifichi l'indirizzo del repository Git esterno. Utilizza l'URL principale del repository.
  • Il sottoparametro ref, in cui specifichi un ramo Git, un tag di release Git o l'SHA di un commit nel repository Git. Se vuoi un controllo delle versioni statico, puoi specificare una SHA del commit, in modo che le modifiche apportate al progetto importato non vengano applicate automaticamente al progetto (questa è una buona opzione per i blocchi Looker). In alternativa, puoi specificare un ramo Git o un tag di release Git se vuoi che Looker rilevi automaticamente i nuovi commit nel progetto remoto. Per ulteriori informazioni, consulta la sezione Rilevamento automatico delle nuove versioni di un progetto remoto in questa pagina.
  • Il sottoparametro override_constant, che è un sottoparametro facoltativo che consente di sostituire il valore di una costante definita in un progetto importato.

Ecco un esempio di parametro remote_dependency in un file manifest di un progetto. Questo esempio utilizza una connessione HTTPS:

remote_dependency: ga360_block {
  url: "https://github.com/llooker/google_ga360"
  ref: "master"
  override_constant: connection {
    value: "importing_project_connection"
  }
}

Puoi anche utilizzare SSH:

remote_dependency: ga360_block {
  url: "git@github.com:llooker/google_ga360.git"
  ref: "master"
  override_constant: connection {
    value: "importing_project_connection"
  }
}

Dopo aver aggiunto la dipendenza remota, potrebbe essere necessario configurare le credenziali di importazione per il progetto remoto. Consulta la sezione Configurazione delle credenziali di autenticazione per repository remoti privati in questa pagina.

Rilevamento automatico delle nuove versioni di un progetto remoto

Puoi fare in modo che Looker rilevi automaticamente i nuovi commit nel progetto remoto se specifichi un ramo Git o un tag di release Git nel sottoparametro ref di remote_dependency nel tuo file manifest.

Ad esempio, ecco una dipendenza remota in cui il ramo master viene specificato nel sottoparametro ref:

remote_dependency: exchange_rate {
  url: "https://github.com/llooker/datablocks-exchangerate.git"
  ref: "master"
}

Poi, quando il ramo master viene aggiornato con nuovi commit, Looker rileverà automaticamente le modifiche.

Ed ecco un esempio in cui viene specificato il tag di release v1.0:

remote_dependency: e_faa_original {
  url: "https://github.com/llooker/google_ga360"
  ref: "v1.0"
}

Indipendentemente dal tipo di valore specificato per il parametro ref, anche una SHA di commit, l'IDE mostrerà il pulsante Aggiorna dipendenze nella barra di navigazione del progetto superiore quando aggiungi un parametro remote_dependency al progetto.

Fai clic su Aggiorna dipendenze per importare i file di progetto remoti. Se questa è la prima dipendenza remota che hai aggiunto al tuo progetto, l'aggiornamento delle dipendenze richiede anche a Looker di creare un file di blocco manifest. Looker utilizza il file di blocco manifest per monitorare la versione dei progetti remoti.

Se specifichi un ramo Git o un tag di release Git nel sottoparametro ref, Looker controllerà la presenza di nuovi commit ogni volta che l'IDE di Looker si aggiorna, cosa che accade quando uno sviluppatore Looker accede alla modalità di sviluppo, esegue un'azione Git nell'IDE o aggiorna il browser.

Se esistono nuovi commit, Looker mostrerà l'opzione Aggiorna dipendenze nel riquadro azioni Git dell'IDE.

Seleziona l'opzione Aggiorna dipendenze per importare nel progetto i file di progetto remoti più recenti.

Quando disponi dei file più recenti, puoi convalidare il tuo LookML per verificare che tutti i riferimenti del progetto funzionino con i file di progetto remoti aggiornati. Puoi quindi correggere i riferimenti inaccessibili ed eseguire il deployment delle modifiche senza tempi di inattività per gli utenti.

File di blocco manifest

Looker utilizza il file manifest di blocco con nome file manifest_lock.lkml per monitorare le versioni dei progetti importati da remoto. Il file di blocco manifest è elencato nel riquadro del browser di file dell'IDE di Looker.

Gli sviluppatori di Looker non devono creare o modificare il file di blocco del manifest, poiché questo viene gestito automaticamente da Looker.

Il file di blocco manifest mostra ogni progetto remoto, rappresentato da una voce remote_dependency con i sottoparametri url e ref:

  • Il parametro remote_dependency indica il nome del progetto remoto specificato da uno sviluppatore Looker nel file manifest.
  • Il sottoparametro url indica l'indirizzo del repository Git esterno che uno sviluppatore Looker ha specificato nel file manifest.
  • Il sottoparametro ref mostra la versione del progetto (indicata da un SHA di commit) che Looker utilizza nel tuo progetto:
    • Se il progetto remoto è stato definito nel file manifest con un valore ref di un ramo Git o un tag di release Git, il parametro ref mostra la versione dei file (l'SHA del commit del progetto remoto) attualmente in uso nel progetto. Se sono presenti nuovi commit nel progetto remoto, Looker mostrerà il pulsante Aggiorna dipendenze nell'IDE per poter importare i file di progetto remoti più recenti. Il valore ref nel file di blocco del manifest verrà aggiornato in modo da mostrare l'ultima SHA del commit per il ramo o il tag di release.
    • Se il progetto remoto è stato definito nel file manifest con un valore ref di una specifica SHA del commit, il parametro ref nel file di blocco del manifest sarà la stessa SHA del commit.

Configurazione delle credenziali di autenticazione per repository remoti privati

Per configurare le credenziali di autenticazione per i repository remoti privati, vai alla pagina Importa credenziali selezionando Impostazioni nel riquadro di navigazione a sinistra all'interno dell'IDE.

Le impostazioni Importa credenziali mostrano un elenco degli URL per ogni repository remoto definito nel file manifest del progetto, il tipo di autenticazione utilizzato per il repository (https o ssh) e se Looker può connettersi correttamente al repository.

Aggiunta di credenziali di autenticazione

Per aggiungere le credenziali di autenticazione per un repository:

  1. Nella pagina Importa credenziali sotto l'intestazione URL, passa il mouse sopra il nome di un repository per visualizzare i pulsanti Testa e Configura, quindi fai clic su Configura.

  2. Looker visualizza la finestra di dialogo Configura autenticazione Git per consentirti di configurare le credenziali per il repository remoto. La finestra di dialogo indicherà il tipo di credenziali richieste per quel repository specifico.

    • Se il repository richiede un nome utente e una password (o un token di accesso personale) per l'autenticazione, inserisci il nome utente e la password o il token e fai clic su Salva modifiche.

    • Se il repository richiede una chiave SSH, come nell'esempio di utilizzo di SSH per importare un progetto remoto illustrato in precedenza in questa pagina, Looker visualizza una finestra di dialogo che mostra la chiave SSH locale. Fai clic su Copia chiave per copiare la chiave SSH negli appunti e aggiungerla all'elenco di chiavi del repository.

  3. Dopo aver salvato le credenziali, fai clic su Test per verificare l'accesso di Looker al repository.

    Una volta superati i test di connessione e effettuato la connessione al repository, la sezione Importa credenziali mostra un segno di spunta verde accanto al nome del repository.

Modifica delle credenziali di autenticazione

Per modificare le credenziali di autenticazione per un repository:

  1. Per visualizzare i pulsanti Test e Modifica, passa il mouse sopra un repository in cui sono già configurate le credenziali di autenticazione e fai clic su Modifica.

  2. Se il repository richiede un nome utente e una password (o un token di accesso personale) per l'autenticazione, fai clic su Cancella credenziali e, nella finestra popup di conferma, fai clic su Sì, cancella credenziali.

  3. Inserisci le nuove credenziali nel popup Configura autenticazione Git e fai clic su Salva modifiche.

Visualizzazione dei file da un progetto importato

L'IDE di Looker mostra i file di progetto importati nella cartella imported_projects del riquadro di navigazione a sinistra. Puoi selezionare un file di progetto importato per visualizzarne i contenuti.

I file di progetti locali e progetti remoti sono elencati nella cartella imported_projects.

Inoltre, puoi visualizzare gli oggetti dei file di progetto importati inclusi nel progetto attivo dal browser degli oggetti. Accedi al browser degli oggetti dalla barra di navigazione dell'IDE di Looker.

Inoltre, gli utenti con l'autorizzazione develop possono utilizzare il riquadro dei metadati per visualizzare informazioni sugli oggetti dei progetti importati, inclusi i link per accedere al file importato in cui è definito l'oggetto. Per ulteriori informazioni, consulta la pagina della documentazione Metadati per gli oggetti LookML.

Inclusione dei file di un progetto importato

Il parametro include in un file del modello specifica i file di progetto che saranno disponibili per quel modello. Dopo aver specificato un progetto locale o remoto importato nel file manifest, puoi utilizzare il parametro include in un file del modello per specificare i file del progetto importato. Possono essere inclusi solo i file il cui progetto è elencato nel file manifest.

Per include un file di un altro progetto, utilizza il nome del file con due barre (//) e il nome del progetto importato. Fai seguire il nome del progetto importato con una singola barra (/) e il percorso completo del file che vuoi includere.

Ad esempio, questi comandi include indicano il file di visualizzazione users del progetto importato e_flights e la visualizzazione orders del progetto importato e_commerce:

include: "//e_flights/views/users.view.lkml"
include: "//e_commerce/public/orders.view.lkml"

Per informazioni su come specificare i percorsi con le cartelle IDE abilitate, consulta la sezione Sintassi del percorso nella pagina del parametro include.

Puoi utilizzare i caratteri jolly per includere più file. Ad esempio, per includere tutti i file di visualizzazione nella directory /views/ del progetto importato e_flights:

include: "//e_flights/views/*.view"

Inoltre, puoi utilizzare i caratteri jolly per definire l'ambito a livelli di directory specifici o a directory ricorsive nel progetto importato:

include: "//e_flights/*/*.view.lkml"
include: "//e_commerce/*/*.view.lkml"

Consulta la sezione Esempi di caratteri jolly della pagina del parametro include per informazioni sull'utilizzo di caratteri jolly con le cartelle IDE abilitate.

Inclusi i file del modello

Non puoi includere un file del modello di un altro progetto. Se invece vuoi riutilizzare, perfezionare o estendere le esplorazioni tra i progetti, nel progetto importato puoi creare un file di esplorazione separato e poi includere questo file in altri progetti. Per ulteriori informazioni, consulta la sezione Inclusione di esplorazioni in un modello della pagina della documentazione del parametro include.

Inclusione di file che includono altri file

Quando includi un file che include altri file, tutte le inclusioni vengono risolte prima che il file venga passato al progetto successivo che lo include.

Ad esempio, se nel progetto corrente importi un file (A) da un altro progetto (proj_A) e il file importato contiene un parametro include che include il file B del progetto proj_B, il file B sarà incluso nel file A prima dell'importazione del file A nel progetto corrente.

Importazione di file di dati

I file archiviati nella sezione Dati di un progetto non vengono importati. Per fare riferimento a un file di dati di un progetto importato, ad esempio nel parametro map_layer, utilizza il percorso e il nome file completi del file. Ad esempio:

map_layer: json_from_imported_project {
  file: "//path_to_imported_project/folder/filename.topojson"
  ...
}

Riferimento ai file da un progetto importato

Dopo aver importato un file di vista nel progetto, puoi utilizzare la sintassi ${view_name.field_name} per fare riferimento ai campi della vista importata come se il file della vista fosse nativo del progetto. Ad esempio, supponiamo che tu abbia importato il progetto ga_360_block nel file manifest del progetto e la seguente istruzione include nel file del modello:

include: "//ga_360_block/ga_block.view"

Dovresti utilizzare la sintassi ${ga_block.hits_total} per fare riferimento al campo hits_total dalla vista ga_block inclusa.

Utilizzo delle costanti nei file da un progetto importato

Le costanti LookML consentono di definire un valore nel file manifest del progetto che può essere riutilizzato in tutto il progetto. Il sottoparametro export del parametro constant specifica se è possibile eseguire l'override del valore di una costante quando i file che fanno riferimento alla costante vengono importati in un altro progetto.

Il parametro export presenta i seguenti valori possibili:

  • none: il valore predefinito per export. Il valore della costante non può essere sostituito nel progetto di importazione. Il progetto di importazione utilizza il valore costante specificato nel file manifest del progetto importato.
  • override_optional: il valore della costante può essere facoltativamente sostituito nel progetto di importazione. Se nel file manifest del progetto di importazione non viene specificato un valore, viene utilizzato il valore originale del progetto importato.
  • override_required: il progetto di importazione deve sostituire il valore della costante specificato in origine nel file manifest del progetto importato. Se nel progetto di importazione non viene fornito un nuovo valore costante, Looker mostrerà un errore.

Quando importi file che fanno riferimento a una costante nel progetto, puoi utilizzare il sottoparametro override_constant di local_dependency o remote_dependency nel file manifest del progetto per fornire un nuovo valore per quella costante, purché questa costante abbia export impostato su override_optional o override_required nel progetto originale. Quando esegui l'override del valore di una costante da un progetto importato, il progetto utilizzerà il valore specificato con il parametro override_constant.

Supponiamo, ad esempio, di gestire più database su una singola istanza di Looker, con un progetto distinto per ogni database. In questo esempio, supponiamo anche che gli schemi dei dati siano identici per ogni database e che il tuo obiettivo sia definire un'analisi una volta sola e applicarla a ogni set di dati.

In questo esempio, supponiamo che proj_core sia il progetto di base in cui hai definito viste da importare in altri progetti. Inoltre, vuoi importare una delle viste orders, definita come segue:


view: orders {
  sql_table_name: "@{schema_name}.orders"
}

Lo schema su cui si basa la vista orders è specificato nel parametro sql_table_name utilizzando la costante schema_name, definita nel file manifest proj_core. Nell'esempio seguente, poiché la costante schema_name è impostata su export: override_required, qualsiasi progetto che importa schema_name deve sostituire il suo valore utilizzando il parametro override_constant:


constant: schema_name {
  value: "proj_core_schema"
  export: override_required
}

Per questo esempio, supponiamo che tu voglia importare la vista orders in un progetto locale denominato proj_a. Nel database di proj_a è presente anche una tabella denominata orders con una struttura identica alla tabella orders nel progetto di base proj_core.

Poiché proj_core e proj_a si trovano nella stessa istanza, puoi importare la vista orders in proj_a utilizzando local_dependency. Utilizzando il sottoparametro override_constant di local_dependency, puoi aggiornare la costante schema_name in modo che punti allo schema proj_a_schema nel file manifest per proj_a:


project_name: "proj_a"

local_dependency: {
  project: "proj_core"
  override_constant: schema_name {
    value: "proj_a_schema"
  }
}

In questo esempio, poiché la costante schema_name è impostata su export: override_required in project_core, Looker mostrerà un errore se non esegui l'override del suo valore in proj_a (il progetto di importazione).

Se esegui l'override della costante schema_name in proj_a puoi utilizzare i campi che hai definito nella vista orders in proj_core, anziché creare un nuovo file di visualizzazione e definire i campi da zero. In questo esempio, la vista orders corrisponde a una tabella diversa per ogni progetto:

  • In proj_core, la vista orders si basa sulla tabella proj_core_schema.orders del tuo database.
  • In proj_a, la vista orders si basa sulla tabella proj_a_schema.orders del tuo database.