Sviluppo di un blocco personalizzato per Looker Marketplace

Questa pagina descrive come creare un blocco personalizzato che può essere aggiunto a Looker Marketplace e accessibile da altri utenti di Looker.

Tieni presente che per inviare contenuti al marketplace di Looker devi essere membro della rete di partner di Looker o un cliente di Looker.

Per informazioni sui Looker Blocks già creati e disponibili per l'uso, consulta la pagina della documentazione Looker Blocks. Per informazioni sulla personalizzazione dei blocchi installati da Marketplace, consulta la pagina della documentazione Personalizzazione dei blocchi di Looker Marketplace.

Per sviluppare un blocco e renderlo disponibile a tutti gli utenti di Looker tramite Looker Marketplace, segui i passaggi descritti in questa pagina:

  1. Configura e collega l'origine dati a Looker.
  2. Crea un progetto e aggiungi i file richiesti.
  3. Rendi accessibile il blocco.
  4. Invia il blocco per la revisione da parte di Looker.

Configurazione e connessione dell'origine dati a Looker

I blocchi sono modelli di dati, quindi funzionano meglio se progettati per un set di dati specifico e facilmente ripetibile. La maggior parte degli errori di installazione dei blocchi si verifica quando il set di dati dell'utente non corrisponde ai nomi dello schema, della tabella e dei campi nel blocco.

  • Se stai creando un blocco per un set di dati specifico, ad esempio i dati di Google Analytics, prendi nota di eventuali impostazioni o personalizzazioni che hai apportato al set di dati. Se possibile, riduci al minimo queste personalizzazioni per semplificare l'installazione per gli utenti. Fornisci istruzioni specifiche in un file README.
  • Se stai creando un blocco per un pattern di analisi generale, come la fidelizzazione delle coorti, prendi nota dei campi che prevedi che il set di dati dell'utente contenga. Molto probabilmente, gli utenti non avranno gli stessi nomi di schema, tabella e campo del tuo set di dati. Utilizza le costanti LookML per i nomi di tabelle e campi e comunica all'utente quali campi deve aggiornare in un file README.

Una volta determinata l'origine dati, collega l'origine dati a Looker per iniziare la modellazione. Se devi modificare le impostazioni di connessione predefinite, prendi nota nel file README.

Creazione di un progetto e aggiunta dei file richiesti

Crea un progetto per rappresentare il tuo blocco. Potresti utilizzare una convenzione di denominazione come block-<database_dialect>-<role> (ad es. block-redshift-admin).

Poi, crea i seguenti file nel progetto:

  • Un file manifest che definisce il nome del progetto, il nome della connessione e eventuali altre costanti
  • Un file di visualizzazione per ogni visualizzazione
  • Un file di esplorazione per ogni esplorazione
  • Un file modello che include tutti i file di vista, di esplorazione e di dashboard LookML del progetto
  • Almeno tre file dashboard LookML
  • Un file marketplace.json contenente le informazioni che verranno visualizzate nella scheda del marketplace per questo blocco
  • Un file LICENSE che include il testo della licenza open source MIT
  • Un file README con istruzioni e opzioni di configurazione dettagliate

Gli utenti che installano il tuo blocco possono affinare le esplorazioni, le visualizzazioni e le dashboard di base in un refinements.lkmlfile separato. Le sezioni seguenti spiegano in modo più dettagliato ogni tipo di file richiesto:

Creazione di un file manifest

Crea un file manifest per il tuo progetto. Il file manifest deve iniziare con il nome di un progetto e poi definire alcune costanti LookML che gli utenti possono modificare. Ad esempio, devi definire il nome della connessione di Looker come una costante con export: override_required in modo che gli utenti possano sostituirlo con il proprio nome di connessione.

Ecco un file manifest di esempio:

project_name: "block-ga-360"

################# Constants ################

## Used in google_analytics_block.model connection param
constant: CONNECTION_NAME {
  value: "looker-private-demo"
  export: override_required
}

## Used in ga_sessions.view sql_table_name
constant: SCHEMA_NAME {
  value: "bigquery-public-data.google_analytics_sample"
  export: override_optional
}

constant: GA360_TABLE_NAME {
  value: "ga_sessions_*"
  export: override_optional
}

Creazione di file in visualizzazione ed esplorazione in corso...

Crea un file view.lkml per ogni visualizzazione. Se i nomi dello schema e delle tabelle di un utente potrebbero essere diversi dai tuoi, assicurati di definirli come costanti nel file manifest in modo che gli utenti che scaricano il tuo blocco possano aggiornarli nel file manifest generato automaticamente. Poi fai riferimento a queste costanti nei parametri sql_table_name delle tue visualizzazioni.

Ecco un esempio di file view.lkml del blocco:

