Utilizzo
explore: explore_name {
sql_preamble: SQL STATEMENT ;;
}
|
Gerarchia
sql_preamble |
Valore predefinito
Nessuno
Accetta
Un'espressione SQL
|
Definizione
Il parametro sql_preamble specifica un'istruzione SQL che viene eseguita prima delle query in Esplora. L'utilizzo principale di sql_preamble è la creazione di funzioni definite dall'utente (UDF) su Google BigQuery. La maggior parte dei dialetti del database consente di installare le UDF direttamente sul server di database, ma Google BigQuery è stateless, quindi sql_preamble fornisce questa funzionalità.
Utilizzare Liquid in sql_preamble
Il parametro sql_preamble supporta Liquid e gli attributi utente, il che consente la generazione dinamica di SQL per casi d'uso come l'impostazione di variabili di sessione, la selezione di warehouse o database diversi, l'implementazione del pruning delle partizioni in BigQuery e il filtraggio flessibile dei dati interagendo più direttamente con il database sottostante.
Nel parametro sql_preamble sono supportati i seguenti pattern di utilizzo di Liquid:
_filters['view_name.field_name']{% date_start date_filter_name %}{% date_end date_filter_name %}{% condition filter_name %} sql_or_lookml_reference {% endcondition %}{% if %} sql_or_lookml_reference {% else %} other_value {% endif %}{% parameter parameter_name %}parameter_name._parameter_value_user_attributes['name_of_attribute']_localization['localization_key']_model._name_explore._name_explore._dashboard_url_query._query_timezoneview_name._in_queryview_name.field_name._in_queryview_name.field_name._is_selectedview_name.field_name._is_filtered_view._name
I seguenti pattern di utilizzo di Liquid non sono supportati in sql_preamble:
valuerendered_valuefilterable_valuelinklinked_value_field._name
Esempi
Utilizzo di sql_preamble per specificare una prenotazione BigQuery
Specifica una prenotazione Google BigQuery da utilizzare per le query di Esplora utilizzando l'istruzione SQL SET @@reservation nel parametro sql_preamble:
explore: orders {
sql_preamble:
SET @@reservation='projects/your-project/locations/your-location/reservations/your-reservation';
}
Utilizzare sql_preamble per aggiungere una mediana temporanea
Crea una funzione definita dall'utente (UDF) su Google BigQuery che calcola una mediana utilizzando l'istruzione CREATE TEMP FUNCTION di Google BigQuery e inserisce la funzione mediana nel codice SQL di Google BigQuery prima dell'esecuzione di ogni query in Esplora.
explore: salary {
sql_preamble:
CREATE TEMP FUNCTION MEDIAN(a_num ARRAY<FLOAT64>)
RETURNS FLOAT64 AS ((
SELECT
AVG(num)
FROM (
SELECT
row_number() OVER (ORDER BY num) -1 as rn
, num
FROM UNNEST(a_num) num
)
WHERE
rn = TRUNC(ARRAY_LENGTH(a_num)/2)
OR (
MOD(ARRAY_LENGTH(a_num), 2) = 0 AND
rn = TRUNC(ARRAY_LENGTH(a_num)/2)-1 )
));
;;
}
Utilizzo di Liquid in sql_preamble per localizzare il nome della tabella
Utilizza Liquid in sql_preamble per creare una tabella temporanea denominata in base alla lingua selezionata dall'utente, in modo che un singolo modello LookML possa adattarsi a diverse convenzioni di denominazione interne:
explore: orders {
sql_preamble:
WITH {{ _localization['storage_table_name'] }} AS (select * from users);;
...
}
Anziché utilizzare un nome hardcoded come mytable per la tabella temporanea, questo codice sostituirà la variabile Liquid con la stringa effettiva definita nel file di stringhe di localizzazione per la chiave storage_table_name. Per ulteriori informazioni, consulta la sezione Utilizzo delle impostazioni internazionali nelle variabili Liquid.
La query Looker che segue il preambolo farebbe quindi riferimento a questa tabella con nome dinamico. Ad esempio, la query SQL utilizzerebbe FROM {{ _localization['storage_table_name'] }}.