Nutzung
explore: explore_name {
sql_preamble: SQL STATEMENT ;;
}
|
Hierarchie
sql_preamble |
Standardwert
Keine
Akzeptiert
Einen SQL-Ausdruck
|
Definition
Mit dem Parameter sql_preamble wird eine SQL-Anweisung angegeben, die vor dem Ausführen von Abfragen in der Explore-Ansicht ausgeführt wird. Der primäre Anwendungsfall für sql_preamble ist das Erstellen benutzerdefinierter Funktionen (User-Defined Functions, UDFs) in Google BigQuery. In den meisten Datenbankdialekten können Sie UDFs direkt auf dem Datenbankserver installieren. Google BigQuery ist jedoch zustandslos. Daher bietet sql_preamble diese Funktion.
Liquid in sql_preamble verwenden
Der Parameter sql_preamble unterstützt Liquid und Nutzerattribute. Dadurch kann dynamisches SQL für Anwendungsfälle wie das Festlegen von Sitzungsvariablen, das Auswählen verschiedener Data Warehouses oder Datenbanken, das Implementieren der Partitionierung in BigQuery und das flexible Filtern von Daten durch direktere Interaktion mit der zugrunde liegenden Datenbank generiert werden.
Die folgenden Liquid-Nutzungsmuster werden im Parameter sql_preamble unterstützt:
_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
Die folgenden Liquid-Nutzungsmuster werden in sql_preamble nicht unterstützt:
valuerendered_valuefilterable_valuelinklinked_value_field._name
Beispiele
sql_preamble verwenden, um eine BigQuery-Reservierung anzugeben
Geben Sie eine Google BigQuery-Reservierung an, die für die Abfragen der Explore-Ansicht verwendet werden soll. Verwenden Sie dazu die BigQuery-SET @@reservation-SQL-Anweisung im sql_preamble-Parameter:
explore: orders {
sql_preamble:
SET @@reservation='projects/your-project/locations/your-location/reservations/your-reservation';
}
sql_preamble verwenden, um einen temporären Median hinzuzufügen
Erstellen Sie eine benutzerdefinierte Funktion (User-Defined Function, UDF) in Google BigQuery, die einen Median berechnet. Verwenden Sie dazu die Google BigQuery-Anweisung CREATE TEMP FUNCTION und fügen Sie die Medianfunktion in das Google BigQuery-SQL ein, bevor jede Abfrage in der Explore-Ansicht ausgeführt wird.
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 )
));
;;
}
Liquid in sql_preamble verwenden, um den Tabellennamen zu lokalisieren
Verwenden Sie Liquid in sql_preamble, um eine temporäre Tabelle zu erstellen, deren Name auf der vom Nutzer ausgewählten Sprache basiert. So kann ein einzelnes LookML-Modell an verschiedene interne Namenskonventionen angepasst werden:
explore: orders {
sql_preamble:
WITH {{ _localization['storage_table_name'] }} AS (select * from users);;
...
}
Anstelle eines fest codierten Namens wie mytable für die temporäre Tabelle wird die Liquid-Variable in diesem Code durch den tatsächlichen String ersetzt, der in der Datei mit den Gebietsschema-Strings für den Schlüssel storage_table_name definiert ist. Weitere Informationen finden Sie unter Gebietsschema in Liquid-Variablen verwenden.
Die Looker-Abfrage, die auf die Präambel folgt, verweist dann auf diese dynamisch benannte Tabelle. In der SQL-Abfrage wird beispielsweise FROM {{ _localization['storage_table_name'] }} verwendet.