Questa pagina si riferisce al parametro
sqlche fa parte di una tabella derivata.Puoi anche utilizzare
sqlcome parte di un campo, come descritto nella pagina della documentazione dedicata al parametrosql(per i campi).
Utilizzo
view: my_derived_table {
derived_table: {
sql:
SELECT *
FROM events
WHERE type NOT IN ('test', 'staff')
;;
...
}
}
|
Gerarchia
sql |
Valore predefinito
Nessuno
Accetta
Un blocco SQL
|
Definizione
sql consente di specificare l'SQL che verrà utilizzato per generare una tabella derivata. Puoi utilizzare qualsiasi query SQL valida nel parametro sql, a condizione che la query SQL sia scritta in SQL non elaborato e non faccia riferimento ai campi di Looker. Per una comprensione più completa delle tabelle derivate, consulta la pagina della documentazione Tabelle derivate in Looker.
Oltre a fare riferimento alle normali tabelle di database, puoi fare riferimento anche alle viste o alle tabelle derivate di LookML in sql. Per farlo, utilizza:
${view_or_derived_table_name.SQL_TABLE_NAME} AS view_or_derived_table_name
SQL_TABLE_NAME in questo riferimento è una stringa letterale, non devi sostituirla con nient'altro. Ad esempio, se vuoi fare riferimento a una tabella derivata denominata key_customer nella tabella derivata key_customer_order_facts, potresti avere qualcosa di simile:
view: key_customer_order_facts {
derived_table: {
sql:
SELECT
customer_id,
COUNT( * ) AS lifetime_orders
FROM
order
INNER JOIN
${key_customer.SQL_TABLE_NAME} AS key_customer
ON
order.customer_id = key_customer.id
GROUP BY 1
;;
}
}
Variabili Liquid con sql
Puoi anche utilizzare le variabili Liquid con il parametro sql. Le variabili Liquid consentono di accedere a dati come i valori di un campo, i dati sul campo e i filtri applicati al campo.
Le variabili Liquid date_start e date_end sono molto utili per i dialetti del database che partizionano i dati in più tabelle per data, ad esempio BigQuery. Per una spiegazione dettagliata, consulta la pagina Best practice per l'utilizzo di date_start e date_end con i filtri per data.
In particolare, le variabili Liquid _in_query, _is_selected e _is_filtered possono aggiungere funzionalità interessanti alle tabelle derivate. Restituiscono true o false a seconda che un campo o un filtro sia stato incluso in una query. Per utilizzare correttamente questi valori booleani, è necessario tenere conto di alcune complessità. Per ulteriori informazioni, consulta la pagina delle variabili Liquid.
Ad esempio, questa tabella derivata modifica la tabella del database su cui esegue query in base ai campi selezionati dall'utente:
view: dynamic_order_counts {
derived_table: {
sql:
SELECT
period, number_of_orders
FROM
{% if dates.reporting_date._in_query %}
daily_orders
{% elsif dates.reporting_week._in_query %}
weekly_orders
{% else %}
monthly_orders
{% endif %}
GROUP BY 1
;;
}
}
Esempi
Crea una tabella derivata customer_order_facts:
view: customer_order_facts {
derived_table: {
sql:
SELECT
customer_id,
COUNT( * ) AS lifetime_orders
FROM
order
GROUP BY 1
;;
}
}
Aspetti da considerare
Le tabelle a cui fa riferimento sql devono essere accessibili dalla connessione attuale
views che contengono una tabella derivata a cui fa riferimento un parametro explore o join, a cui a sua volta fa riferimento un modello. Il modello determina quale connessione al database viene utilizzata (consulta la pagina di documentazione del parametro connection). Le connessioni ai database sono definite nella sezione Amministrazione di Looker. Quando fai riferimento a una tabella nel parametro sql, la tabella deve essere accessibile all'interno della connessione associata.
Utilizza SQL non elaborato con sql, non i riferimenti ai campi di Looker
L'SQL che scrivi in un parametro sql di una tabella derivata deve essere SQL non elaborato, che fa riferimento alle colonne e alle tabelle sottostanti del database. Non deve fare riferimento ai nomi dei campi o delle visualizzazioni di Looker.
L'utilizzo di _filters['view_name.field_name'] in una tabella derivata richiede sql_quote
Quando definisci una tabella derivata basata su SQL, se utilizzi la variabile Liquid _filters['view_name.field_name'] in cui il valore viene visualizzato in SQL e il filtro restituisce un valore stringa, devi aggiungere virgolette singole intorno all'output. Puoi farlo includendo il filtro sql_quote Liquid.
In caso contrario, se non aggiungi la variabile Liquid con | sql_quote, riceverai il seguente avviso LookML:
Using "_filters[]" in Derived Table SQL without "sql_quote" is discouraged.
Per ulteriori informazioni, consulta la pagina della documentazione Riferimento alle variabili Liquid.