Personalizzare i Looker Blocks
Questa pagina fornisce una panoramica delle best practice e degli esempi su come adattare i seguenti Looker Blocks di Cortex Framework ai requisiti specifici della tua attività:
Installazione
Puoi installare i Looker Blocks di Cortex Framework in diversi modi, come descritto nella documentazione relativa al deployment dei Looker Blocks. Tuttavia, ti consigliamo di eseguire il fork del repository come metodo più semplice per personalizzare i blocchi in base alle esigenze della tua attività.
I Looker Blocks di Cortex Framework sono stati creati con un approccio a livelli, in cui ogni livello aggiunge una parte incrementale di logica al livello precedente:
- Livello base: visualizzazioni LookML generate automaticamente che fanno riferimento alle tabelle di origine.
- Livello principale: modifiche scritte a mano che aggiungono nuovi campi o modificano i campi del livello base.
- Livello logico: definizioni di esplorazione e join tra diverse visualizzazioni.
L'utilizzo dei perfezionamenti è fondamentale per questo approccio a livelli e per la personalizzazione. Per seguire il principio DRY (Do Not Repeat Yourself), vengono utilizzati extends e constants. I contenuti dinamici per le etichette, le istruzioni SQL, le proprietà html e link vengono generati utilizzando il linguaggio di modelli Liquid.
Best practice generali di Google:
Organizzazione di file e cartelle
All'interno del Looker Block, ogni cartella rappresenta una raccolta di tipi di oggetti (ad esempio visualizzazioni, esplorazioni, dashboard e altro). Ogni singolo oggetto è definito in un file separato. La radice del progetto contiene i seguenti file chiave:
- File
.model - File manifest
- File README e altri file Markdown
- File Marketplace (se il blocco è disponibile anche su Looker Marketplace)

