Questa pagina si riferisce al parametro
explore_source, che è un sottoparametro diderived_table.
explore_sourcepuò anche essere un sottoparametro ditest, descritto nella pagina della documentazione del parametrotest.
Utilizzo
derived_table: customer_order_facts {
explore_source: orders {
column: customer_id {
field: orders.customer_id
}
column: order_amount {
field: orders.sale_price
}
column: item_qty {
field: orders.number_items
}
derived_column: average_item_price {
sql: order_amount / item_qty ;;
}
timezone: "America/Los_Angeles"
}
}
|
Gerarchia
explore_source |
Valore predefinito
Nessuno
Accetta
L'identificatore dell'esplorazione da cui viene derivata la tabella derivata nativa, più i parametri secondari che definiscono la tabella derivata nativa.
|
Definizione
Esistono due modi per creare una tabella derivata, che puoi utilizzare come se fosse una normale tabella nel database: le tabelle derivate native, definite utilizzando i parametri LookML, e le tabelle derivate basate su SQL, definite utilizzando le istruzioni di query SQL.
Il parametro explore_source viene utilizzato per le tabelle derivate native. In questo parametro definisci le colonne da includere in una tabella derivata nativa, gli eventuali filtri da applicare alla tabella derivata nativa, se limitare o ordinare le righe della tabella derivata nativa e se convertire i campi basati sul tempo della tabella derivata nativa in un fuso orario diverso.
Definizione di una tabella derivata nativa
Puoi utilizzare una serie di parametri in una tabella derivata nativa, molti dei quali sono facoltativi. La sintassi per definire una tabella derivata nativa è la seguente:
explore_source: identifier {
bind_all_filters: yes
column: identifier {
field: field_name
}
derived_column: identifier {
sql: SQL expression ;;
}
expression_custom_filter: [custom filter expression]
filters: [field_name_1: "string", field_name_2: "string", ...]
limit: number
sorts: [field_name_1: asc | desc, field_name_2: asc | desc, ...]
timezone: "string"
}
La seguente tabella fornisce informazioni su ciascun parametro che puoi utilizzare per definire una tabella derivata nativa:
| Nome parametro | Descrizione | Esempio |
|---|---|---|
bind_filters | Passa un filtro dalla query di esplorazione alla sottoquery della tabella derivata nativa. Per configurare questo parametro, utilizza il parametro secondario from_field per specificare un campo definito nella visualizzazione della tabella derivata nativa o accessibile nell'esplorazione a cui è unita la tabella derivata nativa. In fase di runtime, tutti i filtri applicati a from_field nell'esplorazione verranno passati a to_field nella sottoquery della tabella derivata nativa. Per un esempio, consulta la sezione Utilizzo di bind_filters.
Con bind_filters, tieni presente quanto segue:
explore_source può avere il sottoparametro bind_all_filters o il sottoparametro bind_filters, ma non entrambi.
|
bind_filters: {
to_field: users.created_date
from_field: user_dt.filter_date
} |
bind_all_filters |
Passa tutti i filtri della query di esplorazione nella sottoquery della tabella derivata nativa. Per configurare questo parametro, specifica bind_all_filters: yes in explore_source della tabella derivata nativa. Per un esempio, consulta la sezione Utilizzo di bind_filters.
Con bind_all_filters: yes, tieni presente quanto segue:
|
bind_all_filters: yes |
column |
Specifica una colonna da includere in explore_source. Ha un sottoparametro field. |
column: cust_id {
field: orders.customer_id
} |
derived_column |
Specifica una colonna in explore_source con un'espressione nello spazio dei nomi delle colonne interne. Le espressioni SQL aggregate non funzionano qui, poiché in questo passaggio non è presente alcun raggruppamento SQL. Le funzioni finestra SQL possono essere molto utili in questo parametro. Ha un sottoparametro sql. |
derived_column: average_order {
sql: order_amount / item_qty ;;
} |
dev_filters |
Aggiunto nella versione 21.12
Specifica i filtri che Looker applica solo alle versioni di sviluppo della tabella derivata. È utile per gli sviluppatori LookML quando testano le tabelle derivate in modalità di sviluppo. Il parametro dev_filters consente a Looker di creare versioni più piccole e filtrate della tabella in modo che uno sviluppatore LookML possa iterare e testare la tabella senza attendere la creazione della tabella completa dopo ogni modifica. Looker applica dev_filters solo alle versioni di sviluppo della tabella derivata, non alla versione di produzione della tabella su cui vengono eseguite query dagli utenti. Per saperne di più sull'utilizzo delle tabelle derivate in modalità di sviluppo, consulta la pagina della documentazione Tabelle derivate in Looker e la sezione Creazione di filtri per la modalità di sviluppo in questa pagina per un esempio. |
dev_filters: [orders.created_date: "90 days", orders.products: "sweaters"] |
expression_custom_filter |
Specifica facoltativamente un'espressione di filtro personalizzato in una query explore_source. |
expression_custom_filter: ${orders.status} = "pending" ;; |
filters |
Aggiunge facoltativamente un filtro a una query explore_source. Racchiudi tra parentesi quadre; includi il nome del campo da filtrare, utilizzando il formato view_name.field_name, seguito da : e dal valore o dai valori in base ai quali filtrare il campo. I filtri vengono aggiunti alla clausola WHERE dell'SQL generato dalla tabella derivata nativa. |
filters: [products.department: "sweaters"] |
limit |
Specifica facoltativamente il limite di righe della query. | limit: 10 |
sorts |
(Facoltativo) Specifica un ordinamento per questo explore_source. Racchiudi tra parentesi quadre; includi il nome del campo da ordinare, utilizzando il formato view_name.field_name, seguito da : e asc o desc per indicare se il campo deve essere ordinato in ordine crescente o decrescente. Puoi ordinare in base a più campi aggiungendo più coppie di nomi di campi e parole chiave separate da virgole. |
sorts: [products.brand: asc, products.name: asc] |
timezone |
Imposta il fuso orario per la query explore_source. Per le tabelle derivate non persistenti, imposta il fuso orario su "query_timezone" per utilizzare automaticamente il fuso orario della query attualmente in esecuzione. Se non viene specificato un fuso orario, la query explore_source non esegue alcuna conversione del fuso orario, ma utilizza il fuso orario del database. Per un elenco dei fusi orari supportati, consulta la pagina dei valori timezone. L'IDE suggerisce automaticamente il valore del fuso orario quando digiti il parametro timezone nell'IDE. L'IDE mostra anche l'elenco dei valori dei fusi orari supportati nel riquadro Guida rapida. |
timezone: "America/Los_Angeles" |
Esempi
Le seguenti definizioni forniscono esempi di base di tabelle derivate native.
Crea una tabella derivata nativa user_order_facts:
view: user_order_facts {
derived_table: {
explore_source: order_items {
column: user_id {
field: order_items.user_id
}
column: lifetime_number_of_orders {
field: order_items.order_count
}
column: lifetime_customer_value {
field: order_items.total_revenue
}
}
}
# Define the view's fields as desired
dimension: user_id {
hidden: yes
}
dimension: lifetime_number_of_orders {
type: number
}
dimension: lifetime_customer_value {
type: number
}
}
Puoi aggiungere filtri per creare una user_90_day_facts tabella derivata nativa:
view: user_90_day_facts {
derived_table: {
explore_source: order_items {
column: user_id {
field: order_items.user_id
}
column: number_of_orders_90_day {
field: order_items.order_count
}
column: customer_value_90_day {
field: order_items.total_revenue
}
filters: [order_items.created_date: "90 days"]
}
}
# Add define view's fields as desired
dimension: user_id {
hidden: yes
}
dimension: number_of_orders_90_day {
type: number
}
dimension: customer_value_90_day {
type: number
}
}
Creare filtri per la modalità di sviluppo
Esistono situazioni in cui la tabella derivata nativa che stai creando richiede molto tempo per essere generata, il che può richiedere molto tempo se stai testando molte modifiche in modalità di sviluppo. In questi casi, puoi utilizzare dev_filters per creare versioni di sviluppo più piccole di una tabella derivata nativa:
view: e_faa_pdt {
derived_table: {
...
datagroup_trigger: e_faa_shared_datagroup
explore_source: flights {
dev_filters: [flights.event_date: "90 days"]
filters: [flights.event_date: "2 years", flights.airport_name: "Yucca Valley Airport"]
column: id {}
column: airport_name {}
column: event_date {}
}
}
...
}
Questo esempio include un parametro dev_filters che filtra i dati in base agli ultimi 90 giorni e un parametro filters che filtra i dati in base agli ultimi due anni e all'aeroporto di Yucca Valley. Il parametro dev_filters agisce in combinazione con il parametro filters in modo che tutti i filtri vengano applicati alla versione di sviluppo della tabella. Se sia dev_filters che filters specificano filtri per la stessa colonna, dev_filters ha la precedenza per la versione di sviluppo della tabella. In questo esempio, la versione di sviluppo della tabella filtrerà i dati degli ultimi 90 giorni per l'aeroporto di Yucca Valley.
Se una tabella derivata nativa ha il parametro
Tieni presente che vale anche la situazione inversa: se hai una tabella derivata nativa con il parametrodev_filters, la tabella di sviluppo non può essere utilizzata come versione di produzione, poiché la versione di sviluppo ha un set di dati abbreviato. In questo caso, dopo aver terminato lo sviluppo della tabella e prima di eseguire il deployment delle modifiche, puoi impostare come commento il parametrodev_filterse quindi eseguire una query sulla tabella in modalità di sviluppo. Looker creerà quindi una versione completa della tabella che potrà essere utilizzata per la produzione quando esegui il deployment delle modifiche. Per ulteriori dettagli sull'utilizzo delle tabelle di sviluppo in produzione, consulta la pagina della documentazione Tabelle derivate in Looker.dev_filterse la esegui in modalità di sviluppo, Looker può utilizzare la tabella di produzione per rispondere alla query in modalità di sviluppo. Questa affermazione è vera, a meno che tu non modifiche la definizione della tabella e poi esegui una query sulla tabella in modalità di sviluppo, nel qual caso Looker creerà una tabella di sviluppo per rispondere alla query.
Trasferire i filtri in una tabella derivata nativa
Quando includi una tabella derivata nativa in un'esplorazione, puoi prendere i filtri di runtime dall'esplorazione e applicarli alla query della tabella derivata nativa. Per farlo, aggiungi il parametro bind_all_filters o bind_filters a explore_source della tabella derivata nativa.
Quando passi filtri di runtime da un'esplorazione a una sottoquery di una tabella derivata nativa, il filtro di runtime deve trovarsi in una vista unita alla stessa esplorazione della tabella derivata nativa. Inoltre, poiché la tabella derivata nativa deve essere rigenerata in fase di runtime per incorporare i filtri di runtime dell'esplorazione, non può essere una tabella derivata permanente (PDT).
Uso: bind_all_filters
Il modo più semplice per passare i filtri da un'esplorazione a una sottoquery di una tabella derivata nativa è specificare bind_all_filters: yes nel parametro explore_source della tabella derivata nativa. In questo modo, tutti i filtri di runtime di un'esplorazione verranno passati nella sottoquery della tabella derivata nativa.
Una tabella derivata nativa con bind_all_filters: yes deve essere unita alla stessa esplorazione specificata nel parametro explore_source della tabella derivata nativa. Se vuoi utilizzare la tabella derivata nativa in un'esplorazione diversa, utilizza il parametro bind_filters, come descritto nella sezione Utilizzo di bind_filters.
Ecco il codice LookML per una tabella derivata nativa con bind_all_filters: yes:
view: top_10_simple_item_names {
view_label: "Top 10s"
derived_table: {
explore_source: order_items {
column: total_sale_price {
field: order_items.total_sale_price
}
column: item_name {
field: products.item_name
}
derived_column: rank {
sql: RANK() OVER (ORDER BY total_sale_price DESC) ;;
}
bind_all_filters: yes
sorts: [order_items.total_sale_price: desc]
timezone: "query_timezone"
limit: 10
}
}
dimension: item_name {
group_label: "Simple Example"
}
dimension: rank {
type: number
group_label: "Simple Example"
}
dimension: item_name_ranked {
group_label: "Simple Example"
order_by_field: rank
type: string
sql: ${rank} || ') ' || ${item_name} ;;
}
}
Nella visualizzazione della tabella derivata nativa, explore_source è order_items. Di seguito è riportato il codice LookML per l'esplorazione order_items in cui la tabella derivata nativa viene unita all'esplorazione:
explore: order_items {
...
join: top_10_simple_item_names {
type: inner
relationship: many_to_one
sql_on: ${products.item_name} = ${top_10_simple_item_names.item_name} ;;
}
}
Per vedere questo esempio in azione, consulta il post della community [Analytic Block] – Pivot by Top X – Introducing bind_all_filters: yes.
Uso: bind_filters
Il parametro secondario bind_filters di explore_source passa un filtro specifico dalla query Esplora alla sottoquery della tabella derivata nativa:
to_fieldè il campo della tabella derivata nativa a cui viene applicato il filtro.to_fielddeve essere un campo delexplore_sourcesottostante.from_fieldspecifica il campo dell'Explore da cui ottenere il filtro, se l'utente specifica un filtro in fase di runtime.
In fase di runtime, tutti i filtri applicati a from_field nell'esplorazione verranno passati a to_field nella sottoquery della tabella derivata nativa.
Il seguente codice LookML mostra una tabella derivata nativa con bind_filters. Con questa configurazione, Looker prenderà qualsiasi filtro applicato al campo filtered_lookml_dt.filter_date nell'esplorazione e lo applicherà al campo users.created_date nella tabella derivata nativa.
derived_table: {
explore_source: order_items {
bind_filters: {
to_field: users.created_date
from_field: filtered_lookml_dt.filter_date
. . .
}
}
}
Aspetti da considerare
Utilizza un solo parametro explore_source
Ogni tabella derivata nativa accetta un solo parametro explore_source. I parametri explore_source successivi non genereranno errori di convalida LookML, ma sostituiranno i parametri explore_source precedenti.
Per creare colonne dai campi in visualizzazioni diverse, unisci prima le diverse visualizzazioni nella stessa esplorazione. Poi utilizza Esplora per explore_source.
Utilizzare le istruzioni include per attivare i campi di riferimento
Quando crei una tabella derivata nativa, devi includere il file contenente la definizione dell'esplorazione. Il modo migliore per farlo è definire l'esplorazione in un file di esplorazione separato, come descritto nella documentazione relativa alla creazione di file di esplorazione.
Se crei un file Esplora separato:
- Il file di visualizzazione della tabella derivata nativa deve includere il file di Esplora. Ad esempio:
-
include: "/explores/order_items.explore.lkml"
-
- Il file di Esplora deve includere i file di visualizzazione necessari. Ad esempio:
-
include: "/views/order_items.view.lkml" -
include: "/views/users.view.lkml"
-
- Il modello deve includere il file dell'esplorazione. Ad esempio:
-
include: "/explores/order_items.explore.lkml"
-