view: user_facts {

  # SCHEMA_NAME and GA360_TABLE_NAME are constants
  sql_table_name: @{SCHEMA_NAME}.@{GA360_TABLE_NAME} ;;

  dimension: clientID {
    type: string
    sql: ${TABLE.clientId}
  }

}

Successivamente, crea uno o più file explore.lkml. Assicurati che ogni file di esplorazione includa le visualizzazioni necessarie per l'esplorazione. Progetta le tue esplorazioni con cura in modo che contengano join logici, esercitazioni e pagine di Esplora selezionate. Dopo che un altro utente ha installato il blocco dal marketplace, gli utenti aziendali dovrebbero poter iniziare facilmente ad analizzare i dati.

Puoi trovare un elenco generale delle best practice per la definizione dei modelli nel nostro forum della community e nelle best practice di Looker, ad esempio Best practice: cosa fare e cosa non fare con LookML e Best practice: scrivere LookML sostenibile e manutenibile.

Ecco un esempio di file explore.lkml:

include: "/Google_Analytics/Sessions/*.view.lkml"

explore: future_input {
  view_label: "Audience Traits"
  label: "BigQuery ML Customer Likelihood to Purchase"
  description: "This explore allows you to slice and dice likeliness to purchase scores by different customer traits to see how they differ. The default range of data you are looking at is in the past 30 days"
  join: future_purchase_prediction {
    type: left_outer
    sql_on: ${future_purchase_prediction.clientId} = ${future_input.client_id} ;;
    relationship: one_to_one
  }
}

Creazione di un file del modello

Crea un file del modello che includa tutti i file di visualizzazione, esplorazione e dashboard nel tuo progetto. Assicurati che al nome della connessione venga fatto riferimento come una costante LookML del file manifest.

Definisci almeno un gruppo di dati per impostare un criterio di memorizzazione nella cache.

Ecco un esempio di file del modello:

connection: "@{CONNECTION_NAME}"

include: "/views/*.view.lkml"
include: "/explores/*.explore.lkml"
include: "/dashboards/*.dashboard.lookml"

datagroup: nightly {
  sql_trigger: SELECT TIMEZONE('US/Pacific',GETDATE())::DATE;;
}

Creazione di file di dashboard LookML

Per l'inclusione in Looker Marketplace, ogni blocco deve includere almeno tre dashboard LookML che forniscano un'analisi significativa e utile. Le dashboard devono essere estetiche, funzionali e complete e non devono includere dati sfocati.

Sebbene non esistano requisiti di progettazione rigidi per le dashboard di LookML, Looker consiglia queste best practice generali di progettazione:

  • Tavolozza dei colori coerente in tutta la dashboard
  • Almeno sette riquadri
  • Un minimo di tre diversi tipi di visualizzazione (ad es. valore singolo, a barre e a linee)

Le visualizzazioni personalizzate non sono supportate durante lo sviluppo di dashboard per Blocks. Utilizza invece i tipi di visualizzazione nativi di Looker.

Per ulteriori informazioni sulla personalizzazione delle dashboard e delle visualizzazioni all'interno delle dashboard di LookML, consulta le pagine di documentazione relative ai parametri della dashboard e ai parametri degli elementi della dashboard. Per un esempio di file della dashboard di LookML, consulta il file della dashboard di LookML di Redshift Admin nel blocco Redshift Admin.

Creazione di un file marketplace.json

Crea un file marketplace.json per fornire informazioni su come deve essere visualizzata la scheda in Marketplace. Ogni blocco in Looker Marketplace deve fornire queste informazioni aggiuntive per aiutare gli utenti a selezionare il blocco più adatto alle loro esigenze. Il file marketplace.json deve contenere:

  • Campi Marketplace label, category_label e branding
  • Un elenco di costanti LookML che dovranno essere compilate dagli utenti per completare il modello LookML (ad es. i nomi delle connessioni)

Ecco un esempio di file marketplace.json per il blocco prestazioni di Google BigQuery:

{
  "label": "Google BigQuery Performance",
  "category_label": "Models",
  "branding": {
    "image_uri": "https://marketplace-api.looker.com/block-icons/google-cloud.png",
    "tagline": "This Block provides a comprehensive overview of all cost and performance data for one or multiple BigQuery projects, enabling users to effectively monitor BigQuery usage down to a per user level. It can be used to set up alerts to long running or high cost queries."
  },

  "constants": {
    "CONNECTION_NAME": {
      "label": "Connection Name",
      "value_constraint": "connection"
    },
    "SCHEMA_NAME": {
      "label": "Schema Name"
    },
    "AUDIT_LOG_EXPORT_TABLE_NAME": {
      "label": "Audit Log Export Table Name",
      "description": "The table name of your BigQuery Optimization data (typically cloudaudit_googleapis_com_data_access_*)."
    }
  },
  "models": [
    {
      "name": "block_bigquery_optimization_v2",
      "connection_constant": "CONNECTION_NAME"
    }
  ]
}

