Nutzung
explore: explore_name {
sql_preamble: SQL STATEMENT ;;
}
|
Hierarchie
sql_preamble |
Standardwert
Keine
Akzeptiert
Ein SQL-Ausdruck
|
Definition
Mit dem Parameter sql_preamble wird eine SQL-Anweisung angegeben, die vor der Ausführung von Abfragen im Explore ausgeführt wird. sql_preamble wird hauptsächlich zum Erstellen benutzerdefinierter Funktionen (User-Defined Functions, UDFs) in Google BigQuery verwendet. 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. So lässt sich dynamisches SQL für Anwendungsfälle wie das Festlegen von Sitzungsvariablen, das Auswählen verschiedener Data Warehouses oder Datenbanken, das Implementieren von Partition Pruning in BigQuery und das flexible Filtern von Daten durch direktere Interaktion mit der zugrunde liegenden Datenbank generieren.
Die folgenden Liquid-Anwendungsmuster 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 zum Angeben einer BigQuery-Reservierung verwenden
Geben Sie eine Google BigQuery-Reservierung an, die für die Abfragen des Explores verwendet werden soll. Verwenden Sie dazu die BigQuery-SQL-Anweisung SET @@reservation im Parameter sql_preamble:
explore: orders {
sql_preamble:
SET @@reservation='projects/your-project/locations/your-location/reservations/your-reservation';
}
Mit sql_preamble einen temporären Median hinzufügen
Erstellen Sie eine benutzerdefinierte Funktion (User-Defined Function, UDF) in Google BigQuery, die einen Median mithilfe der CREATE TEMP FUNCTION-Anweisung von Google BigQuery berechnet und die Medianfunktion in den Google BigQuery-SQL-Code einfügt, bevor jede Abfrage im Explore 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, die nach der vom Nutzer ausgewählten Sprache benannt wird. 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 in diesem Code die Liquid-Variable durch den tatsächlichen String ersetzt, der in der Datei mit lokalisierten Strings für den Schlüssel storage_table_name definiert ist. Weitere Informationen finden Sie unter Gebietsschema in Liquid-Variablen verwenden.
In der Looker-Abfrage, die auf die Präambel folgt, wird dann auf diese dynamisch benannte Tabelle verwiesen. In der SQL-Abfrage würde beispielsweise FROM {{ _localization['storage_table_name'] }} verwendet.