Modello
La gestione modulare dei file rende il file model del progetto snello con i seguenti parametri:
- connection
-
I tipi di file inclusi sono i seguenti:
- Components (gruppi di dati,
named_value_formatsse pertinenti) - Explores (le esplorazioni non sono definite nel file del modello)
- Dashboards
- Components (gruppi di dati,
Le istruzioni include per le visualizzazioni utilizzate nel blocco sono definite all'interno di ogni singolo file Explore, anziché in questa posizione, come mostrato nell'esempio seguente:
connection: "@{CONNECTION_NAME}"
include: "/components/**/*.lkml"
include: "/explores/**/*.explore"
include: "/dashboards/**/*.dashboard"
Manifest
Il file manifest specifica le costanti a cui viene fatto riferimento in un progetto. Di seguito sono riportati alcuni esempi delle costanti utilizzate per i nostri blocchi:
- Nome collegamento
- ID progetto
- Set di dati dei report
I Looker Blocks di Cortex Framework utilizzano anche costanti per definire quanto segue:
- Etichette delle visualizzazioni
- Etichette dei campi
- Formati HTML
- Link URL
- Nomi delle dashboard
Esamina le costanti definite per il Looker Block e modifica i valori in base alle tue esigenze. Le modifiche vengono applicate ovunque venga fatto riferimento alla costante.
Attributi dell'utente
Alcuni Looker Blocks richiedono attributi utente che vengano definiti nell'istanza Looker da un amministratore. Questi attributi utente per la lingua o la valuta predefinita ti consentono di personalizzare la visualizzazione delle dashboard per utente o gruppo. Per ulteriori informazioni sugli attributi utente richiesti, consulta la panoramica di ogni blocco.
Visualizzazioni
Le visualizzazioni che si trovano nella cartella Base sono quelle generate automaticamente utilizzando Crea visualizzazione dalla tabella. Questi file sono stati modificati in modo minimo:
- L'ID progetto e il nome del set di dati sono stati sostituiti con costanti.
- Le visualizzazioni basate su record nidificati sono state spostate in file separati.
- Sono state rimosse tutte le definizioni di campi di drill-down non necessarie.
Le modifiche significative a queste visualizzazioni, come etichette, nuove dimensioni e misure, sono state create nella cartella Core utilizzando perfezionamenti, estensioni o tabelle derivate.
All'interno della cartella principale, le visualizzazioni sono denominate con un suffisso che indica il tipo di visualizzazione:
_rfnper il perfezionamento._extper la visualizzazione che richiede l'estensione._sdtper la tabella derivata basata su SQL._ndtper la tabella derivata nativa._pdtper la tabella derivata permanente._xvwper la visualizzazione che fa riferimento ai campi di più visualizzazioni.

Ogni definizione di visualizzazione inizia con annotazioni che forniscono informazioni di base, tra cui descrizioni, origini, riferimenti, campi estesi e altre note pertinenti.

Record ripetuti nidificati
Per le tabelle sottostanti contenenti record ripetuti nidificati, Looker crea visualizzazioni separate per annidare questi record. Ad esempio, nel Looker Block di Oracle EBS, la tabella sales_orders ha una struttura ripetuta nidificata denominata lines. Looker le tratta come due visualizzazioni distinte: sales_orders e sales_orders__lines.
Per unire questi record non nidificati all'interno dell'esplorazione, devi definire il join utilizzando la proprietà sql insieme al comando UNNEST.

Navigare e comprendere il codice del Looker Block
I Looker Blocks di Cortex Framework contengono commenti estesi nelle visualizzazioni e in altri oggetti. Per migliorare la navigazione e la comprensione del codice, ti consigliamo di utilizzare l'opzione Fold LookML disponibile nell'ambiente di sviluppo LookML.



Campi
Il termine field si riferisce a oggetti come dimension, measure, filter o parameter. In questi blocchi più recenti, abbiamo seguito questi principi:
- Le dimensioni sono denominate utilizzando snake_case (minuscole e trattino basso tra le parole). Ad esempio:
customer_name. - I nomi delle colonne delle tabelle sottostanti vengono utilizzati per denominare le dimensioni. È possibile applicare etichette alle dimensioni per fornire loro un nome di facile utilizzo per l'attività.
Ad esempio, una dimensione denominata
division_hdr_spartpuò essere etichettata come "ID divisione". - Per le tabelle con molte colonne, i campi sono nascosti per impostazione predefinita. Utilizzando un perfezionamento della visualizzazione, imposta la proprietà
hiddensu "no" per il sottoinsieme di campi da visualizzare in un'esplorazione. Se un campo non viene visualizzato come previsto, la modifica di questa proprietà del campo può risolvere il problema. - Le proprietà
View_labelegroup_labelvengono utilizzate per organizzare i campi all'interno di un'esplorazione, se applicabile. - Per i campi utilizzati in più visualizzazioni, le proprietà come l'etichetta vengono stabilite all'interno di una visualizzazione "comune", che viene poi estesa ad altre visualizzazioni. Questo approccio centralizza la definizione della proprietà, promuovendo la riusabilità. Eventuali modifiche necessarie vengono gestite all'interno della visualizzazione "comune", assicurando che le modifiche vengano applicate a tutte le visualizzazioni in cui viene estesa la visualizzazione "comune".
- I parametri utilizzati in più esplorazioni o i campi che fanno riferimento a più visualizzazioni sono definiti in una visualizzazione solo campo con suffisso
_xvw. Per ulteriori informazioni, consulta la pagina relativa a come evitare incoerenze tra le esplorazioni.
Modifica degli esempi
Questa sezione fornisce esempi di personalizzazioni comuni.
Mostrare un campo
La visualizzazione di base comprende tutte le dimensioni di una tabella sottostante. Quando la maggior parte delle dimensioni non deve essere visibile, viene utilizzato un perfezionamento per nascondere tutti i campi per impostazione predefinita. Questa operazione viene eseguita impostando la proprietà fields_hidden_by_default su "yes". Il sottoinsieme di campi pertinenti per le dashboard LookML incluse è stato mostrato. L'esempio seguente considera una visualizzazione di base denominata sales_orders con una dimensione denominata item_posnr.
view: sales_order {
sql_table_name: reporting.sales_order ;;
dimension: item_posnr {
type: string
sql: ${TABLE}.Item_POSNR
}
}
Il perfezionamento di questa visualizzazione è definito nel file con suffisso _rfn. Il perfezionamento imposta la proprietà della visualizzazione fields_hidden_by_default su "yes", il che significa che tutti i campi sono inizialmente nascosti. Per mostrare il campo item_posnr nella visualizzazione, imposta la proprietà hidden su "no".
view: +sales_order {
fields_hidden_by_default: yes
dimension: item_posnr {
hidden: no
}
}
Modificare l'etichetta della visualizzazione dei parametri
Diversi Looker Blocks utilizzano un insieme condiviso di parametri definiti in un file autonomo. Ad esempio, il blocco Oracle EBS utilizza il file otc_common_parameters_xvw. Questa visualizzazione mostra l'etichetta "🔍 Filtri", definita come costante all'interno del file manifest.
Per modificare questa etichetta:
- Individua la costante
label_view_for_filtersnel file manifest. - Modifica il valore della costante con l'etichetta che hai scelto.
- Salva il file manifest.
La modifica verrà applicata automaticamente ovunque venga fatto riferimento alla costante
label_view_for_filters.
Manifest
constant: label_view_for_filters {
value: "My Filters"
}
In alternativa, vai alla visualizzazione otc_common_parameters_xvw e modifica la proprietà "label" con il valore scelto.
view: otc_common_parameters_xvw {
label: "My Filters"
}
Aggiungere una nuova misura
È possibile aggiungere nuove misure direttamente al perfezionamento pertinente. L'esempio seguente mostra una nuova misura aggiunta al perfezionamento degli ordini di vendita:
view: +sales_orders {
measure: customer_count {
type: count_distinct
sql: ${customer_id}
}
}
Aggiungere un secondo livello di perfezionamento
È possibile creare nuovi perfezionamenti basati su quelli esistenti. Considera il perfezionamento
di sales_orders nel file sales_orders_rfn.view, che crea la
misura average_sales, come mostrato nell'esempio seguente:
include: "/views/base/sales_orders"
view: +sales_orders {
measure: average_sales {
type: average
sql: ${order_value}
}
}
Per creare un secondo file di perfezionamento:
- Crea un nuovo file di perfezionamento: chiamalo
sales_orders_rfn2.view. - Includi il primo file di perfezionamento: in questo modo, tutte le definizioni
da
sales_orders_rfnverranno incorporate insales_orders_rfn2. - Modifica la proprietà dell'etichetta: modifica la proprietà
labeldiaverage_salesin "spesa media" o in qualsiasi altra etichetta scelta. Aggiungi una nuova dimensione: includi il codice per la nuova dimensione in il file
sales_orders_rfn2.view.include: "/views/core/sales_orders_rfn.view" view: +sales_orders { measure: average_sales { label: "Average Spend" } dimension: customer_name_with_id { type: string sql: CONCAT(${customer_id},' ',${customer_name}) } }Includi il secondo file di perfezionamento nell'esplorazione: in questo modo, tutte le definizioni e i miglioramenti di
sales_orders_rfn2verranno incorporati nell'esplorazione.include: "/views/core/sales_orders_rfn2.view" explore: sales_orders { }
Creare un nuovo livello di perfezionamento
Il perfezionamento di qualsiasi visualizzazione di base definita all'interno del Looker Block di Cortex Framework può essere sostituito se non soddisfa i requisiti specifici. Il file _rfn può essere modificato direttamente per rimuovere le definizioni di campi non necessarie o aggiungerne di nuove.
In alternativa, crea un nuovo file di perfezionamento:
- Crea un nuovo file di perfezionamento: chiamalo
sales_invoices_rfne salvalo. - Includi la visualizzazione di base: in questo modo, tutte le definizioni della
visualizzazione di base
sales_invoicesverranno incorporate insales_invoices_rfn. Aggiungi le personalizzazioni scelte: assicurati di definire anche una dimensione come chiave primaria.
include: "/views/base/sales_invoices.view" view: +sales_invoices { fields_hidden_by_default: yes dimension: invoice_id { hidden: no primary_key: yes value_format_name: id } dimension: business_unit_name { hidden: no sql: CONCAT(${business_unit_id}, ":",${TABLE}.BUSINESS_UNIT_NAME) ;; } }Includi il nuovo perfezionamento nell'esplorazione: utilizza il nuovo file nella proprietà
includeanziché il perfezionamento fornito nel Looker Block di Cortex Framework.include: "/views/my_customizations/sales_invoices_rfn.view" explore: sales_invoices { }
Modificare i filtri della dashboard LookML
L'insieme comune di filtri della dashboard utilizzato in più dashboard LookML è definito in una dashboard denominata con il suffisso _template ed esteso a ogni dashboard. Una volta estesi, gli oggetti filtro possono essere modificati in base alle esigenze di una dashboard specifica.
Modificare tutte le dashboard
Per modificare il tipo di filtro per tutte le dashboard, individua il file modello che definisce il filtro. Modifica il tipo ui_config e le proprietà di visualizzazione con le impostazioni scelte. Questa modifica verrà applicata a tutte le dashboard che estendono il modello. Di seguito è riportato un esempio di otc_template.dashboard:
- dashboard: otc_template
extension: required
filters:
- name: customer_country
title: "Sold to Customer: Country"
type: field_filter
default_value: ''
allow_multiple_values: true
required: false
ui_config:
type: dropdown_menu
display: popover
explore: countries_md
field: countries_md.country_name_landx
Modificare una dashboard specifica
Per modificare un filtro in una dashboard specifica, individua il file della dashboard e includi il nome del filtro insieme alle proprietà di selezione che richiedono la modifica. Questa modifica sarà limitata alla singola dashboard. Ad esempio, per modificare il titolo, il tipo di UI e la visualizzazione del filtro customer_country per otc_order_status.dashboard, nel file della dashboard verranno incluse solo queste proprietà. Le proprietà rimanenti verranno ereditate dal modello esteso.
- dashboard: otc_order_status
title: Order Status
extends: otc_template
filters:
- name: customer_country
title: "Customer Country"
ui_config:
type: dropdown_menu
display: inline
Per ulteriori informazioni sulla creazione e la modifica delle dashboard LookML, consulta la pagina relativa alla creazione di dashboard LookML.