Lo screenshot seguente mostra la scheda del marketplace che verrebbe generata da questo file marketplace.json.

Un esempio di scheda di Marketplace.

  • Il campo "label" controlla il titolo del blocco. In questo esempio, si tratta di Google BigQuery Performance.
  • Il campo "tagline" controlla il primo paragrafo della scheda di Marketplace.
  • Il campo "image_uri" controlla l'immagine mostrata nell'angolo in alto a sinistra della scheda di Marketplace. In questo esempio, si tratta del logo di Google Cloud.
  • Il campo "constants" chiede agli utenti di compilare le costanti nell'interfaccia utente di Marketplace durante la procedura di installazione. In questo esempio, nel file marketplace.json sono elencate tre costanti (CONNECTION_NAME, SCHEMA_NAME e AUDIT_LOG_EXPORT_TABLE_NAME), pertanto all'utente verrà chiesto di specificare i valori per questi tre campi prima dell'installazione.

Creazione di un file LICENSE

Tutti i blocchi di Looker devono essere concessi in licenza ai sensi della licenza open source MIT. Includi il testo di questa licenza in un file denominato LICENSE. Vedi il file LICENSE del blocco amministratore Redshift per un esempio di file LICENSE.

Creazione di un file README

Il file README deve contenere tutte le istruzioni per l'implementazione del blocco e deve identificare esplicitamente dove sono necessarie eventuali personalizzazioni, ad esempio nel file manifest generato automaticamente](#the_autogenerated_manifest_file) o nel file di perfezionamento. Consulta il file README del blocco di amministrazione Redshift per un esempio di file README.

Aspetti da considerare per il file README:

  • Di quale origine dati ha bisogno l'utente? Devono pagare un abbonamento?
  • Quali autorizzazioni deve avere l'utente del database?
  • Quali impostazioni di connessione di Looker sono necessarie?
  • I nomi dei campi del blocco corrisponderanno a quelli del set di dati dell'utente? In caso contrario, cosa deve cambiare l'utente?

File generati automaticamente

Quando gli utenti installano il tuo blocco, la loro istanza di Looker crea un nuovo progetto Looker con i file del tuo progetto come file di sola lettura. Inoltre, i seguenti file verranno generati automaticamente per l'utente:

  • Un file marketplace_lock.lkml di sola lettura contenente le informazioni della scheda del marketplace
  • Un file manifest che fa riferimento alla scheda di marketplace_lock.lkml
  • Un file refinements.lkml che include tutte le visualizzazioni ed esplorazioni del tuo blocco
  • Un file modello di sola lettura che include sia il file modello del blocco sia il file refinements.lkml

Gli utenti che installano il tuo blocco da Looker Marketplace possono utilizzare il file refinements.lkml per perfezionare il tuo LookML e possono anche aggiungere nuovi file LookML. Per saperne di più su come gli utenti possono personalizzare il blocco, consulta la pagina della documentazione Personalizzazione dei blocchi di Looker Marketplace.

Il file manifest generato automaticamente

Il file manifest generato automaticamente consente agli utenti che installano il blocco di impostare variabili come il nome della connessione. Le costanti LookML definite nel file manifest del blocco possono essere modificate nel file manifest generato automaticamente o impostate dagli utenti nell'interfaccia utente del download del blocco.

Il file di perfezionamento

Il file refinements.lkml generato automaticamente consente agli utenti che installano il blocco di perfezionare le visualizzazioni e le esplorazioni definite dal blocco. È qui che gli utenti che scaricano il blocco eseguono la personalizzazione in blocco di LookML per adattarla al loro caso d'uso.

Ecco un esempio di file refinements.lkml generato automaticamente:

include: "//ga360-v2/**/*.view.lkml"
include: "//ga360-v2/**/*.explore.lkml"

\# Use LookML refinements to refine views and explores that are defined in the remote project.
\# Learn more at: https://docs.looker.com/data-modeling/learning-lookml/refinements
\#
\#
\# For example we could add a new dimension to a view:
\#     view: +flights {
\#       dimension: air_carrier {
\#         type: string
\#         sql: ${TABLE}.air_carrier ;;
\#       }
\#     }
\#
\# Or apply a label to an explore:
\#     explore: +aircraft {
\#       label: "Aircraft Simplified"
\#     }
\#

Rendere accessibile il progetto a blocchi

Ospita il tuo blocco LookML in un repository GitHub accessibile pubblicamente.

Tutti i Looker Blocks devono essere concessi in base alla licenza open source MIT e il testo della licenza deve essere incluso in un file LICENSE nel repository.

Invio del blocco per la revisione

Una volta che il blocco è pronto per essere inviato, segui le istruzioni riportate in Invio di contenuti a Looker Marketplace per creare la documentazione di supporto per il blocco, inviarlo al team di Looker per la revisione e pubblicarlo su Looker Marketplace.